我正在为数据库设计而奋斗,这就是我目前所拥有的。

以下是问题所在。
为了增加问题,该设计已经在使用中,数据必须迁移到任何新的设计中。
系统中最常见的操作是接收方查看状态,然后由管理人员和驱动程序创建状态。
我的问题能用一个优雅的新设计来解决吗?
发布于 2013-12-07 22:45:40
这是另一次尝试。我还是觉得
您在2中所担心的是依赖关系。依赖关系通常不是问题,但在基于id的数据库设计中非常严格,因此对dbms隐藏依赖关系。如果它知道,它可以帮助你:-)
你可以这样做:
就这样。您的变化不大,但现在用户可以附属于许多公司(到目前为止,集团化经理,但也许有一天您决定允许收件人与多家公司一起工作,或者让司机一次为多家公司工作)。而且,现在在“所有权”中没有出现错误条目的风险,也没有任何关于“所有权”内容和使用的疑问。
如果您想安全地使用您的receive_emails字段,下面是您可能想要的一种方法(正如我所说的,这并不是真正必要的):有一个带有两个字段的新表email_recipients : user_id和user_type。是的,又是冗余。但是这样做,您可以对user_type有一个限制,它只允许某些类型(到目前为止只允许“收件人”)。同样,您将拥有一个外键,不仅是user_id的外键,而且是user_id和user_type的外键。
发布于 2013-12-02 19:56:48
扩展用户!
就像扩展类一样,您可以为用户创建一个新的表“Manager”,其中包含更多的列和一个FK。
因此,您可以在经理和公司之间创建一个关系表。
如果您想要更好地控制该企业集团实体,请创建企业集团表并为经理们创建一个FK,因此您可以在企业集团和公司之间创建一个关系表,或者如果一个公司不能被两个企业集团所拥有,那么从一个公司到另一个企业集团只能拥有一个FK。
发布于 2013-12-04 09:55:41
我需要介绍一种新的用户类型
在这些类型的场景中,当需要添加一个新类型时,这将导致模式的重组,从而导致设计上的一个缺陷。
实际上,管理和驾驶是用户所扮演的角色,这些角色可能会随着时间的推移而改变。
在现实中:
用户不是管理器(他是一个人)。
管理用户is-a-role-played-by。
想一想,如果公司决定有服务台的用户。
我将添加Role和User-Role表,以保持用户和角色之间的关系。
我对用户中的"receive_emails“字段不满意。
在receive-email中使用User-Role字段是一种选择。
我需要为我网站上的所有用户提供一个单一的登录点。
可以让用户、公司和角色作为登录页面的选择(这将对您的应用程序设计产生直接影响)。
我对由用户、所有者、包、公司、用户组成的依赖循环感到不安。
从概念上讲,我们将有接收用户、=>所有权、=>包、=>公司、=>驱动程序或经理用户。
顺便说一句,这是一个关系模型。
企业集团。

https://stackoverflow.com/questions/20286394
复制相似问题