我有一个不常见的数据库设计问题,我不确定如何正确处理。有一个表叫做profile
存储网站用户的公开资料信息。但是,每个配置文件都可以属于一个人或一对夫妇,因此我需要一个额外的子表来调用person
来存储特定于个人的数据。每个profile
实体必须至少有一个但不超过两个person
子实体。
模拟这种关系的最佳方式(就“犹太洁食”和/或性能而言)是什么?我应该使用常规的一对多并以编程方式或使用存储过程强制执行孩子的数量吗?或者我应该只在父表中创建两个外键字段并允许null
其中一个?也许还有另一种我想不到的方法?
编辑:回应戈登问题的附加信息
- 一个人只能与一个配置文件相关联,并且不能有一个没有配置文件的人。也许这个名字
person
让人困惑,因为它可能暗示一个人有个人资料,而实际上是个人资料有个人信息。 - 在夫妻档案的情况下,两个人都是平等的。由于网站的特殊性,2 的限制永远不会改变,但是应该可以添加或删除一个人(使一个人的个人资料成为一对夫妇的个人资料,反之亦然),但永远不能少于 1 或多于2人。
- 如果没有个人资料数据,就永远不会提取个人数据,但有时可以在没有个人数据的情况下提取个人资料数据。