2012-10-21 81 views
0

一位朋友正在開發一個網站,並且必須使用SQL製作一個數據庫。他問你爲什麼需要「has-a」或「is-a」關係,因爲你可以把一個實體集的主鍵放在另一個適當的實體集中(反之亦然)以找到關係。爲什麼關係集很重要?

我無法回答這個問題,因爲我剛纔被告知關係集只是數據庫的工作原理。

編輯:我不想進入正常化。他指出,信息在關係集中被複制。

回答

1

你的問題混合了兩個不同的抽象層次,即概念層面和邏輯層面。

在概念層面,人們有興趣描述建議數據庫的信息需求。這樣做很有用,而不會將描述傾向於一種解決方案或另一種解決方案。一個對此有用的模型是實體關係(ER)模型。在這個模型中,主題被分解爲實體(主體)和這些實體之間的關係。所有數據都被視爲描述其中一個實體或其中一個關係的某個方面。

「Is-a」和「has-a」關係在這個抽象層次上是相關的。在這個層面上,關係被識別出來,但沒有被執行。

在創建數據庫的概念模型之後,但是在創建數據庫本身之前,通過邏輯設計階段,導致數據庫的邏輯模型很有用。如果數據庫是關係數據庫,那麼使邏輯模型成爲關係數據庫非常有用。關係模型是下一個抽象層次。

這是主鍵和外鍵進來的地方。這些鍵實現了在概念階段確定的關係。這就是關係模型如何實現關係。在這個階段,你會涉及設計問題,如聯結表,表格組成和規範化。

除了概念級別和邏輯級別,還有物理級別和腳本級別。但這些不在你的問題範圍之內。

這兩種關係是要解決的問題的特徵。對主鍵的外鍵引用是所提出的解決方案的特徵。