新聞中心
隨著數(shù)據(jù)量的不斷增加,企業(yè)對(duì)于數(shù)據(jù)管理的需求也越來(lái)越高。而數(shù)據(jù)庫(kù)設(shè)計(jì)是數(shù)據(jù)管理的重要一環(huán),不同的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)也會(huì)影響到企業(yè)數(shù)據(jù)的存儲(chǔ)和使用效率。其中,橫表和縱表是兩種常見(jiàn)的數(shù)據(jù)庫(kù)結(jié)構(gòu),我們今天就來(lái)探討一下它們的區(qū)別和優(yōu)缺點(diǎn)。

橫表
橫表(Horizontal Table)也就是我們常說(shuō)的扁平表,其存儲(chǔ)方式是將每個(gè)屬性的值都以列的形式展示,每一行記錄表示一個(gè)實(shí)體的所有屬性值。橫表中的信息呈現(xiàn)方式類(lèi)似于Excel表格,每一列代表一種屬性,所有信息都在一張表中。
優(yōu)點(diǎn):
1.數(shù)據(jù)查詢(xún)速度快:所有數(shù)據(jù)都在一個(gè)表格中,不需要進(jìn)行表的連接操作,查詢(xún)速度比較快。
2.易于實(shí)現(xiàn):橫表適用于單條記錄查詢(xún),在實(shí)現(xiàn)方面相對(duì)較為簡(jiǎn)單,容易上手。
3.支持稀疏性:如果某個(gè)實(shí)體沒(méi)有屬性,橫表中的相關(guān)列可以保留為空,不會(huì)造成冗余空間空間占據(jù)。
缺點(diǎn):
1.存儲(chǔ)冗余:每種屬性都需要占用一列,當(dāng)屬性數(shù)量增多,橫向數(shù)據(jù)冗余也會(huì)增加,造成存儲(chǔ)空間的浪費(fèi)。
2.難以擴(kuò)展:如果增加屬性,需要新增字段,對(duì)數(shù)據(jù)庫(kù)的修改會(huì)帶來(lái)一定的風(fēng)險(xiǎn),也會(huì)使得表的體積變大,增加系統(tǒng)負(fù)擔(dān)。
3.不便于統(tǒng)計(jì):數(shù)據(jù)以列的形式展現(xiàn),不便于統(tǒng)計(jì)多個(gè)屬性的相關(guān)性,也不便于進(jìn)行聚合計(jì)算。
縱表
縱表(Vertical Table)是相對(duì)于橫表而言的,其存儲(chǔ)方式是將同一實(shí)體的不同屬性值存放在不同的記錄行中,一般需要通過(guò)外鍵關(guān)聯(lián)查找。 縱表中會(huì)有一個(gè)表來(lái)記錄屬性名稱(chēng)以及類(lèi)型,另外的表來(lái)存儲(chǔ)實(shí)體對(duì)應(yīng)的屬性值。
優(yōu)點(diǎn):
1.存儲(chǔ)效率高:縱表可以避免橫表冗余的問(wèn)題,減少數(shù)據(jù)存儲(chǔ)空間的浪費(fèi)。
2.易于擴(kuò)展:新增屬性時(shí)只需新增一個(gè)屬性表以及一個(gè)屬性值表即可,不需要對(duì)原有表進(jìn)行修改,能夠靈活擴(kuò)展。
3.適用于多屬性查詢(xún):縱表中每一行記錄只有一個(gè)屬性的值,方便進(jìn)行統(tǒng)計(jì)分析和聚合計(jì)算。
缺點(diǎn):
1.查詢(xún)復(fù)雜:查詢(xún)縱表的時(shí)候需要進(jìn)行表的連接,查詢(xún)速度相對(duì)橫表較慢。
2.更新困難:由于屬性值存儲(chǔ)在不同的表中,更新數(shù)據(jù)時(shí)需要更新多個(gè)表,更新復(fù)雜且容易出錯(cuò)。
3.實(shí)現(xiàn)復(fù)雜:縱表需要在多個(gè)表之間進(jìn)行關(guān)聯(lián)查詢(xún),實(shí)現(xiàn)上相對(duì)橫表較為困難。
可以看出,橫表和縱表都有各自特點(diǎn)和優(yōu)缺點(diǎn)。對(duì)于單純的查詢(xún)操作,橫表比較適用;而對(duì)于屬性數(shù)量變化較大的情況或者需要進(jìn)行多屬性查詢(xún)的情況,縱表則更加適用。綜合來(lái)說(shuō),設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候,需要根據(jù)實(shí)際情況來(lái)選擇適合的數(shù)據(jù)庫(kù)結(jié)構(gòu),兼顧查詢(xún)效率和數(shù)據(jù)擴(kuò)展的靈活性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
mysql數(shù)據(jù)庫(kù)表中查詢(xún)幾行當(dāng)成另一張表的字段值(縱表轉(zhuǎn)橫表)
php里倒是可以搞搏橡拿,mysql下如族不知基搭道能否用一條語(yǔ)句搞定,長(zhǎng)久不用生疏了。一條語(yǔ)句若搞不定可考慮用存儲(chǔ)過(guò)程。
sql server 縱表轉(zhuǎn)橫表
SQL Server數(shù)據(jù)中運(yùn)算符春扮畢扒芹與表達(dá)式缺喚
如果單純是你如上數(shù)據(jù)的話這樣:
創(chuàng)建表:
create table t
(id int,
orderid int,
prfno int,
prfid varchar(10));
insert into t values (16385,171202,1,’FB065_1′);
insert into t values (16385,171202,2,’FB065_06′);
insert into t values (16385,171202,3,’FB065_06′);
insert into t values (16385,171202,4,’FB065_06′);
insert 明亂into t 改和values (16386,171202,1,’FB065_1′);
insert into t values (16386,171202,2,’FB065_06′);
insert into t 核槐盯values (16386,171202,3,’FB065_06′);
insert into t values (16386,171202,4,’FB065_06′);
執(zhí)行:
select id,orderid,
max(case when prfno=1 then prfid end) prfid1,
max(case when prfno=2 then prfid end) prfid2,
max(case when prfno=3 then prfid end) prfid3,
max(case when prfno=4 then prfid end) prfid4
from t group by id,orderid
結(jié)果:
如果需求復(fù)雜的話,就要改別的方法了。
數(shù)據(jù)庫(kù)的橫表和縱表的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫(kù)的橫表和縱表,數(shù)據(jù)庫(kù)橫表 VS 縱表:你真的知道它們的區(qū)別嗎?,mysql數(shù)據(jù)庫(kù)表中查詢(xún)幾行當(dāng)成另一張表的字段值(縱表轉(zhuǎn)橫表),sql server 縱表轉(zhuǎn)橫表的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱(chēng)為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱(chēng)香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開(kāi)通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問(wèn)快、穩(wěn)定!
標(biāo)題名稱(chēng):數(shù)據(jù)庫(kù)橫表VS縱表:你真的知道它們的區(qū)別嗎?(數(shù)據(jù)庫(kù)的橫表和縱表)
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/ccsidcg.html


咨詢(xún)
建站咨詢(xún)
