【发布时间】:2014-07-27 11:55:53
【问题描述】:
我正在开发一个多用户任务管理器应用程序,但我偶然发现了数据库架构设计。我有用户表、类别,当然还有任务表。每个任务都属于一个类别。所以用 DDL 的话来说,我需要类别和任务之间的“一对多”关系,对吧?此外,我几乎可以肯定我需要用户和任务实体之间的“一对多”关系。 (如果我错了,请纠正我)。至于“类别-用户”的关系,这里我在认真考虑两个选项,我需要你告诉我哪个是正确的以及为什么:
“多对多”关系,即用户可以有多个类别,反之亦然;
每个类别只能与一个用户相关的“一对多”关系。在这种情况下,类别表中将有大量具有相似名称的行,例如“工作”、“家庭”等(因为在类别方面很难想出新的和原创的东西),它们的区别只有“用户”列值。
在这种情况下常见的方法是什么?
【问题讨论】:
-
为什么需要
category - user的表格?您可以通过加入task_category和user_task的关系表来获得此信息。 -
其实你可能是对的。我尝试并想不出这个解决方案的任何缺点。你真的认为按照你的方式做我会受益吗?
-
我也看不出需要将用户与类别联系起来,除非您出于某种原因希望每个用户“拥有”或“创建”他们自己的类别。如果用户 1 和用户 2 都想要一个名为“工作”的类别,那么它应该是一个共享类别,除非有特定的理由不这样做(例如,如果类别上有其他属性应该是用户特定的)。在这种情况下,类别将对用户具有外键。
标签: sql database database-schema ddl