2015-05-19 38 views
0

鑑於關係Company(CompanyRefNumber,Name,City,Country,Turnover,Year)標準化步驟2和3

爲了實現第一範式,複合屬性Location已經被分解爲城市和國家。

鑑於一家公司可以擁有多個地點,您對下一個分解步驟提出了什麼建議,並最終完成了分解以實現第三範式。

我嘗試

下分解步驟

公司(CompanyRefNumber,名稱,營業額,年) 公司(CompanyRefNumber,城市,國家)

第三範式

公司(CompanyRefNumber,Name,Turnover,Year )

公司(CompanyRefNumber,城市)

公司(CompanyRefNumber,國家或地區)

+0

您的上一個版本是錯誤的,因爲您無法確定哪個城市位於哪個國家/地區。 – Barmar

+0

只是因爲正常的形式被編號,所以人們不應該依次通過它們。無論如何,規範化爲3NF需要識別功能依賴關係,然後是候選鍵。 – philipxy

回答

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的值,因此符合第三範式,非主鍵本質上不能依賴於任何其他非主鍵