操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    在實(shí)體關(guān)系模型中,我們知道有三種關(guān)系:一對(duì)一、一對(duì)多、多對(duì)多。這只是概念上的關(guān)系,但是在真實(shí)的關(guān)系數(shù)據(jù)庫(kù)中,我們只有外鍵,并沒(méi)有這三種關(guān)系,那么我們就來(lái)說(shuō)一說(shuō)在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中,怎么實(shí)現(xiàn)這三種關(guān)系。 一對(duì)多 這里先講解一對(duì)多數(shù)據(jù)庫(kù)關(guān)系模型怎么寫,因?yàn)檫@個(gè)關(guān)

    在實(shí)體關(guān)系模型中,我們知道有三種關(guān)系:一對(duì)一、一對(duì)多、多對(duì)多。這只是概念上的關(guān)系,但是在真實(shí)的關(guān)系數(shù)據(jù)庫(kù)中,我們只有外鍵,并沒(méi)有這三種關(guān)系,那么我們就來(lái)說(shuō)一說(shuō)在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中,怎么實(shí)現(xiàn)這三種關(guān)系。

    一對(duì)多

    這里先講解一對(duì)多,因?yàn)檫@個(gè)關(guān)系最簡(jiǎn)單。一對(duì)多和多對(duì)一是一回事,所以就不再提多對(duì)一這個(gè)詞。一對(duì)多的概念是一個(gè)對(duì)象A會(huì)對(duì)應(yīng)多個(gè)對(duì)象B,而從B的角度看,一個(gè)對(duì)象B只會(huì)對(duì)于一個(gè)對(duì)象A。比如說(shuō)班級(jí)和學(xué)生就是一對(duì)多關(guān)系。一個(gè)班級(jí)對(duì)應(yīng)多個(gè)學(xué)生,一個(gè)學(xué)生只會(huì)對(duì)于一個(gè)班級(jí)。

    一對(duì)多的關(guān)系之所以說(shuō)簡(jiǎn)單,是因?yàn)镽DBMS的外鍵其實(shí)就是表示一對(duì)多關(guān)系。對(duì)于一對(duì)多關(guān)系,我們只需要在“多”的這個(gè)表中建立“一”的外鍵關(guān)聯(lián)即可,而“一”這邊的表不需要做任何修改。比如前面說(shuō)到的班級(jí)學(xué)生關(guān)系。班級(jí)表不變,學(xué)生表增加班級(jí)Id作為外鍵。

    多對(duì)多

    多對(duì)多的關(guān)系在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)比一對(duì)一要常見,所以這里先說(shuō)說(shuō)多對(duì)多。多對(duì)多是一個(gè)對(duì)象A對(duì)應(yīng)多個(gè)對(duì)象B,從B角度看,一個(gè)對(duì)象B也會(huì)對(duì)應(yīng)多個(gè)對(duì)象A。比如說(shuō)學(xué)生和課程的關(guān)系就是多對(duì)多關(guān)系。一個(gè)學(xué)生會(huì)學(xué)習(xí)多門課程,一門課程會(huì)有多個(gè)學(xué)生來(lái)選修。

    數(shù)據(jù)庫(kù)關(guān)系模型怎么寫_3d俠模型免費(fèi)下載庫(kù)_標(biāo)準(zhǔn)件 關(guān)系數(shù)據(jù) 數(shù)據(jù)

    在RDBMS中,必須使用中間表來(lái)表示多對(duì)多的關(guān)系。中間表我們可以分成兩種,一種是純粹表示關(guān)系的中間表,一種是表示中間實(shí)體的中間表。

    純粹表示關(guān)系的中間表很簡(jiǎn)單,只需要兩列:AID和BID,AID以外鍵關(guān)聯(lián)到A表的主鍵,BID以外鍵關(guān)聯(lián)到B表的主鍵,然后這兩個(gè)列組成聯(lián)合主鍵。這個(gè)中間表純粹是表示多對(duì)多關(guān)系而存在,在業(yè)務(wù)上不會(huì)有對(duì)應(yīng)的實(shí)體與之對(duì)應(yīng)。比如前面提到的學(xué)生和課程的關(guān)系,如果我們只需要知道哪些學(xué)生上哪些課,哪些課有哪些學(xué)生選,不需要有更多的信息的情況下,我們就可以建立“學(xué)生課程”中間表,里面只有學(xué)生ID和課程ID兩個(gè)字段。

    中間實(shí)體是在純粹的中間關(guān)系表的基礎(chǔ)上,加上了更多的屬性,從而形成了一個(gè)新的實(shí)體。比如前面提到的學(xué)生和課程的關(guān)系,如果我們需要記錄學(xué)生選課的時(shí)間、學(xué)生選擇這門課程后的考試成績(jī),那么我們就像建立一個(gè)“選課”實(shí)體,該實(shí)體具有如下屬性:

    這就是一個(gè)中間實(shí)體,已經(jīng)完全脫離了普通的多對(duì)多關(guān)系中間表,而變成一個(gè)實(shí)體的形式的存在,所以按照前面博客中講到的主鍵設(shè)計(jì)的原則,我們可以單獨(dú)建立一個(gè)選課ID的列作為數(shù)據(jù)庫(kù)的主鍵,該主鍵本身并沒(méi)有業(yè)務(wù)含義。

    一對(duì)一

    一對(duì)一概念上是說(shuō)一個(gè)對(duì)象A最多對(duì)應(yīng)一個(gè)對(duì)象B,從B角度看,也是一個(gè)對(duì)象B最多對(duì)應(yīng)一個(gè)對(duì)象A。比如說(shuō)班主任(教師)和班級(jí)的關(guān)系,一個(gè)班主任最多管理一個(gè)班級(jí),一個(gè)班級(jí)也最多只有一個(gè)班主任。

    標(biāo)準(zhǔn)件 關(guān)系數(shù)據(jù) 數(shù)據(jù)_3d俠模型免費(fèi)下載庫(kù)_數(shù)據(jù)庫(kù)關(guān)系模型怎么寫

    一對(duì)一的關(guān)系在數(shù)據(jù)庫(kù)設(shè)計(jì)中,是使用的最少的關(guān)系,因?yàn)橐话銇?lái)說(shuō),如果兩個(gè)實(shí)體是一對(duì)多關(guān)系,那么我們也可以把這兩個(gè)實(shí)體合并成一個(gè)實(shí)體。但是在設(shè)計(jì)中,我們?nèi)匀粫?huì)遇到兩個(gè)完全不同的實(shí)體,之間存在一對(duì)一關(guān)系。

    一對(duì)一的RDBMS實(shí)現(xiàn)是在其中的一個(gè)表上建立外鍵指向另一個(gè)表,同時(shí)在該外鍵列上建立唯一約束。比如前面說(shuō)到的班主任和班級(jí)關(guān)系,我們可以在班級(jí)表建立班主任字段,然后再在該字段建立唯一約束。因?yàn)槊總€(gè)班都會(huì)有班主任,所以班主任字段是不允許為空的。一個(gè)教師可以當(dāng)某個(gè)班的班主任,也可以不當(dāng)任和班的班主任,同時(shí)也不可能在班級(jí)表的班主任字段上出現(xiàn)兩次,所以最多就當(dāng)一個(gè)班的班主任,所以該設(shè)計(jì)滿足需求。

    那么我們可不可以反過(guò)來(lái),在教師表中建立所管理的班級(jí)Id字段,指向班級(jí)表,并建立唯一約束呢?除了不滿足“每個(gè)班必然有一個(gè)班主任”這個(gè)業(yè)務(wù)約束外,其他都沒(méi)有問(wèn)題。所以如果對(duì)于一對(duì)一的情況,如果那邊必須要求持有另一邊,則就在哪邊增加外鍵字段;如果沒(méi)有要求必須持有一個(gè)另一類實(shí)體的話,就哪邊添加外鍵列都行。

    外鍵與索引

    外鍵是一種約束,與索引的概念不一樣,只是大多數(shù)情況下,我們建立外鍵時(shí),都會(huì)在外鍵列上建立對(duì)應(yīng)的索引。外鍵的存在會(huì)在每一次數(shù)據(jù)插入、修改時(shí)進(jìn)行約束檢查,如果不滿足外鍵約束,則禁止數(shù)據(jù)的插入或修改,這必然帶來(lái)一個(gè)問(wèn)題,就是在數(shù)據(jù)量特別大的情況下,每一次約束檢查必然導(dǎo)致性能的下降。索引其實(shí)也有類似的問(wèn)題,索引如果建多了,那么在插入刪除修改數(shù)據(jù)時(shí)也要去維護(hù)對(duì)應(yīng)的索引數(shù)據(jù)庫(kù)關(guān)系模型怎么寫,所以索引的存在也會(huì)導(dǎo)致數(shù)據(jù)操作變慢。

    不過(guò)外鍵與索引的優(yōu)點(diǎn)不同,外鍵只是保證數(shù)據(jù)的一致性,并不能給系統(tǒng)性能帶來(lái)任何好處,所以由于外鍵導(dǎo)致的插入數(shù)據(jù)變慢會(huì)隨著數(shù)據(jù)量的增長(zhǎng)而越來(lái)越嚴(yán)重。而索引的目的是為了檢索數(shù)據(jù)更快,維護(hù)數(shù)據(jù)時(shí)導(dǎo)致的索引數(shù)據(jù)的變更,對(duì)性能的影響不會(huì)像外鍵那樣隨著數(shù)據(jù)量增長(zhǎng)而變得嚴(yán)重(當(dāng)然大數(shù)量時(shí)的索引樹維護(hù)會(huì)比小數(shù)據(jù)量的索引樹維護(hù)更麻煩,但至少不是像外鍵那樣)。

    出于性能的考慮,如果我們的系統(tǒng)完全由我們開發(fā)的程序使用,而不需要提供數(shù)據(jù)庫(kù)給其他應(yīng)用系統(tǒng)寫入數(shù)據(jù),而且對(duì)性能要求較高,那么我們可以考慮在生產(chǎn)環(huán)境中不使用外鍵,只需要建立能夠提高性能的索引。由于整個(gè)數(shù)據(jù)庫(kù)的操作都是由我們開發(fā)的程序來(lái)完成的,所以我們程序可以在開發(fā)過(guò)程中做好各方面的一致性檢查,保證操作的數(shù)據(jù)是滿足外鍵約束的,而不需要真正的存在這樣一個(gè)外鍵約束。怎么做到這一點(diǎn)呢,首先,我們?cè)诮?shù)據(jù)庫(kù)時(shí)有多個(gè)腳本,包括創(chuàng)建表、創(chuàng)建初始化數(shù)據(jù)、創(chuàng)建索引、創(chuàng)建外鍵等,我們?cè)陂_發(fā)和測(cè)試環(huán)境中,都把這些腳本運(yùn)行了,以使開發(fā)測(cè)試環(huán)境中的數(shù)據(jù)庫(kù)是完整的,經(jīng)過(guò)大量測(cè)試保證應(yīng)用程序能夠維護(hù)數(shù)據(jù)之間的約束的情況下,那么我們?cè)谏a(chǎn)時(shí),并不需要運(yùn)行創(chuàng)建外鍵這個(gè)腳本文件,只需要?jiǎng)?chuàng)建表、初始化數(shù)據(jù)、創(chuàng)建索引等即可。

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有