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

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