第三范式混淆
3rd Normal form Confusion
所以我正在规范化这个 table。我开始意识到存在传递依赖。因为学院名称和城市取决于学院代码。所以我必须创建新的 table 并将这些列移到那里。但问题是,不同研究所的研究所代码重复。那么这个新创建的tablet是否需要自己创建一个唯一的ID呢?或者我可以只使用外键吗????
传递依赖是 A → B → C 形式的依赖,其中 A 是键,B 是 non-key 属性。我想你在这里指的传递依赖是 Countt → instituteCode → instituteName.
但是,您说"institute code repeats for different institutes",这似乎表明instituteCode 和instituteName 之间不是 依赖关系。依赖性要求对于行列式(left-hand 侧)的任何给定值,从属(right-hand 侧)属性恰好有一个可能值。大概如果相同的 instituteCode 可以用于不同的机构,那么那些不同的机构可能有不同的名称?如果是这样,那么传递依赖 Countt → instituteCode → instituteName 不成立,并且在相同的 table 中具有这些属性不会违反 3NF。这只是我的假设;您需要自己找出实际适用的依赖项。
如果 Countt → instituteCode → instituteName 成立,那么您可以为 instituteCode 和 instututeName 创建一个新关系,其中 instituteCode 是主键(因为 instituteCode → instituteName)。
is it necessary to create my own unique ID for this newly created
table
没有。规范化从不需要创建新属性。
所以我正在规范化这个 table。我开始意识到存在传递依赖。因为学院名称和城市取决于学院代码。所以我必须创建新的 table 并将这些列移到那里。但问题是,不同研究所的研究所代码重复。那么这个新创建的tablet是否需要自己创建一个唯一的ID呢?或者我可以只使用外键吗????
传递依赖是 A → B → C 形式的依赖,其中 A 是键,B 是 non-key 属性。我想你在这里指的传递依赖是 Countt → instituteCode → instituteName.
但是,您说"institute code repeats for different institutes",这似乎表明instituteCode 和instituteName 之间不是 依赖关系。依赖性要求对于行列式(left-hand 侧)的任何给定值,从属(right-hand 侧)属性恰好有一个可能值。大概如果相同的 instituteCode 可以用于不同的机构,那么那些不同的机构可能有不同的名称?如果是这样,那么传递依赖 Countt → instituteCode → instituteName 不成立,并且在相同的 table 中具有这些属性不会违反 3NF。这只是我的假设;您需要自己找出实际适用的依赖项。
如果 Countt → instituteCode → instituteName 成立,那么您可以为 instituteCode 和 instututeName 创建一个新关系,其中 instituteCode 是主键(因为 instituteCode → instituteName)。
is it necessary to create my own unique ID for this newly created table
没有。规范化从不需要创建新属性。