2013-04-02 40 views
1

我讀介紹由萊瑪克里斯南寫入數據庫管理人員系統,並有ISA關係我面臨以下ER圖:在DBMS

enter image description here

在那裏,它說,

"For example, we might identify a subset of employees as Senior Emps. We can 
modify Figure 2.12 to reflect this change by adding a second ISA node as a 
child of Employees and making Senior Emps a child of this node." 

我問題是,爲什麼我們需要另一個ISA節點?爲什麼我們不把這個新實體添加到當前的ISA節點?這很重要嗎?

感謝

+2

可能是因爲來自任何給定的ISA的選擇必須是相互排斥的。員工是小時工或合同工。折騰在高級,它不是第三個分支,它是一種完全不同類型的ISA關係。 – NealB

+0

@NealB所以你說的是,由於小時工和合同僱員有些相關,我們使用相同的ISA節點,但是爲SeniorEmployees使用相同的ISA節點還是錯誤的,還是僅僅爲了可讀性而使用另一個ISA節點呢? – yrazlik

回答

2

「我們不能使用現有的ISA節點來創建這種關係嗎?」 (免責聲明:所有這些內容都有點兒舌頭上,ER從來沒有真正意圖在邏輯上完整和精確的表現力,而且還有很多不同的ER方言,所以很難絕對某些特定的方言試圖表達的東西,以及如何以及它不表示什麼)

你會失去什麼是各種IS_A「子實體」之間排他性的特性。您提供的示例設計大概是爲了明確記錄員工永遠不能同時爲hourly_emp和contract_emp的概念。

如果員工既可以是「高級」也可以是「合同」,他們之間沒有排他性,如果ER方言的IS_A三角形意圖表達這種排他性,那麼您的解決方案將是錯誤的。

但是(重複)請注意,這實際上沒有一個石頭。所有這些都取決於您的特定ER方言中使用的符號的意圖語義。

0

您將創建一個帶有ISA關係的任何實體的原因是爲了給新實體的附加屬性。

就像在面向對象建模中一樣,您將創建一個新的子類,以便新類可以具有與其超類相關的其他數據或附加方法。

所以這個例子的含義是高級僱員應該有一些新的專欄,例如存儲多年的服務或獎勵。

如果沒有新的屬性對於SeniorEmployees是唯一的,那麼我只是將它們視爲與普通Employees相同,不需要創建新的子表。

+0

謝謝,但實際上這不是我所要求的。讓我們說高級僱員有新的屬性,我們將創建一個ISA關係。我想知道的是,爲什麼我們需要另一個ISA節點?我們不能使用現有的ISA節點來創建這種關係嗎? – yrazlik

0

該模型存在問題。如果某人同時是一家公司的兼職員工(兼職)​​和一名子公司的兼職員工(兼職)​​,那該怎麼辦?哦,它破碎了。

問題是一個人不是員工。一個人是與其他方有零或更多關係的人。

看看派對模特(Silverston/Hay/Fowler)。

1

在我看來,當前的ISA節點(即上圖中)決定了員工如何獲得報酬,因此只需將另一個節點添加到當前節點並沒有多大意義,因爲SeniorEmployees可以是小時或合同。

這有道理嗎?