C. *_*oss 5 language-agnostic database-design erd polymorphic-associations
我正在为个人项目设计一个小型数据库,其中一个表称为表C,需要有两个表中的一个表的外键,调用它们,A并且B不同于条目.实现这个的最佳方法是什么?
目前为止的想法:
有什么更优雅的方法来解决这个问题?
Bil*_*win 10
您正在描述一种名为Polymorphic Associations的设计.这常常让人们陷入困境.
我通常建议的内容:
A --> D <-- B
^
|
C
Run Code Online (Sandbox Code Playgroud)
在此设计中,您将创建一个D既引用A又B引用的公共父表.这类似于OO设计中的常见超类型.现在您的子表C可以引用超级表,然后您可以从那里到达相应的子表.
通过约束和复合键,您可以确保给定的行D只能由A或B不是两者引用.