相关疑难解决方法(0)

如何与特权孩子建立一对多关系?

我想要一种一对多的关系,其中对于每个父母,一个或零个孩子被标记为“最喜欢的”。然而,并不是每个父母都会有孩子。(将家长视为本网站上的问题,将孩子视为答案,将最喜欢的视为已接受的答案。)例如,

TableA
    Id            INT PRIMARY KEY

TableB
    Id            INT PRIMARY KEY
    Parent        INT NOT NULL FOREIGN KEY REFERENCES TableA.Id
Run Code Online (Sandbox Code Playgroud)

在我看来,我可以将以下列添加到 TableA:

    FavoriteChild INT NULL FOREIGN KEY REFERENCES TableB.Id
Run Code Online (Sandbox Code Playgroud)

或 TableB 的以下列:

    IsFavorite    BIT NOT NULL
Run Code Online (Sandbox Code Playgroud)

第一种方法的问题在于它引入了一个可为空的外键,据我所知,它不是规范化形式。第二种方法的问题是需要做更多的工作来确保最多只有一个孩子是最喜欢的。

我应该使用什么样的标准来确定使用哪种方法?或者,还有其他我没有考虑的方法吗?

我正在使用 SQL Server 2012。

normalization foreign-key database-design sql-server relational-theory

24
推荐指数
2
解决办法
1万
查看次数