数据库系统笔记4: ER模型
生活随笔
收集整理的這篇文章主要介紹了
数据库系统笔记4: ER模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本概念
- Entity(實體):對象,如學生、教師,用方形表示
- Entity Set(實體集):類
- 一個實體集必須至少有一個非主鍵的屬性
- 或者它是多對一/多對多關系中的“多”
- Attribute(屬性):如學號、姓名,用圓形表示
- Relationship(關系):兩個實體間的關系,用棱形表示
關系
- “一對一”關系可以看作是“多對一”關系的特殊情況
- 注意在“一”的實體集合內可以有空的,如one-one中的b,如果實體集合內每一個元素都有且僅有一個實體與它對應,則該“一”用圓箭頭表示
子類
- 繼承關系:用三角形表示
- 子類繼承父類的所有屬性,還可以有自己的屬性
Constraint 約束
Entity Integrity 實體完整性
- 每個實體集必須有一個主鍵,不可以為空,不可以重復
- 主鍵用下劃線表示
- 主鍵可以是一個或多個屬性
- 有繼承關系的實體,主鍵必須在父類上,該主鍵是父類和所有子類的主鍵
Referential Integrity 參照完整性
- foreign key(外鍵):一張表中的某個屬性是參照另一張表的主鍵,則稱該屬性為外鍵
- 外鍵必須取參照關系中的某個主鍵值,或者為空
Weak Entity Set 弱實體集
- 確定該實體集需要依賴該實體集的主鍵和另一個實體集的主鍵,那么該實體集是一個弱實體集
- 弱實體集用雙邊方形表示,兩個實體集之間的關系用雙邊棱形表示
- 兩個實體集之間的關系稱為支持聯系
?設計原則
- 避免冗余
- 當增加一個屬性就可以時,不要增加一個實體集
- 小心使用弱實體集
ER模型轉化為關系模型
關系的轉化
- 關系的表中,屬性有其連接的實體集合的主鍵和關系上的屬性
- 在“多對一”關系中,可以把關系的表合并到“多”的一方。如在下圖中,我們不需要額外增加一張表Favorite(drinker, beer),而是合并到Drinkers表中,Drinkers(name, addr, favorite_beer)
- ?在“多對多”關系中,如果按照上述方法合并,會造成冗余
弱實體集的轉化
- 對于弱實體集,它的屬性還需要包括支持實體集的主鍵
- 不需要為支持聯系額外設置一張表
子類的轉化
- OO方式:子類繼承父類的所有屬性,這樣可能造成冗余
- Product(name, price, category, manufacturer)
- EducationalProduct(name, price, category, manufacturer, ageGroup, topic)
- SoftwareProduct(name, price, category, manufacturer, platforms, requiredMemory)
- EducationalSoftwareProduct(name, price, category, manufacturer,ageGroup, topic, platforms, requiredMemory)
- ER方式:子類只繼承父類的主鍵,這樣避免了冗余,但查詢的時候可能需要多表查詢
- Product(name, price, category, manufacturer)
- EducationalProduct(name, ageGroup, topic)
- SoftwareProduct(name, platforms, requiredMemory)
- 空值方式:只有一張表,允許出現空值,但浪費空間
- Product(name, price, category, manufacturer,ageGroup, topic, platforms, requiredMemory)
總結
以上是生活随笔為你收集整理的数据库系统笔记4: ER模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: avada5.5.2汉化版更新到avad
- 下一篇: 978. Longest Turbule