簡體   English   中英

如何在mysql工作台中設計子類型?

[英]How to design subtype in mysql workbench?

我正在開發一個應該建立用戶表的項目。 每個用戶都有一些用戶信息,例如用戶名和密碼等。 另外,“用戶類型”:新用戶是“新手”,6個月用戶是“常規”,1歲用戶是“領導者”。 這三種類型的值“ karma”用於存儲其分數。 還有“主持人”類型和“管理員”類型,它們具有緊急聯系電話,而不是“因果報應”。 前者也有學位的價值。

這是我的模特

到目前為止,這是我的模型,但是在設計“用戶類型”時遇到了問題。 我正在考慮一個超類型/子類型解決方案,但是似乎我無法在mysql工作台上做到這一點。 有替代設計嗎? 謝謝!

是的,MySQL Workbench無法為繼承建模,因為MySQL始終不支持這種繼承。 但是為什么要這么復雜? 只需將類型定義為用戶表上的屬性(字段)即可。 使用枚舉來限制可接受的值。 您還可以定義一個UserType表,該屬性與該表具有1:n的關系,並且可以包含每種用戶類型的其他信息。

附帶說明:您為該地址添加的其他表格似乎過大了。 多個用戶住在同一地址的頻率是多少? 這種情況非常罕見,您也可以輕松地將地址存儲在用戶表中,而不必擔心會出現嚴重的非規范化。 如果合適的話,您可以使用國家和城市表以及從用戶表到用戶表的關系進行規范化。 但是,user_has_postalAddress表似乎確實是多余的。

抱歉,我回復了一個舊帖子,但是我正嘗試為Mac找到一個不錯的免費ERD工具,而MySQL Workbench是我找到的最好的工具。

上面的答案說MySQL不支持超級/子類型。 我真的不同意那個主張。 IMO,這是MySQL Workbench的限制。 可以將super / sub類型簡單地建模為具有非規范化規則的1:N識別關系。 非規范化規則定義邏輯模型和物理模型之間的差異。 我沒有看到在MySQL工作台中對物理模型進行建模的任何方法。

同樣,使用地址,地址和用戶在傳統上將是兩個不同的實體,而ERD工具應添加的值是能夠更改它們之間的關系。 原始帖子中的N:M或答復中的N:M(帶有1:1標識),帶有非規范化規則,指示應將地址字段規范化為物理模型中的User實體。 甚至是1:N標識是否要提供送貨地址和帳單地址。

因此,我斷言超級/子類型建模不是MySQL的限制,而是MySQL Workbench的限制。 關系應支持上滾和下滾非規范化規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM