0
假如我是建模數據庫和我有一個實體設備公司,它可以是一個工作站或外圍,翻譯成SQL的時候,什麼是最好的方法是什麼? 設備表與常用屬性和其他兩個?或者只是兩個子表?轉化agregation模型爲sql
假如我是建模數據庫和我有一個實體設備公司,它可以是一個工作站或外圍,翻譯成SQL的時候,什麼是最好的方法是什麼? 設備表與常用屬性和其他兩個?或者只是兩個子表?轉化agregation模型爲sql
您可以使用通用表,垂直分區或水平分區。通用表具有所有屬性和附加類型屬性。該屬性表示您的實體具有哪種類型。您不具有特殊類型的屬性是NULL。在您的例子,你可以有一個表:
Equipment(e_id, attr_general,attr_workstation,attr_peripheral,type)
有了以下行:
e_id | attr_general | attr_workstation | attr_peripheral | type
---------------------------------------------------------------
1 | valueG | valueW | NULL | 'W'
2 | valueG | NULL | valueP | 'P'
如果使用垂直分區您的所有類映射到表,並與您引用它們基礎機構:
Equipment(e_id,attr_general) -> PK is e_id
Workstation(w_id,attr_workstation) -> PK,FK w_id where FK referencing to e_id
Peripheral(p_id,attr_peripheral) -> PK,FK p_id where FK referencing to e_id
如果您使用水平分區,您再次參考您的基本實體,但您也從每個基本實體獲取所有 屬性:
Equipment(e_id,attr_general) -> PK is e_id
Workstation(w_id,attr_general, attr_workstation) -> PK,FK w_id where FK referencing to e_id
Peripheral(p_id,attr_general,attr_peripheral) -> PK,FK p_id where FK referencing to e_id
我個人對不具有許多不同屬性的實體使用通用表。如果說你有太多不同的屬性,我會避免這種類型,因爲你會有很多NULL字段。
希望能幫助你!
'Workstation'和'Peripheral'有什麼不同? –
感謝這個問題,我是關於問,他們之間的區別是**工作站**有一個用戶,但** Peripheral **可以有多個(例如共享打印機)。 – elaich