目前在做一個數據管理系統的數據庫表設計,但是遇到了這樣一個情況:比如說有兩類數據,一類是分組 group,一類是成員 member;然后每一個 group 還有很多其他信息(比如歸屬地、類別等等),每一個 member 還有很多其他信息(比如姓名、性別等等)。group 和 member 是多對多的,也就是說,一個 group 可以有多個 member、一個 member 可以對應多個 group。所以我目前的想法是設計成三個表:group 信息表,主鍵 groupIdmember 信息表,主鍵 memberId鏈接表,有 groupId 和 memberId 兩個字段,用于存儲對應關系。但是實際上,除了 member,group 還會和事件 event 也是多對多的關系、還有等等其他的信息,總之各種多對多。所以這樣造成的結果是有很多有兩個字段(不算表的自增id)的鏈接表,這樣表特別多,維護起來有點麻煩。而且這樣的話還總是需要設置 on delete cascade 等等,有點麻煩。不知道自己所做的方式是不是正確的方式,沒有數據庫專業人員輔助自己設計這么多表也有點慌...以及這種情況有沒有稍微清晰的一點方式呢?以及有沒有什么隱患?
1 回答

www說
TA貢獻1775條經驗 獲得超8個贊
我的建議是
1.去掉on delete cascade,使用程序關聯刪除,因為使用on delete cascade會消耗數據庫資源
2.如果覺得表特別多,那數量究竟是又多少呢?能不能使用ER圖的形式標示出來,不管是DBA或者是其他開發人員心里都有底
3.是不是真的有那么多多對多的關系呢?其實有些需求應該是莫須有的,建議review一下是否真有那么多多對多的關系。
舉個例子,只是舉個例子:
從一個公司的層面上來說,不會存在一個人在兩個部門的情況
那在表設計的時候完全不需要考慮多對多的情況,直接一對一就好了。
添加回答
舉報
0/150
提交
取消