Database design 存储子标记的唯一属性的关系数据库结构

Database design 存储子标记的唯一属性的关系数据库结构,database-design,Database Design,我正在创建一个不同类型的结构数据库。每种类型都有一组独特的属性,例如与结构类型相关的材质、形状和特性 例如,结构是一座桥梁,它可以具有跨度长度和桥面材料类型 结构的另一个实例是具有高度、材质类型和厚度的墙 我不想生成一个包含所有可能属性的平面表,因为可能存在多种类型的结构,属性是灵活的,并且有许多属性要存储 基本上,我们希望通过为每种类型的结构在单独的表中存储唯一的属性数据来防止记录变得过大,但我想不出一种方法来链接通用结构表以轻松指向属性表 ==================== 编辑 在搜

我正在创建一个不同类型的结构数据库。每种类型都有一组独特的属性,例如与结构类型相关的材质、形状和特性

例如,结构是一座桥梁,它可以具有跨度长度和桥面材料类型

结构的另一个实例是具有高度、材质类型和厚度的墙

我不想生成一个包含所有可能属性的平面表,因为可能存在多种类型的结构,属性是灵活的,并且有许多属性要存储

基本上,我们希望通过为每种类型的结构在单独的表中存储唯一的属性数据来防止记录变得过大,但我想不出一种方法来链接通用结构表以轻松指向属性表

==================== 编辑

在搜索“泛化-专业化-关系建模”之后,我似乎希望将数据建模为一个面向对象的结构,其父类“结构”具有继承公共信息的子类,如桥结构、墙结构。现在唯一的问题是,我试图帮助一名工程师创建一个简单的独立Access 2010数据库,但似乎我在Access中正确地生成了关系,父类的主键是子类的主键和外键。这似乎在Access 2010内部引起了一个问题,它希望父类的实例包含每个非感兴趣的子类中的一个

基本上我有

StructureID作为桥和墙表上的结构、桥和墙表的主键,它们的主键即StructureID链接回结构表。我对Access 2010不太熟悉,也不知道它为什么不起作用

从IBM的一篇论文中


基本上,我们希望在Access 2010中实现这一点。

我建议尽量将结构拆分为单独的表。
您还可以拥有一个包含所有结构及其公共属性的主表

另一种方法是使用xml类型列,它可以像任何xml一样灵活,也可以应用模式来强制实现数据完整性

您基本上需要在这两个选项之间取得平衡

数据库设计还取决于您的DBMS功能。例如,并非所有数据库都支持XML类型

[编辑]

表结构可以如下所示:

结构

  • Id-自动生成的主键
  • 名字
  • 类型
  • 颜色

  • 身份证
  • StructreId引用结构(Id)
  • 长度
  • 材料类型

  • 身份证
  • StructreId引用结构(Id)
  • 高度
  • 瘦削
  • 材料类型

我建议尽量将结构拆分为单独的表。
您还可以拥有一个包含所有结构及其公共属性的主表

另一种方法是使用xml类型列,它可以像任何xml一样灵活,也可以应用模式来强制实现数据完整性

您基本上需要在这两个选项之间取得平衡

数据库设计还取决于您的DBMS功能。例如,并非所有数据库都支持XML类型

[编辑]

表结构可以如下所示:

结构

  • Id-自动生成的主键
  • 名字
  • 类型
  • 颜色

  • 身份证
  • StructreId引用结构(Id)
  • 长度
  • 材料类型

  • 身份证
  • StructreId引用结构(Id)
  • 高度
  • 瘦削
  • 材料类型

您的案例看起来像gen spec设计模式的一个实例。如何设计关系表来反映genspec,这个问题以前已经提出过


.

您的案例看起来像gen spec设计模式的一个实例。如何设计关系表来反映genspec,这个问题以前已经提出过


.

我认为您在Access中设置依赖项的方式可能犯了一个小错误。似乎您有一对一,您需要一对零或一。

我认为您在Access中设置依赖项的方式可能犯了一个小错误。似乎是一对一,需要一对零或一。

我已经只有通用表的通用信息,其他表有不同的唯一数据集。但是,我很难找到一种方法来链接这些表,而不使用某种平面链接表,因为在结构不是特定类型的情况下,平面链接表只会有大量空值。@Roo-更新了答案。我希望我理解正确。我已经只有通用表的通用信息,其他表有不同的唯一数据集。但是,我很难找到一种方法来链接这些表,而不使用某种平面链接表,因为在结构不是特定类型的情况下,平面链接表只会有大量空值。@Roo-更新了答案。我希望我正确地理解了您的意思。感谢您给出了问题的名称,我很难找到搜索此问题的正确方法。Gen Spec术语提供了许多与我的问题相关的有用信息。感谢问题的名称,我很难找到搜索此问题的正确方法。Gen Spec术语提供了许多与我的问题相关的有用信息。您可能需要添加鉴别器列
PersonType
ProfessorType
。查看一个示例,您可能希望添加鉴别器列
PersonType
ProfessorType
。看一个例子