我的一位同事设计了一个表模式,在其中一个表中,列可以引用不同表中的主键取决于另一列的值。我知道这是不同的错误,但找不到支持我的理论。他的架构是这样的:
table video: (id, name, ...)
table audio:(id, name, ...)
table review_item( item_type, item_id, reason, ...)
当item_type='V'
, 那么 item_id 是表视频的 id 并且item_type='A'
当然后 item_id 是表视频的 id
( item_type
, item_id
) 的组合是唯一的,但实际上它根本不是外键,你不能将它定义为外键,因为它不指向单个表。DDL 语法不允许这样做。
有人可以找出这里违反了哪些原则或规则吗?