2016-12-31 34 views
0

我需要正常化的關係,使其在第一範式。我知道如何規範化多值屬性,它只是給我提供問題的複合屬性。例如,其中一個複合屬性是'Employee-Address',並且正如預期的那樣,它包含'House-Number','Street-Name'等子屬性。如何正常化複合屬性?

如何規範化?這些複合屬性不是多值/複雜的,即單個員工可能只有1個地址。我也相信'employee-id'屬性可以用來識別地址的所有子屬性。是否像分解複合屬性並將每個子屬性存儲爲關係中的屬性一樣簡單?這樣所有的子屬性將變得簡單,單一和存儲值?

有人抱怨之前;這個問題與大學作業有關,我已經瀏覽了所有推薦的教科書(和互聯網)的答案,我沒有找到答案。當然,我想要一個解決方案來解決我的問題,但是如果你願意給出你自己的例子,那就太好了。任何意見或指針非常感謝!

+0

在現實世界中,地址被存儲在一個表中的單個行,與其他領域存儲在一個串中的街道地址,然後在其它位置(如郵政編碼)。有時,功能會被提取到其他列(公寓號碼)中,但地址行本身並未填充其他ID,除了可能是更高級別的地理位置。 –

+0

@戈登我同意。我唯一的猜測是地址是一個複合時尚是爲了任務分級的目的!我個人沒有看到如何刪除複合「括號」,並將它們分別存儲在不同的字段中會產生什麼影響。 –

+0

「正常化」是什麼意思?這些&相關術語用於不同含義(並且經常被濫用),並且不清楚您在這裏的含義。什麼是輸入和輸出應該是什麼?你的texbook是什麼?關於「規範化」的重新混淆見[this](http://stackoverflow.com/a/24038895/3404097)。另外[this](http://stackoverflow.com/a/41395340/3404097)。 – philipxy

回答

0

1NF的唯一要求是,每個屬性僅包含單個「原子」的值。

如果問題表明,該地址是一個複合值和地址的每個部分是一個獨立的子值,那麼你應該爲每個子值的屬性。

你可能想存儲在其自己的屬性地址的每個部分,所以你可以對其進行索引和高效地運行之類的查詢「發現在紐約市的每個人。」

+0

謝謝你,很有道理。順便說一句,關係有一個多值屬性,我決定我要爲它創建一個單獨的關係。爲此,我必須將原始關係的主關鍵字與多值屬性本身結合起來,以創建新關係的主關鍵字。原始關係的主鍵是複合的,這樣好嗎?謝謝你,新年快樂! –

+0

我不知道我明白你在說什麼。你正在爲地址創建一個單獨的關係,或類似的東西?是否合理取決於原始關係中的內容。是「員工」還是其他? –

+0

對不起,我會澄清。我所指的多值屬性不是地址,它是一個名爲'員工資格'的地址。原始關係映射非常差,它包含數據庫的所有屬性,從客戶數據到員工數據的所有內容,甚至包含產品信息。這個關係是由任務設定的,如果我可以在1NF之前,我會改變它。基本上,當創建一個單獨的資格關係時,原始關係的組合關鍵字會起作用嗎?原來的關係PK不包含員工編號,但教科書說你必須使用PK。 –

相關問題