给定关系public static void sortAndRemoveDups(List<Integer>listToFix)
{
Set<Integer> listToFix1 = new HashSet<>(listToFix);
for(Integer i : listToFix1){
listToFix.removeAll(i);
listToFix.add(i);
}
System.out.println(listToFix);
}
。
为了获得第一范式,复合属性Location已被分解为City和Country。
鉴于公司可以拥有多个地点,您对下一个分解步骤的建议是什么,并最终确定分解以达到第三范式。
我的尝试
下一步分解步骤
公司(CompanyRefNumber,名称,周转,年) 公司(CompanyRefNumber,城市,国家)
第三范式
公司(CompanyRefNumber,名称,周转,年)
公司(CompanyRefNumber,城市)
公司(CompanyRefNumber,国家或地区)
答案 0 :(得分:0)
这是一个例子
ah oh
|
v
--------------------------------------
1, Google, Mountain View, US, 1B, 2014
1, Google, Seattle, US, 10M, 2014
1, Google, London, UK, 50M, 2013
2, Bloomberg, New York, US, 100M, 2014
2, Bloomberg, New York, US, 90M, 2013
主键(CompanyRefNumber, City, Country, Year)
可唯一标识每条记录。
但是,我们发现公司Name
仅依赖于CompanyRefNumber
不符合第二范式的非主要密钥不能依赖于主键的任何子集。
为了规范化,我们可以创建一个新关系CompanyInfo
,如下所示:
--------------------------------------
1, Google
2, Bloomberg
此时,非主要属性仅为turnover
,显然没有其他非主要属性来确定turnover
的值,因此符合第3范式非主键本质上不能依赖任何其他非主键。