Database 第一范式歧义?

Database 第一范式歧义?,database,database-design,database-normalization,Database,Database Design,Database Normalization,在附图中,数据的1NF如下所示 宠物[宠物id,宠物名称,宠物类型,宠物年龄,主人] 宠物就诊[宠物id,就诊日期,程序编号,程序名称] 其中,表名位于主键为粗体的字段列表之前 然而,我想知道 宠物[宠物id,宠物姓名,宠物类型,宠物年龄,主人,就诊日期,程序号, 程序名称] 也将符合要求,因为它似乎满足“每个记录都应该由一个键唯一标识”,“每个单元格只能包含一个项目”?或者添加一个访问id字段,但仍保留一个表,如中所示 宠物[宠物id,宠物姓名,宠物类型,宠物年龄,主人,就诊id,就诊日期,程

在附图中,数据的1NF如下所示

宠物[宠物id,宠物名称,宠物类型,宠物年龄,主人]
宠物就诊[宠物id就诊日期程序编号,程序名称]

其中,表名位于主键为粗体的字段列表之前

然而,我想知道

宠物[宠物id,宠物姓名,宠物类型,宠物年龄,主人,就诊日期,程序号, 程序名称]

也将符合要求,因为它似乎满足“每个记录都应该由一个键唯一标识”
,“每个单元格只能包含一个项目”?或者添加一个访问id字段,但仍保留一个表,如中所示

宠物[宠物id,宠物姓名,宠物类型,宠物年龄,主人,就诊id,就诊日期,程序编号, 程序名称]

更一般地说,1NF通常需要将一个包含“重复组”的表拆分为多个表吗?或者,如果可以找到/创建复合键,从技术上讲,我们可以将其全部保存在一个表中吗

我见过许多定义明显不同的例子。我不是在寻求关于我应该如何学习这个话题的建议,而是对我提出的问题的回答。提前谢谢


您认为将所有数据保存在一起仍然可以被限定为1NF是正确的。拆分数据不是拥有1NF的必要条件

事实上,这正是通用“表”(如Excel和类似程序的表)与“关系”的区别所在。关系是关系模型的基本数据结构,由数据库管理系统管理的结构,不同的范式(如2NF、3NF、Boyce Codd范式等)都是“发明”的:关系就像一张表,有三个非常重要的区别:

  • 每个单元格只有一个值
  • 行的顺序并不重要
  • 这些行都不一样
  • 条件2和3意味着我们存在一个集合,并且注意,不需要有一个由属性的严格子集形成的键(或者通常称为候选键):简单地说,一个候选键可以由所有属性组成,在这种情况下,所有行都是不同的

    因此,从“表”到“关系”的转换意味着上述三个条件都是正确的,并允许建立所谓的“规范化理论”,即使是“理论”,也会对数据管理技术产生重要的实际影响


    最后,请注意,对于某些人来说,1NF只有在我们已经讨论了关系(即集合)时才能正确定义,因此,它减少到第一个条件(每个单元格都有一个且只有一个值)。因此,当一个关系不在1NF中时,我们可以谈论非1NF关系,其中每个数据可以有多个值。这其实并不重要,因为在规范化理论中,“重要”范式是第三种、Boyce Codd和更高的范式。

    你也可以这样做——大多数人不太担心1NF(或2NF)。有趣的是3NF、BCNF、4NF和5NF(以及6NF和DKNF,以及…)。这些问题——什么是1NF和1NF的标准化——是重复的多次。此外,没有共识,没有答案。此外,最受欢迎的是混乱、模糊、重复的混乱景象。这在我的答案中有解释&它的链接在链接的副本中。一些明智的知情回答将提到Chris Date最终确定1NF的含义(除了“是关系”)与更高的NFs无关,只需寻求特定于应用程序的切分,将过大的非均匀和均匀重复值或列集切分为大小合适的值。请转述或引用其他文本。给出你所需要的&把它和你的问题联系起来。仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括带有图像的图例/图例和说明。而且,链接也会消失。使用编辑功能插入图像/链接。让你的帖子变得独立。@philipxy-对x-ref的问题进行投票并不是一个坏主意。虽然它不是很好,但也不错,确实值得一个答案(一个好的答案——我在这里的评论的一个更容易理解的版本),并且可能会成为这个复制品的主人。让我知道你什么时候读过这篇文章,我会删除它。例如,对这一评论投赞成票。