8/10 ボイスコッド正規形
前の記事↓
本日はボイスコッド正規形についてまとめる。
◆用語の整理
完全関数従属
Xの値を指定したときにYの値が1つに特定できる関係
例:会員IDを指定すると会員の氏名が特定できる。
推移的関数従属
下記の条件に合う場合、ZはXに推移的関数従属している
①YはXの完全関数従属
②ZはYの完全関数従属
③XはYに完全関数従属しない。
例:①会員IDを指定すると会員氏名が特定できる。②会員氏名を指定すると電話番号が指定できる③会員IDは会員氏名によって特定されない。
第3正規形
下記2条件
①第2正規形である
②あらゆる非キー項目が候補キーと推移的関数従属でない。
参照サイト
[SQL] 16. データベースの設計 2 | TECHSCORE(テックスコア)
データベースエンジニアへの道(3):素早く正規形を見抜く実践テクニック (3/4) - @IT
ボイスコッド正規形とは
すべての列が主キーと完全関数従属であるテーブル構成
第3正規形と異なる点
すべてのテーブルが主キーと完全関数従属している。
第3正規系は非キー属性に完全関数従属している候補キーについて
分解していない。
ボイスコッド正規化の注意点
- 結合操作で元に戻せるように分解する
8/9 RDBMSテーブルの正規化について
経緯
ある企業の面接において下記のような質問を受けて
上手な回答をすることができなかったのでまとめてみました。
「データベースの正規化について簡単に説明してください」
「正規化によるメリットとデメリットをそれぞれ説明してください」
面接では「テーブル構造の重複をなくし整理する。。」みたいな
結構あいまいな回答をしてしまい非常に後悔しました。
参照サイト
第4回 データベースの正規化|OSS-DB入門|OSS-DB道場|受験対策|DBスペシャリストを認定する資格 OSS-DB技術者認定試験
できるエンジニアになる! ちょい上DB術・基礎編(7):【DB概論】正規化の手順 (1/2) - @IT
わかったこと
第3正規形までは何とか説明できるようになった。
第1正規形
繰り返し項目をそれぞれ別項目に独立させる
非正規系は帳票の状態でそれを表にするのが第1正規化。
(例)
キャンペーンエントリー履歴一覧画面
第2正規形
複合主キーとなる項目の一部に完全従属する項目を別テーブルに分離させる。
分解したテーブルに外部ーを加える。
(例)
「キャンペーンエントリー履歴」の主キーは
キャンペーンIDと会員IDとすると、それぞれ別テーブルに分離させて
キャンペーンエントリー履歴テーブルには外部キー、エントリー時間のみが残る。
第3正規形
すべての複合主キー以外の項目で関係従属関係にある項目を別テーブルに分離させる
(例)
キャンペーンテーブルには「所属会社」、「住所」が含まれているが
「広告主」が決まれば「住所」も確定するので別テーブルに分離。
これから勉強すること
ボイスコッド正規化
第4正規形
第5正規系
Placehold モック作成時のダミー画像、デフォルト画像作成なら
デザインパターンを勉強する
デザインパターンの学習をする。
有能なエンジニアになりたい!とか言いながら
実際に優秀なエンジニアにお会いしていろいろ気が付いた
- エンジニアは個人での情報発信が当たり前(git-hub, ブログ)
- 基本的な知識が圧倒的に足りない
転職の面接においても基本的な知識を問う質問に対して
知識としての回答をすることができずイメージで回答してしまった。
親切にも面接を担当いただいたエンジニアの方に
「デザインパターンをまずしっかり勉強すれば
どの言語、どの環境でも役に立つ」
という金言をいただいたので、デザインパターンの勉強を行おうと思う。
そもそもデザインパターンとは
オブジェクト指向のコーディングにおいてよくある23パターンをまとめたものを
デザインパターンを知っているとパターンに当てはめながら
設計やコーディングを行える(らしいです)。
Java言語で学ぶデザインパターン入門
2017年8月1日~