您好,登錄后才能下訂單哦!
這篇文章主要介紹sql設計表結構的常見問題有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
簡單說就是有個表,字段經常變動,表結構該怎么設計?
例子:入金訂單表(已經有29個字段)。因業務發展,入金訂單有了拓展業務,有了三個拓展業務,paygo入金訂單,自營入金訂單,話費入金訂單。paygo入金,需要增加4個字段(ADDRESS,LONGITUDE,LATITUDE,DEVICE_NO)。自營入金拓展需要增加7個字段(COUNTER_NO,BRANCH_NO,BUSINESS_CREATE_TIME,BUSINESS_ORDER_NO,BRANCH_NAME,SERVICE_FEE,ORDER_FEE)。話費入金訂單需要增加1個字段。
不知道我說明白這件事情了嗎?就是說,一個表經常增加字段,增加的字段又不是所有數據都用到。
暫且稱之為key-value方法。Ext_key存儲增加字段名,ext_value存儲字段值。
這個設計帶來了很大靈活性,但是用起來,編寫sql就不容易。設計到行轉列,列轉行。維護擴展起來不會方便。
來看下其中一個業務的sql:
如果統計的話會更復雜了。后期維護也會困難。
再增加一個訂單擴展表1,把經常變動的擴展字段放到擴展表。這樣設計之后,可以想到,就變成了訂單表和擴展表的簡單join了,sql也更加清爽了。
(1)經常改表結構,會不會鎖表?當然會。但是目前oracle,包括mysql(5.7),增加表字段,增加字段速度很快。
(2)數據很多冗余。可以想到,paygo入金和自營入金相互用不到對方的字段,對應列就是空數據。空數據占用空間不大,我覺得可以忽略這個問題。
(3)假設這樣一種情況,paygo入金訂單擴展有1千萬數據,自營入金訂單擴展有500數據,話費入金訂單擴展500條數據,paygo訂單擴展表顯得很冗余哦。遇到這種問題我覺得可以拆分:入金訂單擴展表,paygo入金訂單擴展表。這樣編寫sql的時候,也是非常簡單的3表join.
以上是“sql設計表結構的常見問題有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。