确定关系中的主表和外表?

Xai*_*oft 5 sql t-sql sql-server sql-server-2005

在设计数据库时,通常决定哪些表将成为关系中的主表和外表?

例如,如果我有一个名为posts的表,它包含和id列postid,我有一个名为comments的表,它包含一个名为postid的列.这些表中的哪一个是关系中的主要表.我认为它是帖子表.我之所以这样说是因为这是一对多的关系,看起来有一个条目的表将是主要的表,而具有多个表的表将是外表.

那么多对多关系或一对一关系怎么样,这些场景中的主要表和外表是什么?

Stu*_*son 4

主表包含父记录,这些记录定义了根记录,例如本例中的“posts”。

外部表包含子记录,这些记录以相关方式将数据添加到父记录。

因此,“评论”是“帖子”的子项,因此:“帖子”是父项(在您的示例中是主要的)“评论”是子项(在您的示例中是外部的)

PostId 值在 Post 表中必须是唯一的...但相同的 PostId 值可以在 Comment 表中出现多次(因为单个帖子可能有很多评论;评论 1 是针对帖子 1,评论 2 是针对帖子 1) )。

1-1 关系是指两个实体是对等的。即学生可以是用户,用户也可以是学生。两个学生不能是同一用户。两个用户不能是同一学生。因此用户-学生是1-1。

多对多关系最好用中间的表来建模。

书籍(主要)
作者(主要)
作者书籍(映射)

BookId 在 Books 中是唯一的(只有一本书可能有某个 id)
AuthorId 在 Authors 中是唯一的(只有一位作者可能有某个 id)

AuthorBooks 具有 BookId 和 AuthorId 列,并将书籍映射到作者。

这种关系被建模是因为一个作者可能写了很多本书并且因为一本特定的书可能有很多作者。