这是第一范式的 table 吗?
Is this table in first normal form?
我目前正在学习 SQL 范式。
假设我有以下 table 主键是 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
我正在阅读的书指出,为了使 table 成为第一范式,必须满足以下条件。
- 行包含有关实体的数据。
- 列包含有关实体属性的数据。
- 列中的所有条目都属于同一类型。
- 每一列都有一个唯一的名称。
- table 的单元格包含一个值。
- 列的顺序并不重要。
- 行的顺序并不重要。
- 任何两行都不能相同。
- 必须分配一个主键
我不确定我的 table 是否违反了
第 8 条规则 任何两行都不能相同。
因为我的前两条记录table
1 John Smith 555-555
1 Tim Jack 432-213
共享相同的用户 ID 是否意味着他们被视为
重复的行?
或者重复记录是否意味着行中的每一个数据和平
必须相同才能将记录视为重复行
请参阅下面的示例?
1 John Smith 555-555
1 John Smith 555-555
EDIT1:很抱歉造成混淆
我想问的问题很简单
下面的table是第一范式吗?
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 没有两行可以相同
由于两条记录使用相同的主键而被违反。
class 教科书和教授在这个问题上并不是很清楚,这就是我问这个问题的原因。
Or does duplicate records mean that every peace of data in the row has to be the same for the record to be considered a duplicate row see example below?
他们的意思是——你选择的后者。整行必须是 "identical"。只要一列或多列不同,两行的一列或多列的值相同也没关系。
这是因为一个关系包含一组 tuples/rows/records 的值,而这组值是完全不同的值的集合。
但是 SQL 和一些关系代数在 NULL 的情况下与没有 NULL 的关系模型有不同的 "identical" 概念。如果您想确切了解教科书的含义,您应该阅读教科书的相关内容。同一列中具有 NULL 的两行被认为是不同的。 (第9点可能是总结了一些涉及NULL的东西。取决于书中的解释。)
PS
没有关于什么是关系的单一概念。没有 "identical" 的单一概念。
第 3-8 点更好地描述为限制如何解释 table 的图片以获得关系的(糟糕的)方式。您的教科书似乎(奇怪地)使“1NF”成为 属性 对 table 图片的这种解释。通常我们只是简单地定义一个关系是特定的东西所以如果你有一个那么它必须有定义的属性。然后 "in 1NF" 应用于关系 & 要么意味着 "is a relation" & 不再被使用,要么意味着某些进一步的限制成立。关系是一组 tuples/rows/records,在你的 3-8 描述的那种关系中,它们是一组 attribute/column/field 名称-值对,与名称配对的值必须是 paired 类型在某些 schema/heading 中使用该名称是一组名称类型对,定义为关系的一部分或外部关系。
你的课本好像没有讲清楚。它对“1NF”的定义也是特殊的,因为虽然 3-8 是数学的,但 1 和 2 是 informal/heuristic(&9 可以是其中之一或两者)。
我目前正在学习 SQL 范式。
假设我有以下 table 主键是 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
我正在阅读的书指出,为了使 table 成为第一范式,必须满足以下条件。
- 行包含有关实体的数据。
- 列包含有关实体属性的数据。
- 列中的所有条目都属于同一类型。
- 每一列都有一个唯一的名称。
- table 的单元格包含一个值。
- 列的顺序并不重要。
- 行的顺序并不重要。
- 任何两行都不能相同。
- 必须分配一个主键
我不确定我的 table 是否违反了 第 8 条规则 任何两行都不能相同。
因为我的前两条记录table
1 John Smith 555-555
1 Tim Jack 432-213
共享相同的用户 ID 是否意味着他们被视为 重复的行?
或者重复记录是否意味着行中的每一个数据和平 必须相同才能将记录视为重复行 请参阅下面的示例?
1 John Smith 555-555
1 John Smith 555-555
EDIT1:很抱歉造成混淆
我想问的问题很简单
下面的table是第一范式吗?
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 没有两行可以相同
由于两条记录使用相同的主键而被违反。
class 教科书和教授在这个问题上并不是很清楚,这就是我问这个问题的原因。
Or does duplicate records mean that every peace of data in the row has to be the same for the record to be considered a duplicate row see example below?
他们的意思是——你选择的后者。整行必须是 "identical"。只要一列或多列不同,两行的一列或多列的值相同也没关系。
这是因为一个关系包含一组 tuples/rows/records 的值,而这组值是完全不同的值的集合。
但是 SQL 和一些关系代数在 NULL 的情况下与没有 NULL 的关系模型有不同的 "identical" 概念。如果您想确切了解教科书的含义,您应该阅读教科书的相关内容。同一列中具有 NULL 的两行被认为是不同的。 (第9点可能是总结了一些涉及NULL的东西。取决于书中的解释。)
PS
没有关于什么是关系的单一概念。没有 "identical" 的单一概念。
第 3-8 点更好地描述为限制如何解释 table 的图片以获得关系的(糟糕的)方式。您的教科书似乎(奇怪地)使“1NF”成为 属性 对 table 图片的这种解释。通常我们只是简单地定义一个关系是特定的东西所以如果你有一个那么它必须有定义的属性。然后 "in 1NF" 应用于关系 & 要么意味着 "is a relation" & 不再被使用,要么意味着某些进一步的限制成立。关系是一组 tuples/rows/records,在你的 3-8 描述的那种关系中,它们是一组 attribute/column/field 名称-值对,与名称配对的值必须是 paired 类型在某些 schema/heading 中使用该名称是一组名称类型对,定义为关系的一部分或外部关系。
你的课本好像没有讲清楚。它对“1NF”的定义也是特殊的,因为虽然 3-8 是数学的,但 1 和 2 是 informal/heuristic(&9 可以是其中之一或两者)。