化为第一范式
Make Into First Normal Form
给定以下关系:
school =(teacherID, list of kids)
我需要将其转换为第一范式。我的想法是,我有一个 table 作为 teacherID,然后有一个孩子 table,每个孩子都有一个 kidID。然后我可以将每个 kidID 连接到他们正确的 teacherID。这会解决 1NF 问题吗?
它会,但它也会将其转化为第二范式,您的目的可能需要也可能不需要。
如果出于某种原因,您只想以第一范式形式使用它,那么您只需要它,这样就没有包含多个数据项的单元格。在这种情况下,将孩子列表变成一列,让每个孩子都有教师 ID 就足够了。
要满足1NF,只需要有原子数据字段,这样一列的信息就不能一分为二了。
例如,如果您存储教师的信息 (teacherid, name),这将不是第一范式,因为您可以将姓名拆分为名字和姓氏。
一个字段中的孩子列表不是原子列表,因此必须将其拆分为多个记录。
所以你需要为每个孩子准备一个条目,比如
(teacherID, kid1ID), (teacherID, kid2ID),...
给定以下关系:
school =(teacherID, list of kids)
我需要将其转换为第一范式。我的想法是,我有一个 table 作为 teacherID,然后有一个孩子 table,每个孩子都有一个 kidID。然后我可以将每个 kidID 连接到他们正确的 teacherID。这会解决 1NF 问题吗?
它会,但它也会将其转化为第二范式,您的目的可能需要也可能不需要。
如果出于某种原因,您只想以第一范式形式使用它,那么您只需要它,这样就没有包含多个数据项的单元格。在这种情况下,将孩子列表变成一列,让每个孩子都有教师 ID 就足够了。
要满足1NF,只需要有原子数据字段,这样一列的信息就不能一分为二了。
例如,如果您存储教师的信息 (teacherid, name),这将不是第一范式,因为您可以将姓名拆分为名字和姓氏。
一个字段中的孩子列表不是原子列表,因此必须将其拆分为多个记录。 所以你需要为每个孩子准备一个条目,比如 (teacherID, kid1ID), (teacherID, kid2ID),...