簡體   English   中英

在ER圖中,我如何知道何時使用一個或多個?

[英]In an ER Diagram, how do I know when you use one or many?

我試圖了解ER圖中的基數,從訪問城市的訪客的簡單示例開始。 考慮到這一點,你可以讓許多游客訪問許多城市,所以我繪制了如圖所示的ER圖。 訪問者是具有名稱等屬性的實體,訪問權限是與VisitorID和CityID作為主鍵的關系,其他屬性如日期,城市是實體,具有國家等屬性。 這意味着0到很多游客可以訪問0到很多城市。 這是否意味着在具有此ER圖的數據庫中,我會有三個表? 一個用於訪客,一個用於城市,一個用於VisitCity? 我是否正確理解了基數?

ER圖

對,那是正確的。 您的圖紙顯示0到多個訪客可以訪問0到多個城市。 所以在這種情況下你是對的。 如你所說,你已經命名了你的中間訪問城市。

但是,假設您需要有一個數據庫,訪問者只能訪問1個城市。 你會有一對多的關系。 這意味着您不需要使用中間表。 所以你最終只會得到2張桌子。

僅僅因為像“許多游客可以訪問許多城市”這樣的邏輯並不是真的。 要求是制定這些規則的原因(由客戶指定的項目說明他/她需要什么。或者如果你還在學校,這將是分配給你的論文)。 因此,在創建數據庫時,您必須非常仔細地聽取/閱讀要求,以確定何時使用什么。 但是從閱讀你所說的話我認為你正走在正確的軌道上:)

是的,您正確描述了關系。 N:M基數需要第三張表。

訪問也可以包含其他信息。 例如,由於訪問者不能同時在兩個地方,因此可能存在相關的時間段。

訪客可以與城市建立另一種關系 - 例如,具有不同基數的born_in ,即N:1 ,意味着許多人出生在同一個城市(但每個人只出生在一個城市!)為此, born_in將屬於游客。

是的,這是完全正確的。

如果您希望將數據庫保持在1NF,那么每當您面對N x N基數時,必須使用兩個實體的密鑰創建新表。

關於規范化的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM