如題,比如系統中有如下表:
1、學生表
2、學生和聯系方式關聯表
3、聯系方式表
4、學生和班級關聯表
5、班級表
6、班級和課程關聯表
7、課程表
。。。
我們先不管其中的關聯表是否符合實際意義,關系是否合理,也不管是一對多還是多對多。反正就是有很多關聯。
那么:
表2:學生和聯系方式關聯表,應該有3個欄位:
欄位1:關聯ID
欄位2:學生ID
欄位3:聯系方式ID
表4:學生和班級關聯表,同理:
欄位1:關聯ID
欄位2:學生ID
欄位3:班級ID
表6:班級和課程關聯表,同理:
欄位1:關聯ID
欄位2:班級ID
欄位3:課程ID
。。。
如果系統中很多很多這種關聯關系,每種關聯關系都要建立一個這種表,到最后可能就有很多的關聯表。
我想的是能不能將關聯表抽離出來,形成一個公共的關聯表,通過一個型別欄位維護是哪種資料的關聯。關聯關系通過代碼和檔案控制。
得到的結果就類似:
公共關聯表:
欄位1:關聯ID
欄位2:源ID
欄位3:目標ID
欄位4:型別
欄位5:備注
。。。
公共關聯表型別說明表(可選,類似檔案):
欄位1:說明ID
欄位2:型別
欄位3:說明(說明源ID和目標ID的關系)
。。。
如果抽離成這種結構,所有關聯關系都會走這個表,維護起來稍微好點,也能提供統一API處理這個關聯表的資料。
但是這種方式也有不好的地方,就是如果關系非常復雜,忘記寫關聯說明了,會比較容易亂、不容易擴展、資料多了會影響效率等。
想要請教一下大家,對這兩種方式怎么看呢?如果是您選的話,會怎么選呢?
uj5u.com熱心網友回復:
行不通,關聯關系有時候不只一個。用你的例子擴展來說,再加一個學期維度你要怎么辦?每個學生每個學期在不同的班級,選不同的課,這種公共關聯表的局限性太大了,實際業務中很可能要更麻煩。一般能寫成一對一的都是放一張表里,放不下就用關聯表,不用想的那么復雜。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/24645.html
標籤:開發
上一篇:plsqldevelop中oracle的索引按f5后怎么看,求大佬上圖指點
下一篇:Oracle限定查詢問題
