设计数据库时,什么通常决定哪些表将成为关系中的主表和外表?
例如,如果我有一个名为 posts 的表,它包含 id 列 postid,并且我有一个名为 comments 的表,它包含一个名为 postid 的列。这些表中的哪一个将是关系中的主要表。我认为这是帖子表。我这么说是因为这是一种一对多关系,看起来有一个条目的表将是主表,而有多个条目的表将是外部表。
对于多对多关系或一对一关系,这些场景中的主表和外部表是什么?
最佳答案
主表包含父记录,这些记录定义了根记录,例如本例中的“posts”。
外部表包含子记录,这些记录以相关方式将数据添加到父记录。
因此,“评论”是“帖子”的子项,因此: “Post”是父级(在您的示例中是主要的) “评论”是子项(在您的示例中是外来的)
PostId 值在 Post 表中必须是唯一的... 但相同的 PostId 值可以在 Comment 表中出现多次(因为单个帖子可能有很多评论;评论 1 是针对帖子 1,评论 2 是针对帖子 1)。
1-1 关系是指两个实体是对等的。即学生可以是用户,用户也可以是学生。两个学生不能是同一用户。两个用户不能是同一学生。因此用户 - 学生是 1-1。
多对多关系最好用中间的表来建模。
书籍(小学)
作者(主要)
作者书籍(映射)
BookId 在图书中是唯一的(只有一本书可能有特定的 id)
AuthorId在Authors中是唯一的(只有一个作者可能有某个id)
AuthorBooks 具有 BookId 和 AuthorId 列,并将书籍映射到作者。
之所以对这种关系进行建模,是因为一位作者可能写了很多本书,并且某本书可能有很多作者。
关于sql - 确定关系中的主表和外表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429407/