溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些

發(fā)布時(shí)間:2021-10-26 17:15:44 來源:億速云 閱讀:292 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1.sql改寫遇到表字段經(jīng)常要增加的業(yè)務(wù)怎么設(shè)計(jì)表結(jié)構(gòu)?

2.業(yè)務(wù)問題是什么?

簡(jiǎn)單說就是有個(gè)表,字段經(jīng)常變動(dòng),表結(jié)構(gòu)該怎么設(shè)計(jì)?

例子:入金訂單表(已經(jīng)有29個(gè)字段)。因業(yè)務(wù)發(fā)展,入金訂單有了拓展業(yè)務(wù),有了三個(gè)拓展業(yè)務(wù),paygo入金訂單,自營(yíng)入金訂單,話費(fèi)入金訂單。paygo入金,需要增加4個(gè)字段(ADDRESS,LONGITUDE,LATITUDE,DEVICE_NO)。自營(yíng)入金拓展需要增加7個(gè)字段(COUNTER_NO,BRANCH_NO,BUSINESS_CREATE_TIME,BUSINESS_ORDER_NO,BRANCH_NAME,SERVICE_FEE,ORDER_FEE)。話費(fèi)入金訂單需要增加1個(gè)字段。

不知道我說明白這件事情了嗎?就是說,一個(gè)表經(jīng)常增加字段,增加的字段又不是所有數(shù)據(jù)都用到。

3.表結(jié)構(gòu)是如何設(shè)計(jì)的?

暫且稱之為key-value方法。Ext_key存儲(chǔ)增加字段名,ext_value存儲(chǔ)字段值。

sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些

sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些

4.key-value設(shè)計(jì)帶來的優(yōu)點(diǎn)和缺點(diǎn)

sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些

這個(gè)設(shè)計(jì)帶來了很大靈活性,但是用起來,編寫sql就不容易。設(shè)計(jì)到行轉(zhuǎn)列,列轉(zhuǎn)行。維護(hù)擴(kuò)展起來不會(huì)方便。

來看下其中一個(gè)業(yè)務(wù)的sql:

如果統(tǒng)計(jì)的話會(huì)更復(fù)雜了。后期維護(hù)也會(huì)困難。

5.另外一種表結(jié)構(gòu)設(shè)計(jì),暫且稱之為擴(kuò)展表

再增加一個(gè)訂單擴(kuò)展表1,把經(jīng)常變動(dòng)的擴(kuò)展字段放到擴(kuò)展表。這樣設(shè)計(jì)之后,可以想到,就變成了訂單表和擴(kuò)展表的簡(jiǎn)單join了,sql也更加清爽了。

sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些

6.擴(kuò)展表有什么缺點(diǎn)?

(1)經(jīng)常改表結(jié)構(gòu),會(huì)不會(huì)鎖表?當(dāng)然會(huì)。但是目前oracle,包括mysql(5.7),增加表字段,增加字段速度很快。

(2)數(shù)據(jù)很多冗余。可以想到,paygo入金和自營(yíng)入金相互用不到對(duì)方的字段,對(duì)應(yīng)列就是空數(shù)據(jù)??諗?shù)據(jù)占用空間不大,我覺得可以忽略這個(gè)問題。

(3)假設(shè)這樣一種情況,paygo入金訂單擴(kuò)展有1千萬數(shù)據(jù),自營(yíng)入金訂單擴(kuò)展有500數(shù)據(jù),話費(fèi)入金訂單擴(kuò)展500條數(shù)據(jù),paygo訂單擴(kuò)展表顯得很冗余哦。遇到這種問題我覺得可以拆分:入金訂單擴(kuò)展表,paygo入金訂單擴(kuò)展表。這樣編寫sql的時(shí)候,也是非常簡(jiǎn)單的3表join.

以上是“sql設(shè)計(jì)表結(jié)構(gòu)的常見問題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

sql
AI