【问题标题】:C# - Table structure for child entityC# - 子实体的表结构
【发布时间】:2012-09-26 18:01:05
【问题描述】:

对不起,如果这听起来很菜鸟,这与继承类的数据库设计有关。

我目前有 2 种类型的用户在我的系统上注册,会员和员工。他们都拥有一些相同的财产(即姓名、出生日期、联系电话),同时拥有一些独特的财产供自己使用(即成员的会员编号,员工的工作职位)。目前它们都在数据库中存储为 2 个不同的表,并且彼此之间没有任何关系。

我现在正在考虑创建一个名为 Person 的实体,它具有所有公共属性,同时拥有一个名为 Member 的类和另一个都扩展系统中的 Person 类的 Staff。但是我在设计数据库时遇到问题。是否应该有一个名为 Person 的表,其 type 属性来表示人员的类型,或者我应该坚持现有的设计,其中 2 个表将它们分开?

【问题讨论】:

标签: sql database-design


【解决方案1】:

视情况而定。

如果你不打算做多态查询,我会坚持你现在的设计。

这种设计在文献中被称为“每个具体类的表”

另一方面,如果您的大多数查询类似于“给我系统中的所有人员,无论他们是成员还是员工”,您可能希望将它们全部放在一个名为 Person 的表中。

这种设计称为“按类层次结构表”

显然,这要求与继承的类的属性对应的所有列在数据库中都必须可以为空。

如果这是不可接受的(我很难相信它会,但是......)并且为了完整起见,您最终可能会得到一个三类三表结构,不出所料,它被称为 “每个班级的表”

对此没有硬性规定,虽然我通常倾向于使用按类层次结构表最有意义的系统,但对你来说可能是这样,也可能不是。

【讨论】:

  • 我做了进一步的谷歌搜索,发现了一个叫做 多态关联 的东西,它有没有机会与这个有关?
猜你喜欢
  • 2015-02-16
  • 2018-08-19
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多