在用户定义的表可以指定实体的不同类型的情况下,我有一个关于'最佳'设计解决方案的问题,但是所有这些用户定义类型中的1个类型是I希望单独保存记录,因为这与另一个表(用户定义的字段)有关系。例如,employees
。员工有functions
,由用户定义,但其中1个功能是'机械',我想保留mechanic
的记录,因为机制有skills
基于productgroups
,这也是由用户定义的,但除此之外,机械技能也可以由用户定义!使用用户定义字段的最佳数据库设计
这里是我的表的例子,让我来解释每个个体表:
- 员工
员工都在数据库内部职工认识了许多人。
- 功能
功能是用户定义的记录,并表示每一个可能的功能的用户希望增加对雇员。 Mechanic是一个预定义的函数记录,也是另一个可以保留额外记录的表格。
- Employee_Functions 员工和职能之间
结表。
- Employee_MechanicSkills
员工为之设置为功能“机械师”将不得不从现有的技能可供选择的选项。这些技能涉及CustomMechanicSkills
中的自定义创建技能,无法链接到ProductGroups
(见下文)定义的任何表格和技能。
- ProductGroups
ProductGroups的所有的产品用户定义的基团。这些产品组需要由供应商或自己的公司进行维修和维护。如果是自己的公司,最好知道哪个员工有能力执行维护所需的技能 - 因此,ProductGroups和Employee_MechanicSkills之间的关系。还可以为机制创建额外的机械技能。
- CustomMechanicSkills
用户定义的机械技能。除了产品组以外,用户可能不仅希望将机械技能与现有产品组联系起来,还需要额外的自定义要求。
- Employee_CustomMechanicSKills 员工和CustomMechanicSkills
我一直在想这个,而现在之间
结表。在我的数据库设计中,数据完整性是关键,因此我试图尽可能标准化。但另一方面,数据结构的不必要的复杂性也不是我想要的。
我想听听你对这个设计的pro和con的一些看法和不同的看法,也许听到或看到一个更好的,改进的设计,如果有的话。我真的很感激输入。
谢谢。
注意:命名约定并不完全适用于此模型。
我对用户定义字段的不同解决方案的优缺点进行了精确的演示:[使用MySQL进行可扩展数据建模](http://www.slideshare.net/billkarwin/extensible-data-modeling)。 –
有趣!我做了一些自己挖掘,但从未听说过“序列化LOB”,“倒序索引”和“在线架构变更” –