这张桌子是第一个正常形式吗?

问题描述 投票:0回答:1

我目前正在研究SQL常规表单。

假设我有下表,主键是userid

userid    FirstName    LastName    Phone
1         John         Smith       555-555
1         Tim          Jack        432-213
2         Sarah        Mit         454-541
3         Tom          jones       987-125

我正在阅读的书中指出,为了使表格处于第1范式,必须满足以下条件。

  1. 行包含有关实体的数据。
  2. 列包含有关实体属性的数据。
  3. 列中的所有条目都是相同类型。
  4. 每列都有一个唯一的名称。
  5. 表格的单元格包含单个值。
  6. 列的顺序并不重要。
  7. 行的顺序并不重要。
  8. 没有两行可能是相同的。
  9. 必须分配主键

我不确定我的表是否违反了第8条规则没有两行可能是相同的。

因为我表中的前两个记录

1         John         Smith       555-555
1         Tim          Jack        432-213

共享相同的用户ID是否意味着它们被视为重复行?

或者重复记录是否意味着该行中每个数据的和平必须相同才能将记录视为重复行,请参阅下面的示例?

1         John         Smith       555-555
1         John         Smith       555-555

编辑1:对不起,感到困惑

我试图提出的问题很简单

以下表格是第1范式吗?

userid    FirstName    LastName    Phone
1         John         Smith       555-555
1         Tim          Jack        432-213
2         Sarah        Mit         454-541
3         Tom          jones       987-125

根据教科书中给出的9条规则,我认为是,但我不确定

如果规则8没有两行可能是相同的

由于两个使用相同主键的记录而被违反。

课堂上的教科书和教授对这个问题并不是很清楚,这就是我提出这个问题的原因。

database-normalization
1个回答
2
投票

或者重复记录是否意味着该行中每个数据的和平必须相同才能将记录视为重复行,请参阅下面的示例?

他们的意思是 - 你选择的后者。整行必须是“相同的”。只要一个或多个列不同,两个行共享一个或多个列的相同值就可以了。

这是因为关系包含一组值为元组/行/记录的值,而set是一组全部不同的值。

但是,与没有NULL的关系模型相比,SQL和一些关系代数在NULL的情况下具有不同的“相同”概念。如果您想确切地知道它们的含义,您应该阅读教科书中有关它的内容。在同一列中具有NULL的两行被认为是不同的。 (第9点可能总结了涉及NULL的内容。取决于书中的解释。)


PS

关系是什么没有单一的概念。没有一个“相同”的概念。 There is no single notion of 1NF.

点3-8被更好地描述为限制如何解释表的图片以获得关系的(差)方式。您的教科书似乎(奇怪地)使“1NF”成为对表格图片的这种解释的属性。通常我们只是将关系定义为某个事物,所以如果你有一个关系,那么它必须具有已定义的属性。然后“in 1NF”适用于一种关系,或者意味着“是一种关系”并且没有被进一步使用,或者它意味着某些进一步的限制成立。关系是一组元组/行/记录,在这种关系中,3-8描述它们是属性/列/字段名称 - 值对的集合,与名称配对的值必须是已配对的类型在某些模式/标题中具有该名称,该模式/标题是一组名称 - 类型对,它们被定义为关系的一部分或在其外部。

你的教科书似乎没有清楚地表达出来。它的定义“1NF”也是特殊的,因为虽然3-8是数学的,1和2是非正式/启发式的(&9可以是其中之一或两者)。

© www.soinside.com 2019 - 2024. All rights reserved.