2017-05-02 89 views
1

我有兩個表關係數據建模

客戶(CID(PK),姓名,電話)

訂單(OID,CID(FK),日期,金額)

客戶可有很多訂單,但每個訂單隻屬於一個客戶。

問題是它們之間有什麼關係。這是一對多的識別關係還是非識別關係?

由於訂單不能存在沒有一個客戶,使其成爲一個識別關係?

所以我應該在訂單表的主鍵中包含cid或不?

該數據庫不能沒有任何訂單的客戶。

+0

您使用哪種框架和語言? –

+0

我正在使用Oracle和SQL開發人員數據建模師,但這確實很重要嗎?我認爲這應該是一種識別關係,因爲沒有客戶就不能存在訂單。 –

回答

1

識別關係不是由兩個實體集之間的存在依賴關係決定的。存在依賴通常意味着實體集必須完全參與到關係中。

識別關係意​​味着一個實體集取決於另一個實體集。依賴實體集被稱爲弱實體集,因爲它不能單獨由其自己的屬性來標識。

在你的例子中,我假設oid是一個自動遞增的列。這使得它成爲識別Order的替代關鍵字,並且Order然後是一個常規實體集合,因爲它可以通過它自己的屬性來識別。這意味着兩個實體集合之間的關係不能確定。

該關係由一對欄(oid, cid)表示。 oid應該是PK,以便每個訂單(oid)只能與一個客戶(cid)關聯。但是,cid沒有唯一的限制,這意味着每個cid可以與多個oid關聯。因此,這是一種一對多的關係。

也看到我的回答以下問題:is optionality (mandatory, optional) and participation (total, partial) are same?