Database design 为所有列设计具有多个值的数据库对象

Database design 为所有列设计具有多个值的数据库对象,database-design,Database Design,下面的表格模型是实际表格的设计,我们将给患者填写表格以存储 他们将在初次考试时提供的信息。我被要求设计/建模数据库对象 以存储此信息。我确定这张图片最左边的区域 (如“主要投诉”、“后发投诉”等)将成为属性,并将成为表中的列。支票 框是这些表的实际值。所有列都可以有多个值(表示每列 可以选中多个复选框) 我基本上想出了两种方法(请记住 有更多的列,然后我已经显示了上面,我只决定显示我试图整个表的一部分 设计为仅显示一个示例): 1) 设计一个表,每个属性的每个可能值都有一列 利与弊(在我看来):

下面的表格模型是实际表格的设计,我们将给患者填写表格以存储 他们将在初次考试时提供的信息。我被要求设计/建模数据库对象 以存储此信息。我确定这张图片最左边的区域 (如“主要投诉”、“后发投诉”等)将成为属性,并将成为表中的列。支票 框是这些表的实际值。所有列都可以有多个值(表示每列 可以选中多个复选框)

我基本上想出了两种方法(请记住 有更多的列,然后我已经显示了上面,我只决定显示我试图整个表的一部分 设计为仅显示一个示例):

1) 设计一个表,每个属性的每个可能值都有一列

利与弊(在我看来):

  • 它将使我们设计的屏幕从该表中选择和保存数据变得简单和容易

  • 该表将是一个非常宽的表(其中包含近200列)

我是否违反了一些非常基本的数据库设计原则,因为我创建了一个大表,如果屏幕/模板发生更改,它将导致后续问题

2) 将所有复选框转换为代码表(基本上,这些表将成为它们自己的实体)

如果这样做,我现在必须为每个属性(后、前)创建一个相关表,并将主表中的一行与每个相关表中每个列的多行相关联

这将为每列生成多个代码表和一个相关表。(目前已有18个相关表格)

如果我遵循这个设计,那么为了展示初始考试的全貌,我必须从这里涉及的18个表中选择数据,并且忘记更新它们

我倾向于第一种解决方案,因为它很简单

第二个解决方案很复杂,而且我认为我违反了数据库的基本原则 通过将柱/属性(后、前等)转换为相关的实体进行设计 表实际上是属性,应该生成列。我将不得不在18张桌子之间加入 至少如果我想展示完整的考试图片

我希望我已经在这里描述了我的困境,我需要正确地设计这个对象,并且以上两种方法都是正确的 我唯一可以考虑的是,我需要帮助来做出决定,也许这一切还有另一面 我甚至没有考虑。我希望以前有人做过类似的事情,我可以讨论一下 这与他们有关

不幸的是,我无法发布屏幕图像,以便更好地了解我正在谈论的内容,即显示此数据的屏幕的外观。因此,我现在尝试用文字显示图片:

初始检查表(主表)


如果我理解您的问题,您希望构建一个属性表来保存属性的所有可能值

可以这样设计属性表

Attribute
---------
Attribute
Value
主(集群)键是(属性、值)。您将对该属性执行SQL选择,并返回所有值行

您的行将如下所示

 Attribute          Value
 ----------------   -----------------
 posterior          class1
 posterior          class11
 posterior          crowded
 posterior          rotated
 anterior           overbite
 ...

没有必要重新发明轮子,你需要的是:

首先,我在这个论坛上看到有人问了一些非常基本的问题,我的问题经过深思熟虑,我不仅仅是在找人做我的工作,我提出了两个选择,我希望一些比我更有经验的人帮助我选择一个更好的选择,但仍有人否决了我的问题,我不知道为什么????从我身上夺走的不是那么多。我希望他们能解释为什么投票否决我的问题。@JUR:我没有投票否决你的问题。我编辑了你的问题。我不知道你的问题为什么被否决了。我知道你的问题让我很难理解。如果你对我的答案有疑问,请随意评论。现在就评论吉伯特的答案。是的,你是对的,我将创建一个属性表来存储所有属性的值,然后与此表连接以实际获取每个属性的值,但我的问题更多的是关于我是否应该创建一个非规范化的表,其中每个可能的属性的每个值都有一列,或者创建属性表,然后为每个列的值创建一个相关表,如果我这样做,我将连接18个表以获得完整的图片。该采取哪种方法?为什么?@JUR:我不明白为什么我的单属性表不能完全解决你的问题。我不明白你为什么需要任何其他属性表。我试图粘贴我试图设计的屏幕截图,这引发了我提出的问题:如何在该屏幕截图中存储数据,但不幸的是,我没有被允许粘贴屏幕截图,因为我没有声誉点数,这就是为什么我的问题会引起一些混乱,因为没有屏幕截图,如果你对我的问题感到困惑,或者如果你问为什么你的答案不是一个完整的解决方案,我不会责怪你。我会尝试编辑我的问题,如果我能够粘贴屏幕截图,你就会知道我的意思。
 Attribute          Value
 ----------------   -----------------
 posterior          class1
 posterior          class11
 posterior          crowded
 posterior          rotated
 anterior           overbite
 ...