問72
頻出度★★★
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。 口座
| 口座番号(主キー) | 口座種別 | 残高 | 顧客番号(外部キー) |
|---|
顧客
| 顧客番号(主キー) | 顧客名 |
|---|
取引明細
| 取引番号(主キー) | 取引日時 | 取引種別 | 取引金額 | 口座番号(外部キー) |
|---|
这道题的解析和你的作答记录。
関係データベースで管理している“口座”表,“顧客”表及び“取引明細”表がある。新たな顧客が口座の開設と同時に1万円を入金するとき,表にデータを追加する順序として,適切なものはどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。 口座
| 口座番号(主キー) | 口座種別 | 残高 | 顧客番号(外部キー) |
|---|
顧客
| 顧客番号(主キー) | 顧客名 |
|---|
取引明細
| 取引番号(主キー) | 取引日時 | 取引種別 | 取引金額 | 口座番号(外部キー) |
|---|
这是 账户 → 客户 的顺序,但「账户」表通过外键「客户编号」参照「客户」表,因此在客户尚不存在时添加账户会违反参照完整性。必须先登记客户。
正解 外键只能指向「被参照的主键已经存在的行」(参照完整性)。由图可知,「账户」表通过外键「客户编号」参照「客户」表,「交易明细」表通过外键「账户编号」参照「账户」表。因此必须先登记被参照的一方,添加顺序为 客户 → 账户 → 交易明细。这也与新客户登记 → 为该客户开设账户 → 存款(交易)的业务流程相一致。所以正确答案是イ。
这是 客户 → 交易明细 → 账户 的顺序,但「交易明细」表通过外键「账户编号」参照「账户」表。在尚未登记账户的阶段无法添加交易明细,因此错误。
这是 交易明细 → 账户 → 客户,将参照关系完全颠倒的顺序。最先添加的交易明细会参照不存在的账户,接着的账户又会参照不存在的客户,二者都违反参照完整性。