34. リレーショナルデータベース理論“再考”
• One Fact In One Place
• Codd's 12 Rules (1985)
Rule 2: Guaranteed Access Rule
All data should be accessible without ambiguity.
This can be accomplished through a combination of
the table name, primary key, and column name.
ルール2: アクセス保証のルール
すべてのデータは曖昧さなしにアクセス可能でなけれ
ばならない。
これは、テーブル名、主キーおよびカラム名を組み合
わせることによって達成される。
Edgar Frank "Ted" Codd
1923.8.23 – 2003.4.18
36. 何を主キーとすべきか?
何を主キーとすべきか?
社員
* 社員NO
社員ID VARCHAR2(15)
NUMBER(5,0) 社員No.
社員No.
社員氏名 VARCHAR2(30)
社員NO VARCHAR2(15)
入社年月日 DATE
社員氏名 VARCHAR2(30) 「F980012」⇒「199804012F」
F980012」 199804012F」
入社年月日 DATE
主キーから値の大小以外の意味を
できるだけ排除する
保有特技
保有特技 扶養家族
扶養家族
* * 社員ID ((F K) V A R CH A R 5,0)
社員N O F K) N U MB ER ( 2( 15) * 社員ID ( F K) FN U MB ER ( 5,0) 2( 15)
* 社員N O ( K) V A R CH A R
* * 連番
連番 NUMBER(2,0)
NUMBER(2,0) * 続柄
* 続柄 VARCHAR2(10)
VARCHAR2(10)
特技名
特技名 VARCHAR2(30)
VARCHAR2(30) 氏名 氏名 VARCHAR2(30)
VARCHAR2(30)
経験年数
経験年数 NUMBER(2,0)
NUMBER(2,0)
37. 何を主キーとすべきか?
何を主キーとすべきか?
社員
* 社員ID NUMBER(5,0)
社員NO VARCHAR2(15)
社員氏名 VARCHAR2(30)
入社年月日 DATE
主キーはなるべく単一列に定義し
複合キーとしない
保有特技 扶養家族
* 保有特技ID NUMBER(5,0) * 扶養家族ID NUMBER(5,0)
* 社員ID ( F K) N U MB E R ( 5,0) * 社員ID ( F K) N U MB E R ( 5,0)
* 連番 NUMBER(2,0) * 続柄 VARCHAR2(10)
特技名 VARCHAR2(30) 氏名 VARCHAR2(30)
経験年数 NUMBER(2,0)