新聞中心
數(shù)據(jù)庫(kù)設(shè)計(jì)的「三大原則」

目前成都創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、汕尾網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)庫(kù)成為了企業(yè)重要的數(shù)據(jù)存儲(chǔ)和管理工具。良好的數(shù)據(jù)庫(kù)設(shè)計(jì)不僅能提高數(shù)據(jù)處理效率,還能保證數(shù)據(jù)的安全和完整性。在數(shù)據(jù)庫(kù)設(shè)計(jì)中,存在著三大原則,它們分別是:范式設(shè)計(jì)原則、完整性約束原則和數(shù)據(jù)訪問(wèn)控制原則。
一、范式設(shè)計(jì)原則
范式是一種數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范,旨在避免數(shù)據(jù)的冗余和不一致性,以保證數(shù)據(jù)的正確性和可靠性,同時(shí)提高數(shù)據(jù)查詢和維護(hù)的效率。范式設(shè)計(jì)分為之一范式、第二范式、第三范式以及更高級(jí)的范式。
1. 之一范式
之一范式(1NF)是指數(shù)據(jù)庫(kù)表中的每個(gè)列都應(yīng)該是原子性的,即不可再分的數(shù)據(jù)項(xiàng)。這意味著,在設(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)時(shí),要盡量避免將多個(gè)數(shù)據(jù)到一個(gè)表列中。
例如,一個(gè)旅游網(wǎng)站的訂單表中,如果將出發(fā)日期和到達(dá)日期合并成一個(gè)日期列,數(shù)據(jù)就會(huì)呈現(xiàn)出不規(guī)則的形式,難以進(jìn)行查詢和統(tǒng)計(jì)分析。而將出發(fā)日期和到達(dá)日期分別作為兩個(gè)列,則可避免這種情況的發(fā)生。
2. 第二范式
第二范式(2NF)要求數(shù)據(jù)庫(kù)表結(jié)構(gòu)中的每個(gè)列都要和主鍵相關(guān),即每個(gè)非主鍵列必須完全依賴于同一張表的主鍵。如果表中存在非主鍵列與主鍵關(guān)聯(lián)不緊密,就可能會(huì)出現(xiàn)數(shù)據(jù)冗余。
例如,一個(gè)醫(yī)院的病人信息表中,主鍵是病人編號(hào),其中包含病人姓名、性別、出生日期等信息。如果將病人地址也放到這張表中,就可能存在同一個(gè)病人有多個(gè)地址的情況,導(dǎo)致數(shù)據(jù)冗余。此時(shí),將病人地址作為獨(dú)立的表,與病人信息表通過(guò)病人編號(hào)建立關(guān)聯(lián)關(guān)系,就能避免這種情況產(chǎn)生。
3. 第三范式
第三范式(3NF)是基于第二范式的基礎(chǔ)上,進(jìn)一步排除了非主鍵列之間的傳遞依賴性,使得數(shù)據(jù)更加緊湊和簡(jiǎn)潔。也就是說(shuō),每個(gè)非主鍵列都必須直接依賴于主鍵,而不是間接依賴于其他非主鍵列。
例如,一個(gè)超市的訂單表中,主鍵是訂單號(hào),包含了商品編號(hào)、商品名稱、單價(jià)、數(shù)量、金額等列,其中單價(jià)列與數(shù)量列之間存在傳遞依賴關(guān)系,即單價(jià)列的值直接依賴于商品編號(hào),而數(shù)量列的值又依賴于商品編號(hào)和訂單號(hào)。此時(shí),將單價(jià)列和商品名稱獨(dú)立成一個(gè)表,與訂單表通過(guò)商品編號(hào)建立關(guān)聯(lián)關(guān)系,就能消除這種傳遞依賴關(guān)系,提高數(shù)據(jù)的規(guī)范性和可讀性。
二、完整性約束原則
完整性約束是指向數(shù)據(jù)庫(kù)中插入、更新和刪除數(shù)據(jù)時(shí),保證數(shù)據(jù)的合法性和一致性的機(jī)制,包括實(shí)體完整性、參照完整性和域完整性。
1. 實(shí)體完整性
實(shí)體完整性是指表中每個(gè)記錄都必須有主鍵,同時(shí)保證主鍵的唯一性和不為空。
2. 參照完整性
參照完整性是指表中外鍵列必須參照到主表的主鍵列上,并保證其一致性和合法性。例如,一個(gè)圖書(shū)館的借閱信息表中,要求借閱者編號(hào)必須是讀者信息表中的合法編號(hào)。
3. 域完整性
域完整性是指表中的列必須符合特定的數(shù)據(jù)類型和取值范圍要求,例如限制年齡必須為正整數(shù),號(hào)碼必須符合特定格式等。
三、數(shù)據(jù)訪問(wèn)控制原則
數(shù)據(jù)訪問(wèn)控制是指通過(guò)安全認(rèn)證、授權(quán)和審計(jì)等機(jī)制,保證只有合法用戶能夠訪問(wèn)數(shù)據(jù)庫(kù),同時(shí)記錄所有的使用記錄和操作行為。
1. 安全認(rèn)證
安全認(rèn)證是指通過(guò)用戶名和密碼等方式,確認(rèn)用戶的身份和權(quán)限,以保護(hù)數(shù)據(jù)庫(kù)的安全性。
2. 授權(quán)
授權(quán)是指分配用戶的訪問(wèn)權(quán)限和操作權(quán)限,嚴(yán)格限制用戶行為的范圍,防止數(shù)據(jù)被誤用或篡改。例如,對(duì)于一個(gè)商城的訂單信息表,普通用戶只能查詢自己的訂單,而管理員有權(quán)進(jìn)行刪除或修改。
3. 審計(jì)
審計(jì)是指記錄用戶的所有訪問(wèn)和操作行為,以及相關(guān)的日期和時(shí)間等信息,以確保數(shù)據(jù)的完整和可追溯性,同時(shí)對(duì)違規(guī)操作和攻擊進(jìn)行及時(shí)報(bào)告和處罰。
以上是數(shù)據(jù)庫(kù)設(shè)計(jì)的三大原則,它們分別是范式設(shè)計(jì)原則、完整性約束原則和數(shù)據(jù)訪問(wèn)控制原則。良好的數(shù)據(jù)庫(kù)設(shè)計(jì)不僅能提高數(shù)據(jù)的規(guī)范性和一致性,還能保證數(shù)據(jù)的安全和可靠性,為企業(yè)決策提供有力的保障。
相關(guān)問(wèn)題拓展閱讀:
- 關(guān)于數(shù)據(jù)庫(kù)三大設(shè)計(jì)范式淺析
- 數(shù)據(jù)庫(kù)設(shè)計(jì)的內(nèi)容原則及其方法
關(guān)于數(shù)據(jù)庫(kù)三大設(shè)計(jì)范式淺析
為了建立冗余較小、結(jié)構(gòu)合理的數(shù)據(jù)庫(kù),設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)必須遵循一定的規(guī)則。在關(guān)系型數(shù)據(jù)庫(kù)中這種規(guī)則就稱為范式。范式是符合某一種設(shè)計(jì)要求的總結(jié)。要想設(shè)計(jì)一個(gè)結(jié)構(gòu)合理的關(guān)系型數(shù)據(jù)庫(kù),必須滿足一定的范式。
真斗扒拆正要明白”范式(NF)”是什么意思,首先看下教材中的定義,范式是“符合某一種級(jí)別的關(guān)系模式的,表示一個(gè)關(guān)系內(nèi)部各屬性之間的聯(lián)系的合理化程度”。實(shí)際上可以把它粗略地理解為一張數(shù)據(jù)表的表結(jié)構(gòu)所符合的某種設(shè)計(jì)標(biāo)準(zhǔn)的級(jí)別。就像家里裝修買(mǎi)建材,最環(huán)保的是E0級(jí),其次是E1級(jí),還有E2級(jí)等等。數(shù)據(jù)庫(kù)范式也分為1NF,2NF,3NF,BCNF,4NF,5NF。一般在我們?cè)O(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)的時(shí)候,最多考慮到BCNF就夠。符合高一級(jí)范式的設(shè)計(jì),必定符合低一級(jí)范式,例如符合2NF的關(guān)系模式,必定符合1NF。
在實(shí)際開(kāi)發(fā)中最為常見(jiàn)的設(shè)計(jì)范式有三個(gè):
首先是之一范式(1NF)。
符合1NF的關(guān)系(你可以理解為數(shù)據(jù)表。“關(guān)系”和“關(guān)系模式”的區(qū)別,類似于面向?qū)ο蟪绦蛟O(shè)計(jì)中”類“與”對(duì)象“的區(qū)別?!标P(guān)系“是”關(guān)系模式“的一個(gè)實(shí)例,你可以把”關(guān)系”理解為此和一張帶數(shù)據(jù)的表,而“關(guān)系模式”是這張數(shù)據(jù)表的表結(jié)構(gòu)。1NF的定義為:符合1NF的關(guān)系中的每個(gè)屬性都不可再分。表1所示的情況,就不符合1NF的要求。
表1
實(shí)際上,1NF是所有關(guān)系型數(shù)據(jù)庫(kù)的最基本要求,你在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),例如SQL Server,Oracle,MySQL中創(chuàng)建數(shù)據(jù)表的時(shí)候,如果數(shù)據(jù)表的設(shè)計(jì)不符合這個(gè)最基本的要求,那么操作一定是不能成功的。也就是說(shuō),只要在RDBMS中已經(jīng)存在的數(shù)據(jù)表,一定是符合1NF的。如果我們要在RDBMS中表現(xiàn)表中的數(shù)據(jù),就得設(shè)計(jì)為表2的形式:表2
表2
但是僅僅符合1NF的設(shè)計(jì),仍然會(huì)存在數(shù)據(jù)冗余過(guò)大,插入異常,刪除異常,修改異常的問(wèn)題,例如對(duì)于表3中的設(shè)計(jì):
每一名學(xué)生的學(xué)號(hào)、姓名、系名、系主任這些數(shù)據(jù)重復(fù)多次。每個(gè)系與對(duì)應(yīng)的系主任的數(shù)據(jù)也重復(fù)多次——數(shù)據(jù)冗余過(guò)大
假如學(xué)校新建了一個(gè)系,但是暫時(shí)還沒(méi)有招收任何學(xué)生(比如3月份就新建了,但要等到8月份才招生),那么是無(wú)法將系名與系主任的數(shù)據(jù)單獨(dú)地添加到數(shù)據(jù)表中去的 —-—插入異常
假如將某個(gè)系中所有學(xué)生相關(guān)的記錄都刪除,那么所有系與系主任的數(shù)據(jù)也就隨之消失了(一個(gè)系所有學(xué)生都沒(méi)有了,并不表示這個(gè)系就沒(méi)有了)。——?jiǎng)h除異常
假如李小明轉(zhuǎn)系到法律系,那么為了保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性,需要修改三條記錄中系與系主任的數(shù)據(jù)。——修改異常。
正因?yàn)閮H符合1NF的數(shù)據(jù)庫(kù)設(shè)計(jì)存在著這樣空棗那樣的問(wèn)題,我們需要提高設(shè)計(jì)標(biāo)準(zhǔn),去掉導(dǎo)致上述四種問(wèn)題的因素,使其符合更高一級(jí)的范式(2NF),這就是所謂的“規(guī)范化”。
第二范式
第二范式在之一范式的基礎(chǔ)之上更進(jìn)一層。是指2NF在1NF的基礎(chǔ)之上,消除了非主屬性對(duì)于碼的部分函數(shù)依賴。
函數(shù)依賴:若在一張表中,在屬性(或?qū)傩越M)X的值確定的情況下,必定能確定屬性Y的值,那么就可以說(shuō)Y函數(shù)依賴于X,寫(xiě)作 X → Y。
表中的函數(shù)依賴關(guān)系例如:
系名 → 系主任
學(xué)號(hào) → 系主任
(學(xué)號(hào),課名) → 分?jǐn)?shù)
但以下函數(shù)依賴關(guān)系則不成立:
學(xué)號(hào) → 課名
學(xué)號(hào) → 分?jǐn)?shù)
課名 → 系主任
(學(xué)號(hào),課名) → 姓名
碼:假如當(dāng) K 確定的情況下,該表除 K 之外的所有屬性的值也就隨之確定,那么 K 就是碼。碼也可以理解為主鍵。
第二范式需要確保數(shù)據(jù)庫(kù)表中的每一列都和主鍵相關(guān),而不能只與主鍵的某一部分相關(guān)(主要針對(duì)聯(lián)合主鍵而言)。也就是說(shuō)在一個(gè)數(shù)據(jù)庫(kù)表中,一個(gè)表中只能保存一種數(shù)據(jù),不可以把多種數(shù)據(jù)保存在同一張數(shù)據(jù)庫(kù)表中。
比如要設(shè)計(jì)一個(gè)訂單信息表,因?yàn)橛唵沃锌赡軙?huì)有多種商品,所以要將訂單編號(hào)和商品編號(hào)作為數(shù)據(jù)庫(kù)表的聯(lián)合主鍵,如下表所示。
訂單信息表
這樣就產(chǎn)生一個(gè)問(wèn)題:這個(gè)表中是以訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵。這樣在該表中商品名稱、單位、商品價(jià)格等信息不與該表的主鍵相關(guān),而僅僅是與商品編號(hào)相關(guān)。所以在這里違反了第二范式的設(shè)計(jì)原則。
而如果把這個(gè)訂單信息表進(jìn)行拆分,把商品信息分離到另一個(gè)表中,把訂單項(xiàng)目表也分離到另一個(gè)表中,就非常完美了。如下所示。
訂單信息表
訂單項(xiàng)目表
商品信息表
這樣設(shè)計(jì),在很大程度上減小了數(shù)據(jù)庫(kù)的冗余。如果要獲取訂單的商品信息,使用商品編號(hào)到商品信息表中查詢即可。
因此可以總結(jié)判斷的方法是:
之一步:找出數(shù)據(jù)表中所有的碼。
第二步:根據(jù)之一步所得到的碼,找出所有的主屬性。
第三步:數(shù)據(jù)表中,除去所有的主屬性,剩下的就都是非主屬性了。
第四步:查看是否存在非主屬性對(duì)碼的部分函數(shù)依賴。
第三范式
3NF在2NF的基礎(chǔ)之上,消除了非主屬性對(duì)于碼的傳遞函數(shù)依賴。也就是說(shuō), 如果存在非主屬性對(duì)于碼的傳遞函數(shù)依賴,則不符合3NF的要求。
則就是第三范式需要確保數(shù)據(jù)表中的每一列數(shù)據(jù)都和主鍵直接相關(guān),而不能間接相關(guān)。
比如在設(shè)計(jì)一個(gè)訂單數(shù)據(jù)表的時(shí)候,可以將客戶編號(hào)作為一個(gè)外鍵和訂單表建立相應(yīng)的關(guān)系。而不可以在訂單表中添加關(guān)于客戶其它信息(比如姓名、所屬公司等)的字段。如下面這兩個(gè)表所示的設(shè)計(jì)就是一個(gè)滿足第三范式的數(shù)據(jù)庫(kù)表。
訂單信息表
客戶信息表
這樣在查詢訂單信息的時(shí)候,就可以使用客戶編號(hào)來(lái)引用客戶信息表中的記錄,也不必在訂單信息表中多次輸入客戶信息的內(nèi)容,減小了數(shù)據(jù)冗余。
由此可見(jiàn),符合3NF要求的數(shù)據(jù)庫(kù)設(shè)計(jì),基本上解決了數(shù)據(jù)冗余過(guò)大,插入異常,修改異常,刪除異常的問(wèn)題。當(dāng)然,在實(shí)際中,往往為了性能上或者應(yīng)對(duì)擴(kuò)展的需要,經(jīng)常 做到2NF或者1NF,但是作為數(shù)據(jù)庫(kù)設(shè)計(jì)人員,至少應(yīng)該知道,3NF的要求是怎樣的。
數(shù)據(jù)庫(kù)設(shè)計(jì)的內(nèi)容原則及其方法
數(shù)雹斗據(jù)庫(kù)三范式詳解
數(shù)據(jù)庫(kù)三范式
?8?5 1NF-之一范式
每個(gè)字段都不可再分。
?8?5 2NF-第二范式
所有字段都完全依賴而不是部分依賴于聯(lián)合主鍵。
3NF-第三范式
不存在非主鍵字段對(duì)主鍵字段的傳遞依賴。
雖知拿然三范式是這樣寫(xiě),但是現(xiàn)實(shí)中不一定都要遵從3范式,而且第三范式基本上很少用到,至于數(shù)據(jù)庫(kù)搭肆搭設(shè)計(jì)的方法就多種多樣咯,主要是根據(jù)需求來(lái)看的
數(shù)據(jù)庫(kù)設(shè)計(jì)三大原則的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)三大原則,「數(shù)據(jù)庫(kù)」設(shè)計(jì)的「三大原則」,關(guān)于數(shù)據(jù)庫(kù)三大設(shè)計(jì)范式淺析,數(shù)據(jù)庫(kù)設(shè)計(jì)的內(nèi)容原則及其方法的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營(yíng)銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì)制作,網(wǎng)站維護(hù),網(wǎng)絡(luò)營(yíng)銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽(yáng)、雅安、重慶、貴州、昆明、鄭州、湖北十堰機(jī)房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
網(wǎng)頁(yè)名稱:「數(shù)據(jù)庫(kù)」設(shè)計(jì)的「三大原則」 (數(shù)據(jù)庫(kù)設(shè)計(jì)三大原則)
URL標(biāo)題:http://m.fisionsoft.com.cn/article/djjcdji.html


咨詢
建站咨詢
