將數據模型轉換成數據庫設計的相關問題:
創建表的聯系
強實體聯系
把一個表的主鍵作為另一張表的外鍵為了強調最大粒度是應該把外鍵設置成候選鍵
N強實體聯系
把的那一段的表(父表)的鍵設置成對應N的那一端的表(子表)的外鍵
NM強實體聯系
建立只包含外鍵的第三張交關系表這個表中每一列都是主鍵的一部分每一列都對應於其他表外鍵因此他總是ID依賴於它的兩個父表
注意這張交關系表中必須要有父表中的行
使用ID依賴實體聯系的其他方法
關聯聯系
這種聯系只針對聯系本身而不是實體的屬性只需建立一張關聯表ID依賴於兩張父表並包含父表的聯系屬性如公司和貨物的Price
注意關聯表和交關系表的最重要區別是關聯表含有用戶數據而交關系表則沒有
多值屬性
用ID依賴實體代表父表所含有的多值組合如CompanyName的(Contact PhoneNumber)PhoneNumber可含有多個值CompanyName在新表中將既是主鍵又是外鍵
原型/實例模式
當一個ID依賴實體的父實體使用強制關鍵字時ID依賴實體也使用自己的強制關鍵字得到的結果是弱實體擔不是ID依賴實體
混合實體聯系
這種設計既包含強實體設計也包含ID依賴實體的設計
對HASA聯系進行轉換時總的原則是把父表的鍵放到子表中通常把對應的父表放到子表中NM聯系先轉換成兩個N聯系而對於標識聯系父表的鍵已經在子表中了所以什麼都不用做對於混合聯系中的非標識聯系父表的鍵放在子表中
子類型 ISA聯系
子表和父表的主鍵相同且子表的主鍵也是外鍵
遞歸聯系
在表中創建一個外鍵並設為候選鍵指向父表此表中父表和子表均是其自身
N
通過把父表的鍵放到子表中來標識N遞歸聯系
NM
創建一個交關系表把它分解成兩個N聯系
From:http://tw.wingwit.com/Article/program/SQL/201311/16199.html