首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1对2表(数据库设计)

1对2表(数据库设计)
EN

Stack Overflow用户
提问于 2018-03-27 16:21:53
回答 1查看 38关注 0票数 0

我正在为Go/Baduk协会创建一个数据库。这个协会定期组织围棋比赛。参加这些比赛的人可能是也可能不是协会的成员。

我的第一个方法(A)是创建两个表: Person和Member。对于每个人,我只需要字段名称,电子邮件和国籍。然后,一个成员将是一个拥有额外字段的人。成员的主密钥将是来自个人的外键。这是一对一的关系,我知道这是应该避免的。

然后,我认为一个更好的方法(B)可以是一个表Person,其中有一个名为IsMember的布尔字段,只有在IsMember为真的情况下,额外的字段才是必需的/强制的。

你对此有何看法?哪种方法(A或B)是正确的?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2018-03-28 03:45:52

根据下面的输入,您可以做出决定。

方法A

避免了第一个表上不需要的数据,而第二个表对于额外的列将没有任何空值。这将节省一些空间,如果您的应用程序增长。在性能上也会有所帮助。当您访问应用程序时,您必须对第二个表运行一个额外的查询,以检查此人是否是成员。如果考虑在person表中有一个IsMember列,则如果person不是成员,则可以避免第二个查询。

方法B

你把所有的数据都放在同一个地方。在这里,您将在table.You中使用空或空格(首选)来确定此人是否是成员。当涉及到您的应用程序时,您只需要查询一次就可以得到此人。假设您系统中的大多数人都不是成员,那么这种方法将是不好的,因为您将存储更多的空值。

根据Joel的评论,最后的方法应该取决于您的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49517937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档