http://www.techscore.com/tech/sql/16_02.html
のURLの下の方の表
受注番号、商品番号、納入業者
12345 001 業者 A
12345 002 業者 B
12346 001 業者 A
12347 001 業者 D
において、
****以下引用****
このとき、非主キー列「納入業者」は「受注番号」と「商品番号」から決まりますので、(受注番号、商品番号) →納入業者は関数従属の関係が成立しています。よって、このテーブルは第二正規形の条件を満たしていると言えます。(中略)
****引用終わり****
とありますが、私には
商品番号→納入業者
という関数従属関係があるきがするのですが違うのでしょうか?なので第二正規形の時点で、
(商品番号、納入業者)という表が新たに分離される気がするのですが…
さらに、
http://www.st.rim.or.jp/~ryoma/tips/seikika.htm
のURLの同じくボイスコッド正規形で扱われ表、
商品コード、仕入先コード、担当者コード
000120001 111 401
000120001 112 402
000120002 111 401
000120002 150 403
仕入先コード、仕入先名
001 東京商店
002 大阪商会
003 名古屋流通
で、
*引用*
商品コード、仕入先コード、担当者コードを属性とする上の表は、繰り返し部分を持たず、また商品コード+仕入先コード、あるいは商品コード+担当者コードをキーとすることができ、かつ推移従属の関係が存在しないため、第三正規形です。
*終*
とありますが、主キーを【商品コード、仕入先コード】と決めたとき、非候補キーである担当者コードは仕入先コードに関数従属している気が(私は)してしまうので第二正規形へ変形した時点で(仕入先コード、担当者コード)という表が分離されていると思うのですが。
以上の解釈で間違っている考えがあればご指摘ください。
No.1ベストアンサー
- 回答日時:
最初の第二正規形の問題ですが、商品番号001の商品は、業者Aの場合(受注番号12345,12346)と業者D(受注番号12347)の場合が有るようですので、納入業者は商品番号のみでは特定できず、主キーである受注番号と商品番号の組合せによってのみ特定される(主キーに完全関数従属している)様です。
したがって、第二正規形の条件は満たしているかと。
2つ目のボイス・コッド正規形の問題ですが、
> 主キーを【商品コード、仕入先コード】と決めたとき、非候補キーである担当者コードは・・・
主キーを決定しても、他の候補キーが候補キーでなくなる訳ではないので、{ 商品コード, 担当者コード }も主キーでなくとも候補キーではある訳です。
したがって、第二正規形で、【仕入先コード、担当者コード】という表が分離されている必要は有りません。
それから、【商品コード、仕入先コード、担当者コード】の表には、下記の2つの関数従属性が含まれていますが、一つ目の関数従属性は全ての項目に関係していますので、表を分割すると、この情報は失われることになります。
{商品コード, 担当者コード} → 仕入先コード
仕入先コード → 担当者コード
この様にボイス・コッド正規形では、関数従属性が保存されない場合があります。
ありがとうございます。
1つ目についてなのですが、言われて見ればそうですね。ご指摘ありがとうございます。
2つ目については「主キー」を決めてしまえばその他のキーは自動的に非候補キーになると勘違いしていました^^;主キーと候補キーは違うのですね、一緒に考えていたのが原因でした。詳しいご解説ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
沿線コード
-
ACCESSで大量の更新を行うと「...
-
【SQL】existsでの商演算
-
実績累計の求め方と意味を教え...
-
Accessで別テーブルの値をフォ...
-
MERGE文を単体テーブルに対して...
-
[VBA] ADOの Clone と AddNew
-
サブレンジ分割されたNDB(富士...
-
sqlplusの処理が途中でとまる
-
【至急】Accessでの大量データ...
-
unionの結果は集計はできないで...
-
SET句内で複数の条件を指定して...
-
アクセスでレポートの1印刷内...
-
ちなみになぜv=(v・e1)e1+(v・e...
-
"カレントレコードがありません...
-
ACCESSでテーブルのMAX値(文字...
-
空白文字とスペースの検索
-
VB6.0のIsNull関数に相当するもの
-
DataGridViewの内容をDBに反映...
-
データセットのレコード更新が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access終了時の最適化が失敗?
-
CREATE テーブルでの複数外部...
-
Order by句でバインド変数を使...
-
沿線コード
-
平成20年 春期 基本情報技術者 ...
-
10営業日前の日付を取得したい...
-
SQLについて
-
困っています。ORACLE_SQL 複数...
-
SQLServer 日付が直前のレコー...
-
SQL文の書き方
-
複数テーブル間の集計
-
【SQL】またぎデータの検索の仕方
-
SQLで<>を使用するとき、
-
Excelファイルのデータをテーブ...
-
Access2000での複合検索再び
-
Oracle 文字コードについて
-
Oracleビュー:同じ意味で異な...
-
一度のSQL発行で結果を得るには...
-
SQLの題材
-
PLSQLは実際にどんな処理をする...
おすすめ情報