在设计数据库时,通常决定哪些表将成为关系中的主表和外表?
例如,如果我有一个名为posts的表,它包含和id列postid,我有一个名为comments的表,它包含一个名为postid的列。这些表中的哪一个是关系中的主要表。我认为它是帖子表。我之所以这样说是因为这是一对多的关系,看起来有一个条目的表将是主要的表,而具有多个表的表将是外表。
多对多关系或1对1关系如何,这些场景中的主要和外来表是什么?
答案 0 :(得分:4)
主表包含父记录,这些记录定义根记录,例如本例中的“posts”。
外部表包含子记录,即以相关方式将数据添加到父记录的记录。
因此,“评论”是“帖子”的孩子,因此: “发布”是父级(在您的示例中为primary) “评论”是孩子(在你的例子中是外国人)
PostId值在Post表中必须是唯一的... 但是在Comment表中可以多次出现相同的PostId值(因为单个帖子可能有很多评论;评论1用于帖子1,评论2用于帖子1)。
1-1关系是指两个实体是同伴。即,学生可以是用户,用户可以是学生。两个学生不能是同一个用户。两个用户不能是同一个学生。因此,用户 - 学生是1-1。
多对多的关系最好用中间的表格建模。
书(小学)
作者(小学)
AuthorBooks(制图)
BookId在书籍中是独一无二的(只有一本书可能有一定的id) AuthorId在作者中是唯一的(只有一位作者可能具有某个ID)
AuthorBooks同时拥有BookId和AuthorId列,并将书籍映射到作者。
这种关系是建模的,因为作者可能写了很多书,而且某本书可能有很多作者。
答案 1 :(得分:3)
假设:
table posts
post_id
table comments
comment_id
post_id
table posts_to_comments
post_comment_id
post_id
comment_id
当你想到它时,帖子就是你的“主要”表。
对于许多人的关系:(这里没有多大意义,但无论如何)
posts_to_comments.post_comment_id is primary key
posts_to_comments.post_id is foreign key to posts
posts_to_comments.comment_id is foreign key to comments
答案 2 :(得分:2)
我从未听说过用于表示桌子的主要和外国人。它们是列的特征。
在您给出的示例中:
答案 3 :(得分:1)
对于多对多关系,例如网络和用户,网络可以拥有多个成员,用户可以属于多个网络,您需要引入第三个表,可以称之为(选择你认为最合适的):
此表将包含一个复合主键,由userId和networkId组成。此外,userId将引用Users.id作为外键,networkId将引用Networks.id作为外键。