【发布时间】:2012-06-05 20:50:25
【问题描述】:
我有一个问题可以总结如下:
假设我正在实现一个员工数据库。对于每个人取决于他的职位,应填写不同的字段。因此,例如,如果员工是软件工程师,我有以下列:
Name
Family
Language
Technology
CanDevelopWeb
如果员工是业务经理,我有以下列:
Name
Family
FieldOfExpertise
MaximumContractValue
BonusRate
如果员工是销售人员,那么其他列等等。
如何在数据库架构中实现这一点?
我认为的一种方法是有一些相关的表:
核心表:
Name
Family
Type
如果类型是 1,则员工是软件开发人员,因此其余信息应在表 SoftwareDeveloper 中:
Language
Technology
CanDevelopWeb
对于业务经理,我有另一个包含列的表:
FieldOfExpertise
MaximumContractValue
BonusRate
这种结构的问题是我不确定如何在表之间建立关系,因为一个表与一列上的多个表有关系。
如何强制执行关系完整性?
【问题讨论】:
-
我可以提供一些反馈吗?你这样做是完全错误的。不要试图从一开始就把它们拆散。对需要的内容进行分类。例如,Manager 继承 Employee,并使用更多字段扩展基本字段。技能集是一个字符串数组(存在表示布尔值)等。不要让它们如此依赖于表格,专注于您拥有的实际需求,以及如何在应用程序中最好地呈现它们。一旦你有了它,我们就可以向你展示如何将它们魔术到表中(EAV 用于 CanDevelopWeb 等功能)和 Manager:Employee 上的继承(通过传播)。
-
创建基于代码的类,然后将它们转换到数据库。不要,看在皮特的份上,不要先做桌子。制作桌子来存储东西就像我做的最后一件事。毕竟我的 UI、课程、设计、纸和铅笔画,以及其他一切。
-
你的问题可能会有答案here
标签: sql-server database database-design relational-database database-schema