2016-04-24 60 views
0

IMAGE初學者數據庫設計 - 弱實體

如果我有一個像上面的圖片設計,我想有一個名爲「最喜歡的水果」另一個表,對每個人只選擇一個水果,會是有意義的將它作爲水果表的一個弱實體與pk (personid UNIQUE, fruitid, artificialid UNIQUE)

+3

如果你每個人只有一個喜歡的水果,你可以使用'person'表本身存儲這些信息。如果你仍然需要一個單獨的表格,'personid'列本身(或者'personid'和'fruitid'的組合)應該足以唯一地標識表格的每一行,並且你不需要'artificialid' 。 – pgngp

+0

在這種情況下,「最喜歡的水果」應該是「人」和「水果」之間的關係,而不是弱實體。 – reaanb

+0

可以說我有一個問題,我添加了一個名爲favouritefruit的屬性作爲fk指向水果中的fruitid,但水果桌中沒有包含fruitid的元組。這不會導致後退參考錯誤?此外,每個人必須只有1個最喜歡的水果(不多不少)。此外,爲了進一步澄清,水果表顯示了該人擁有的水果。 – QuantumKomputing

回答

0

觀看/敬請關注。即使在分區關係中(「ISA」關係),實體也只存在於圖表中,如果它們具有屬性/屬性的話。

[...]我想呼籲另一個表 「最喜歡的水果[...]」

也要小心。在概念模型中,沒有表格,而是實體。就像實體一樣,關係也可以變成表格。在這個階段,您可能會困惑地使用這些術語。

這就像用戶reaanb在評論中說的。關係/關係表達了​​這一點:事物之間的關係(在實例中)。你需要記住爲什麼你要在圖表中建立關係。總是問自己:

爲什麼這種關係存在?爲什麼我在X和Y之間創建這個?我真的需要堅持嗎?

您可以毫無問題地在兩個實體之間創建多個關係,因爲它們表示不同的事物(關係)。

現在。如果你知道用戶擁有最喜歡的水果,那麼你知道這兩個實體在某種程度上是相關的。因此,毫無疑問,我們有一種關係。

就你而言,如果用戶總是擁有最喜歡的水果,那麼我們有一個1-N關係,其中N部分在用戶中,因爲水果可以是許多用戶的最愛。另一方面,如果用戶可能有也可能沒有喜歡的水果,並且你不想要一個可爲空值的字段,我們必須定義一個N-N關係。分解後,這種關係將成爲表格。在這種情況下,您將只有一個只有兩列的表格。這兩個表是「用戶」和「水果」這兩個表的外鍵,它們也將成爲此表上的複合主鍵。因爲不可能重複記錄,在這種情況下,多個用戶擁有最喜歡的水果,請將「用戶」列設置爲唯一。

如果您有任何問題,請評論,我會回答。