関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。
新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。
ここで,下線のうち実線は主キーを,破線は外部キーを表す。
“口座”表の列:口座番号(主キー),口座種別,残高,顧客番号(外部キー)
“顧客”表の列:顧客番号(主キー),顧客名
“取引明細”表の列:取引番号(主キー),取引日時,取引種別,取引金額,口座番号(外部キー)
正答2
解説
正解は2です。
外部キーは、参照先の表の主キーに存在する値しか登録できません。
そのため、参照される側の表から順にデータを追加する必要があります。
【計算】
“口座”表の顧客番号は外部キーで、“顧客”表の顧客番号を参照しています。
したがって、口座を追加する前に、顧客を“顧客”表に追加しておく必要があります。
“取引明細”表の口座番号は外部キーで、“口座”表の口座番号を参照しています。
したがって、入金の取引明細を追加する前に、口座を“口座”表に追加しておく必要があります。
以上から、追加の順序は顧客、口座、取引明細となります。
【選択肢別解説】
1:× 口座を先に追加すると、その顧客番号が“顧客”表にまだ存在しないため、外部キーの制約に違反します。
2:○ 顧客、口座、取引明細の順に追加すれば、どの時点でも参照先のデータが存在するので、制約に違反しません。
3:× 取引明細を口座より先に追加すると、その口座番号が“口座”表にまだ存在しないため、制約に違反します。
4:× 取引明細と口座を顧客より先に追加すると、参照先のデータが存在しないため、制約に違反します。
【ポイント】
データの追加は、参照される側(親)から参照する側(子)の順に行います。
削除する場合は逆に、参照する側から先に削除する必要があります。