Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 来自域模型的3NF规范化表_Database_Database Design_Database Normalization_3nf - Fatal编程技术网

Database 来自域模型的3NF规范化表

Database 来自域模型的3NF规范化表,database,database-design,database-normalization,3nf,Database,Database Design,Database Normalization,3nf,希望得到一些关于如何在数据库表中表示这一点的帮助(第三种标准形式)。我觉得我所做的是不正确的。我知道,对于一对多关联,“1”表中的主键(在本例中为警报)应包含在其子类中,但是我不确定文本响应和语音响应的主键应该是什么 我所拥有的看起来并不正确,但我知道每个对象都需要一个唯一的ID。注意:ObservationId属性是从pic中删除的从1到多的类 到目前为止,我掌握的表格有: 警报:警报ID(主键),警报类型,观察ID TextResponse:TextResponseId(主键),AlertI

希望得到一些关于如何在数据库表中表示这一点的帮助(第三种标准形式)。我觉得我所做的是不正确的。我知道,对于一对多关联,“1”表中的主键(在本例中为警报)应包含在其子类中,但是我不确定文本响应和语音响应的主键应该是什么

我所拥有的看起来并不正确,但我知道每个对象都需要一个唯一的ID。注意:ObservationId属性是从pic中删除的从1到多的类

到目前为止,我掌握的表格有:

警报:警报ID(主键),警报类型,观察ID

TextResponse:TextResponseId(主键),AlertID(FK),TextResponse

语音应答:语音应答ID(PK)、警报ID(FK)、声音剪辑


非常感谢您的帮助。

我可以看到您可能忽略了一个可能的依赖关系。只有当
AlertId
与文本/声音内容之间没有关系时,您当前的设计才会标准化。但是,在实践中,您可能会多次看到相同的警报。在当前的设计中,您将多次存储相同的文本/语音内容。要解决此问题,可以通过将两个响应表更改为纯桥接表来重构:

TextAlert:  TextResponseId,  AlertID (primary key is both columns)
VoiceAlert: VoiceResponseId, AlertId (PK both columns)
然后,创建两个新表来存储实际的文本/语音内容:

TextResponse:  TextResponseId  (PK), TextResponse
VoiceResponse: VoiceResponseId (PK), SoundClip
现在,对于多次出现的相同警报内容,您的设计非常健壮


我可以提出的另一个意见是,实际上,您可能只需要一个响应表,它可以存储文本或声音,可能是一个blob。

两个响应表中的外键是什么?这对我来说并不清楚。AlertId用于我想象的两个方面——我正在使用的教科书说明了“一对多关联”——将“一”类的主键属性添加到表示“多”的表中“上课。在这种情况下,我想问一下,您是否需要为语音和文本响应设置单独的表格?您好。请阅读我对你最近的另一个问题的评论。你怎么能问规范化问题却不给出FDs?你的教科书会告诉你如何将模型映射到表格,你被困在哪里了?(什么是您的教科书?)您的教科书是否涉及建模子类型?PS请通过编辑澄清,而不是评论。重新评论你(现在已删除)最近的其他问题,也与此相关:奇怪的是,你称“请谷歌‘stackexchange作业’&展示你的工作理由”和“帖子应该告诉我们发生了什么”不是“建设性反馈”。你也不会按照我的意见行事。照目前的情况,你的问题需要(好的)答案才能从头开始复制和应用你的教科书。你的短信说你要做什么&你被困在哪里了?PS无论是你的帖子还是被接受的答案都没有显示出对“正常化”的理解。非常感谢Tim,这是非常重要的helpful@LukeJ他们可能还想让你找到其他的问题,但我只是想指出对我来说是显而易见的。可能会盯着实际数据看一会儿,然后尝试寻找其他东西。