考虑以下两个表:
Table A: [K1, K2, PropA]
Table B: [K3, PropB]
表 A 的主键是复合的[K1,K2]
。表 B 的主键是K3
.
表对表 B 的值具有包容性依赖关系,K3
必须与 K2 中的值匹配。不幸的是,由于K2
不是唯一的主键,我无法在这些列上定义外键约束。
正如我所看到的,解决方案是在应用程序层中强制执行它,或者将该K1
列传播到表 B,以便它将包含表 A 的整个外键。
我的问题:这在数据库设计中被认为是好的还是坏的做法?假设从维护角度或完整性角度来看,添加额外的列不是问题(插入是事务性的)。
我正在使用 MSSQL 和 Oracle。