Database 设计表格:一对多和一对一?

Database 设计表格:一对多和一对一?,database,database-design,Database,Database Design,我不确定我是否正确地建模了这种类型的关系,也许有人可以提供一些关于这是否合理的见解: 假设我们有一个典型的父子关系,其中每一个父母都可能有许多孩子,但我们需要跟踪父母最喜欢的孩子 表父级 -宠儿 及 餐桌儿童 -父ID 因此,链接纵横交错,一个是多对一,另一个是一对一。这被认为是好的设计吗?在子表中有一列在任何时候都只能将一行标记为收藏夹是否更好?还有别的吗 谢谢 在我看来,最好的设计是防止数据不一致,防止人们有足够的绳子上吊 如果您只希望父项有一个收藏夹,那么父项可能应该有一个favori

我不确定我是否正确地建模了这种类型的关系,也许有人可以提供一些关于这是否合理的见解:

假设我们有一个典型的父子关系,其中每一个父母都可能有许多孩子,但我们需要跟踪父母最喜欢的孩子


表父级

-宠儿 及


餐桌儿童

-父ID 因此,链接纵横交错,一个是多对一,另一个是一对一。这被认为是好的设计吗?在子表中有一列在任何时候都只能将一行标记为收藏夹是否更好?还有别的吗


谢谢

在我看来,最好的设计是防止数据不一致,防止人们有足够的绳子上吊

如果您只希望父项有一个收藏夹,那么父项可能应该有一个favoriteChildId列

如果在子项中为收藏夹标志添加一列,则必须做更多的工作,以确保同一父项的两个子记录不能同时标记为收藏夹

如果你怀疑将来你可能会有不止一个最爱,那么额外的工作当然是值得的


设计实际上取决于这些关系,以及未来是否可能对不同的“喜爱”关系进行更改。

另加一张表怎么样

table favourite(
  ,parent_id
  ,child_id
  ,primary key(parent_id)
);

如果对所有喜欢的面向对象的查询都有帮助。

在一些条件下,我看不出这种方法有任何问题。父母和孩子是完全不同的群体吗?没有外孙子女、外孙父母等?只有一组父母从来都不是孩子,还有一组孩子从来都不是父母?孩子们总是只有一个家长?只需在孩子家长表中添加一个列,您就可以保存他最喜欢的孩子。我是否违反了任何基本规则,将最喜欢的孩子链接保留在表中?我觉得有些地方不太对劲。@user568377-如果您将父对象链接到子对象,就像在一个父对象有N个子对象时一样,那么您可能需要Ronnis建议的第三个表,或者您需要在子对象表中重新链接到父对象。但是如果只有一个最喜欢的,那么无论哪种方式你都应该很好。如果你不想要一个以上的收藏夹,那么给家长一个favoriteChildId。这完全取决于您,决策应该基于应用程序的需求。