データベース
次のERモデルを関係スキーマに変換したとき、正しい変換結果はどれか。 エンティティ: 顧客(顧客ID, 氏名)、注文(注文ID, 注文日) リレーションシップ: 顧客は複数の注文を行う(1対多)
ア.顧客(顧客ID, 氏名)、注文(注文ID, 注文日)の2テーブルのみ。顧客IDは注文テーブルに入れない
イ.顧客(顧客ID, 氏名, 注文ID)、注文(注文ID, 注文日)の2テーブル。顧客テーブルに注文IDを追加
ウ.顧客(顧客ID, 氏名)、注文(注文ID, 注文日)、顧客注文(顧客ID, 注文ID)の3テーブルで結合テーブルを作成
エ.顧客(顧客ID, 氏名)、注文(注文ID, 注文日, 顧客ID)の2テーブル。注文テーブルに外部キーとして顧客IDを追加正解
解説
1対多の変換ルールは「多の側」に外部キーを置く!注文が多(一人の顧客が複数の注文)なので、注文テーブルに顧客IDを外部キーとして持たせる。
なぜ エ が正解か
1対多のER変換: 「1の側」のプライマリキーを「多の側」テーブルに外部キーとして追加する。顧客(1側)の顧客IDを注文(多側)に追加 → 注文(注文ID, 注文日, 顧客ID)。これで1つの顧客に複数の注文が紐づく構造を表現できる。
出典: AI生成問題(学習用)
← 前の問題
次のSQL文において、CASE式とNULL処理の結果として正しいものはどれか。 SELECT CASE WHEN score IS NULL THEN '未受験' WHEN score >= 60 THEN '合格' ELSE '不合格' END AS 判定 FROM 成績 WHERE 受験者ID = 1; 受験者ID=1のscoreがNULLである場合の判定の値はどれか。
次の問題 →
次のテーブル「受注(受注ID, 顧客ID, 商品ID, 担当者ID, 担当者部門)」において、次の関数従属が成立している。 受注ID → 顧客ID, 商品ID, 担当者ID 担当者ID → 担当者部門 このテーブルが第3正規形(3NF)の条件を満たしていない理由として正しいものはどれか。