再問一個表的設計問題


網站有一個表A,專門記錄客戶的歷史交易記錄,這些歷史記錄一共分為幾個類型,每個類型需要記錄各自必要的屬性,如下:

表A:
ID 類型 總屬性1 總屬性2 總屬性3 屬性A1 屬性A2 屬性A3 屬性B1 屬性B2 屬性B3 屬性C1 屬性C2 屬性C3...

實際情況就是:

對於所有類型的記錄,都會至少用到總屬性
對於A類型的記錄,還至少需要用到A1-A3的屬性
對於B類型的記錄,還至少需要用到B1-B3的屬性
對於C類型的記錄,還至少需要用到C1-C3的屬性

同時,A類型的記錄還可能需要用到其他類型記錄的某些屬性

表A一共大概有20個字段

那么如何設計這個表比較好呢?我現在就是只有一個表A,在插入記錄的時候根據類型的判斷,寫入相應的屬性,然后其他不需要的屬性就設置為NULL,讀取記錄的時候也是根據類型的不同,然后取要用的屬性

我當初這樣設計主要考慮到總字段20個左右不算多,都裝到同一個表,取記錄的時候也不需要多表連接,然后對所有記錄的顯示排序之類也方便,但是我不知道這樣設計是否科學,是否有必要根據不同類型設計出不同的表來,類似於將一般化進行特殊化的處理那樣,這樣做考慮到以后如果有功能上的擴展是不是會更方便點?

7 个解决方案

#1


符合范式都是科學的,何必要根據類型放到不同的表中呢

#2


該回復於2011-04-25 08:51:19被版主刪除

#3


不符合范式,也需要看具體的應用場景,反范式的設計也是需要的,就象進銷存中建立一個現存量表

#4


是啊,我也知道在實際應用中,有時候需要違反范式,用空間換效率,但是我還是來問以下有沒有更好的辦法了……這個表要拆的話確實反而不方便,就目前的應用來說 搞不好一個表里面只有3,4個屬性,而且表多了也不好

#5


拆太多表,維護不好。

#6


如果拆分,每個表的字段不多,查詢時反而更麻煩

#7


感謝各位告訴我你們的看法,這貼先結

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com