如何在mysqlworkbench中设计子类型?

How to design subtype in mysql workbench?

我正在做一个项目,我应该建立一个 table 用户。每个用户都有一些用户信息,如用户名和密码等。另外,一个"user type":新用户是"newbie",6个月的用户是"regular",1岁的用户是"leader"。这三种类型都有一个 "karma" 的值来存储它们的分数。还有"moderator"型和"administrator"型,它们没有"karma",而是有紧急联系电话。前者还有度数

到目前为止,这是我的模型,但我在设计 "user type" 时遇到了问题。我正在考虑 supertype/subtype 解决方案,但似乎我无法在 mysql workbench 上做到这一点。是否有替代设计?谢谢!

对,MySQL Workbench 不能对继承建模,因为无论如何 MySQL 都不支持。但是为什么要这么复杂呢?只需将类型定义为用户的属性(字段)table。使用枚举来限制 acceptable 值。您还可以定义一个 UserType table,此属性与其具有 1:n 关系,并且可以包含每个用户类型的附加信息。

作为旁注:您为地址添加的额外 table 似乎有点过分了。多长时间会有一个以上的用户住在同一地址?您可以轻松地将地址存储在用户 table 中,而不必担心显着的反规范化,这种情况非常罕见。如果时机合适,您可以使用国家和城市 table 以及用户 table 与他们之间的关系来规范化它们。不过那个user_has_postalAddresstable好像真的是多余的

很抱歉回复旧的 post,但我正在尝试为 Mac 寻找一个好的免费 ERD 工具,MySQL Workbench 是最好的我找到了。

上面的回答说 MySQL 不支持 super/sub 类型。我不太同意这种说法。在我看来,这是 MySQL Workbench 的限制。 super/sub 类型可以简单地建模为 1:N 与非规范化规则的识别关系。非规范化规则定义了逻辑模型和物理模型之间的差异。我在 MySQL workbench 中看不出有什么方法可以对物理模型以外的任何东西进行建模。

与地址类似,地址和用户传统上是两个不同的实体,ERD 工具应该添加的值能够改变它们之间的关系。 N:M 在原来的 post 中,或者在回复中,一个 1:1 标识了一个非规范化规则,以指示地址字段应该被非规范化为物理模型中的用户实体。或者甚至 1:N 确定您是否想要送货地址和帐单地址。

所以,我断言 super/sub 类型建模不是 MySQL 的限制,它是 MySQL Workbench 的限制。关系应支持上滚和下滚非规范化规则。