• ベストアンサー

DataBaseの主キーについて

 今晩は、現在Databaseを勉強中です。  DataBaseの正規化について質問致します。  第2正規化、第3正規化のあとは、全てのキー列が主キーに対して完全従属、そして推移的関数従属でない表が出来ているはず なのですが、これを考えると、第3正規化後も何故主キーが2つ以上になることがあるのでしょうか。  あるフィールド(主キーの列)に対して他の列は完全従属で且つ、推移的従属であれば、主キーは1個しかないと考えられるのですが、 これについての疑問を色々と調べてみましたが納得のいく参考書等も見当たりません。    この内容について詳しい方がおられましたら是非教えて下さい、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

>そもそもあるレコードはある一つ(のフィールド)の主キーで特定されるべき >そもそもあるレコードの特定は一つのフィルドで可能というのが基本 私はそうは思いませんが。 そのように解説している資料があれば教えていただけると私にとっても勉強になります。 私の記憶になんとなく残っているのは,   http://ja.wikipedia.org/wiki/主キー の「4 人工キーと自然キー」に記述されているような,どんな場合でも一意の人工キー項目を設けるべき,という立場があるということは以前,人づてに耳にしたことがあります。

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

私も「主キー=ひとつの列」と誤解しているのかなと感じました。   http://ja.wikipedia.org/wiki/リレーションの正規化 の「2.2 第2正規形」に載っている例で説明すると, >{会社コード, 代表者氏名, 従業員番号, 従業員氏名} という >リレーション(従業員番号は会社内でのみ一意性が保証されている) における主キーは{会社コード, 従業員番号}という複合キーです。そこから,   主キー{会社コード}に対して{代表者氏名}が従属する という部分(関数)従属(性)を別表に分離するのが完全(関数)従属(性)の過程ですから,「主キー=ひとつの列」という誤解があるということは,第2正規形の理解もアヤシイということになります。

htgo
質問者

お礼

 そもそもあるレコードはある一つの主キーで特定されるべきではないのですか。  もし第3正規形でそれが不可能であれば、第?正規形かであれば可能になるのかという疑問です。  そもそもあるレコードの特定は一つのフィルドで可能というのが基本ではないのですか。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

もしかして「主キー=ひとつの列」と解釈されてます? 「顧客コード+取引年月日」のような複合キーでも主キーになり得るのでは?

関連するQ&A