【发布时间】:2019-07-21 12:45:04
【问题描述】:
我是数据库新手,过去两天一直在学习常规表单/数据库实践。我为飞机检查数据创建了以下模型表,但我不确定它是否处于第二范式。检查 ID 是主键,但真正依赖于检查 ID 的唯一信息是日期。技术指令是机械师在进行飞机检查时遵循的指南,但它不会以任何方式影响检查 ID。检查员姓名也不依赖于检查 ID。
如果两列不依赖于主键,这个表会破坏 2NF 吗?
表格如下:
【问题讨论】:
-
NF 使用 FD。但你不会说你认为他们是什么。 NF 使用 CK,而不是 PK。 2NF 涉及部分和完整的 FD,但您没有提及它们。另外,为什么您认为“如果两列不依赖于主键”与 2NF 有任何关系?你为什么要考虑它?按照教科书展示您的工作,并就您遇到的第一个问题提出具体问题。 PS 如果你这样做,你可能会发现当前接受的答案是错误的和困惑的。
-
PS“唯一真正依赖于检查 ID 的信息是日期”没有意义,因为每一列在功能上都依赖于每个 CK/PK。 “以任何方式影响检查 ID”没有意义,因为 FD 与“影响”无关。 (无论“真的”和“以任何方式”是什么意思。)这篇文章没有显示对所使用术语的理解。这说明了为什么你应该按照教科书展示你的工作的步骤和理由——或者我们不能告诉你你在哪里做对和错,或者有时甚至无法理解写作(如果有意义的话)。谷歌“stackexchange 作业”。
-
除非这不是教科书。实际上,我确实必须为我的工作实现一个数据库。我以前没有任何数据库经验,所以我试图清楚地掌握一些事情,这样我就不会最终实现一个设计糟糕的数据库。
-
不管是作业还是你的工作,既然你发了这个问题,你就需要看一本教科书。这个问题缺乏太多的理解,以至于回答它或解释你的问题的错误之处需要从头开始解释。这对 SO 来说太宽泛了。看:2NF没用!然而,2NF 意味着一个特殊的东西,涉及 FD 和 CK 而不是 PK。如果您有教科书/正确的定义,那么您会发现您需要首先识别 FD。从那里开始。发布一个问题。提供所有步骤并说明理由,并询问您首先遇到的问题。
-
数十种已出版的学术信息建模和数据库设计教科书以pdf形式在线免费提供。 stanford.edu 有免费的在线数据库课程。
标签: database postgresql data-modeling database-normalization