国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范

2024-08-31 00:55:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SQL Server數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范1.簡(jiǎn)介

數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其他應(yīng)用系統(tǒng),使之能有效地存儲(chǔ)數(shù)據(jù),滿足各種用戶(hù)的需求。數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中命名規(guī)范很是重要,命名規(guī)范合理的設(shè)計(jì)能夠省去開(kāi)發(fā)人員很多時(shí)間去區(qū)別數(shù)據(jù)庫(kù)實(shí)體。

最近也因?yàn)楣ぷ餍枰哉沓隽诉@個(gè)Word文檔,望大家指正。

2數(shù)據(jù)庫(kù)設(shè)計(jì)

數(shù)據(jù)庫(kù)規(guī)劃→需求分析→數(shù)據(jù)庫(kù)設(shè)計(jì)→應(yīng)用程序設(shè)計(jì)→實(shí)現(xiàn)→測(cè)試→運(yùn)行于維護(hù)

2.1數(shù)據(jù)庫(kù)規(guī)劃

定義數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的主要目標(biāo),定義系統(tǒng)特定任務(wù),包括工作量的估計(jì)、使用資源、和需求經(jīng)費(fèi),定義系統(tǒng)的范圍以及邊界。

2.2需求分析2.1.1需求分析步驟與成果

涉及人員:用戶(hù)和分析人員

任務(wù):對(duì)現(xiàn)實(shí)世界要處理的對(duì)象進(jìn)行詳細(xì)的調(diào)查,收集基礎(chǔ)數(shù)據(jù)及處理方法,在用戶(hù)調(diào)查的基礎(chǔ)上通過(guò)分析,逐步明確用戶(hù)對(duì)系統(tǒng)的需求,包括信息的要求及處理的要求。

方法與步驟:1.通過(guò)與用戶(hù)的調(diào)查,對(duì)用戶(hù)的信息需求進(jìn)行收集。

2.在收集數(shù)據(jù)的同時(shí),設(shè)計(jì)人員要對(duì)其進(jìn)行加工和整理,以數(shù)據(jù)字典和數(shù)據(jù)流圖的形式描述出來(lái),并以設(shè)計(jì)人員的角度向用戶(hù)講述信息,根據(jù)用戶(hù)的反饋加以修改并確定(該過(guò)程是反復(fù)的過(guò)程)

成果:數(shù)據(jù)流圖,數(shù)據(jù)字典,各種說(shuō)明性表格,統(tǒng)計(jì)輸出表以及系統(tǒng)功能結(jié)構(gòu)圖。

2.1.2數(shù)據(jù)流圖基本元素與數(shù)據(jù)流圖

外部實(shí)體:存在于軟件系統(tǒng)之外的人員或組織(正方形或立方體表示)。

加工:數(shù)據(jù)處理,表示輸入數(shù)據(jù)在此進(jìn)行變換,產(chǎn)生輸出數(shù)據(jù)(圓角巨型或圓形表示)。

數(shù)據(jù)流:表示流動(dòng)著的數(shù)據(jù)(箭頭線表示)。

數(shù)據(jù)存儲(chǔ):用來(lái)表示要存儲(chǔ)的數(shù)據(jù)(開(kāi)門(mén)矩形或兩條平行橫線表示)。

訂單處理系統(tǒng)頂層流程圖:

0層數(shù)據(jù)流圖:

2.3數(shù)據(jù)庫(kù)設(shè)計(jì)2.3.1概念結(jié)構(gòu)設(shè)計(jì)
  • 對(duì)事務(wù)加以抽象以E-R圖的形式描述出來(lái)
  • E-R圖(實(shí)體聯(lián)系圖):包括實(shí)體,聯(lián)系,屬性

實(shí)體:現(xiàn)實(shí)中的事物例如,學(xué)生,老師

聯(lián)系:兩個(gè)實(shí)體之間的關(guān)系,1:1、1:N、M:N三種關(guān)系

屬性:實(shí)體所具有的屬性,例如 學(xué)生的學(xué)號(hào)、姓名、性別等

例如:一個(gè)學(xué)生屬于一個(gè)班級(jí),一個(gè)班級(jí)擁有多名學(xué)生,E-R圖如下

網(wǎng)上購(gòu)物系統(tǒng)E-R圖,該系統(tǒng)數(shù)據(jù)之間存在下列約束

  1. 一個(gè)客戶(hù)(編號(hào)唯一)可以擁有多個(gè)訂單,每個(gè)訂單僅屬于一個(gè)客戶(hù)。
  2. 一個(gè)訂單(編號(hào)唯一)可以包含多個(gè)訂購(gòu)細(xì)目,每個(gè)訂購(gòu)細(xì)目只屬于一個(gè)訂單。
  3. 一個(gè)商品可以出現(xiàn)多個(gè)訂購(gòu)細(xì)目中,一個(gè)訂購(gòu)細(xì)目只包含多個(gè)商品。
  4. 一個(gè)商品類(lèi)別可以包含多種商品,一種商品只屬于一個(gè)商品類(lèi)別。

圖2.2

2.3.2邏輯結(jié)構(gòu)設(shè)計(jì)2.3.2.1E-R圖轉(zhuǎn)換成關(guān)系模式
  • 將E-R圖轉(zhuǎn)換成關(guān)系模式

將每個(gè)實(shí)體轉(zhuǎn)換成一個(gè)關(guān)系模式,實(shí)體的屬性即關(guān)系模式的屬性,實(shí)體的標(biāo)識(shí)即關(guān)系模式的鍵。

  • 根據(jù)規(guī)則合并E-R圖中的1:1,1:N,M:N之間的聯(lián)系
  1. 若實(shí)體的聯(lián)系是(1:1),則可以將兩個(gè)實(shí)體轉(zhuǎn)換成兩個(gè)關(guān)系模式,任意一個(gè)關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的主鍵(作為外鍵)和聯(lián)系自身的屬性
  2. 若實(shí)體間的聯(lián)系是一對(duì)多(1:n),則將n端的實(shí)體類(lèi)型轉(zhuǎn)換成關(guān)系模式中加入1端實(shí)體類(lèi)型的主鍵(作為外鍵)和聯(lián)系類(lèi)型的屬性。
  3. 若實(shí)體間的聯(lián)系是多對(duì)多(m:n),則將聯(lián)系類(lèi)型也轉(zhuǎn)換成關(guān)系模式,其屬性為2實(shí)體類(lèi)型的主鍵(作為外鍵)加上聯(lián)系類(lèi)型自身的屬性,而該關(guān)系模式的主鍵為2端實(shí)體主鍵的組合。
  4. 若關(guān)系模式是1:1:1的關(guān)系,轉(zhuǎn)換原則同1:1
  5. 若關(guān)系模式是1:1:n的聯(lián)系,轉(zhuǎn)換原則同1:n
  6. 若關(guān)系模式是1:n:m的聯(lián)系,則可以將聯(lián)系類(lèi)型也轉(zhuǎn)換成關(guān)系模式,其屬性為m端和n端實(shí)體類(lèi)型的主鍵(作為外鍵)加上聯(lián)系類(lèi)型自身的屬性,而關(guān)系模式的主鍵為n和m端實(shí)體主鍵的組合
  7. 若關(guān)系模式是n:m:p的聯(lián)系,轉(zhuǎn)換規(guī)則同m:n

根據(jù)E-R圖實(shí)體之間的聯(lián)系可以轉(zhuǎn)換成以下關(guān)系模式

客戶(hù)(客戶(hù)編號(hào),姓名,電話,E-mail)。關(guān)系的主鍵:客戶(hù)編號(hào);外鍵:無(wú)

訂單(訂單編號(hào),訂購(gòu)時(shí)間,客戶(hù)編號(hào))。關(guān)系的主鍵:訂單編號(hào);外鍵:客戶(hù)編號(hào)

訂購(gòu)細(xì)目(訂購(gòu)明細(xì)編號(hào),訂購(gòu)數(shù)量,支付金額,訂單編號(hào))。關(guān)系主鍵:訂購(gòu)明細(xì)編號(hào);外鍵:訂單編號(hào)。

出現(xiàn)(訂購(gòu)明細(xì)編號(hào),商品編號(hào),類(lèi)型)。關(guān)系的主鍵:訂購(gòu)明細(xì)編號(hào),商品編號(hào);外鍵:訂購(gòu)明細(xì)編號(hào),商品編號(hào)。

商品:(商品編號(hào),商品名稱(chēng),單價(jià),生產(chǎn)日期,商品類(lèi)別號(hào),商品類(lèi)別名)。關(guān)系的主鍵:商品編號(hào);外鍵:無(wú)

在關(guān)系模式設(shè)計(jì)中可能會(huì)出現(xiàn)以下幾個(gè)問(wèn)題:數(shù)據(jù)冗余、數(shù)據(jù)修改不一致、數(shù)據(jù)插入異常、數(shù)據(jù)刪除異常,所以提出范式的要求,目的就是最低限度地冗余,避免插入、刪除、修改異常。

2.3.2.2范式

主屬性:包含鍵的所有屬性。

  • 關(guān)系模式要求達(dá)到4NF (減少冗余,消除操作異常)

第一范式(1NF):若關(guān)系模式R的每一個(gè)分量是不可分的數(shù)據(jù)項(xiàng),則關(guān)系模式屬于第一范式。即每個(gè)屬性都是不可拆分的.

第二范式(2NF):R屬于1NF,且每一個(gè)非主屬性完全依賴(lài)于鍵(沒(méi)有部分依賴(lài)),則R屬于2NF

例如:選課關(guān)系(學(xué)號(hào),課程號(hào),成績(jī),學(xué)分)

該關(guān)系的主鍵是(學(xué)號(hào),課程號(hào)),但是課程號(hào)→學(xué)分,所以學(xué)分屬性部分依賴(lài)于主鍵,即關(guān)系部滿足第二范式,可以拆分為(學(xué)號(hào),課程號(hào),成績(jī)),(課程號(hào),學(xué)分)兩個(gè)關(guān)系

第三范式(3NF):R屬于2NF,且每個(gè)非主屬性即不部分依賴(lài)于碼,也不傳遞依賴(lài)于碼

例如:學(xué)生關(guān)系(學(xué)號(hào),姓名,所屬系,系地址)

該關(guān)系的主鍵是:學(xué)號(hào)

學(xué)號(hào)→所屬系,所屬系→學(xué)號(hào),所屬系→系地址;根據(jù)函數(shù)的依賴(lài)公理,系地址傳遞函數(shù)依賴(lài)于學(xué)號(hào),即關(guān)系不滿足第三范式,可以拆分關(guān)系為(學(xué)號(hào),姓名,所屬系),(所屬系,系地址)

如果不拆分會(huì)存在數(shù)據(jù)修改異常,比如該學(xué)生的換了系,修改了所屬系,但是系地址沒(méi)有修改,這樣就造成了修改異常

BCNF:R屬于3NF,且不存在主屬性對(duì)碼的部分和傳遞函數(shù)依賴(lài)

例如:關(guān)系R(零件號(hào),零件名,廠商名),如果設(shè)定每種零件號(hào)只有一個(gè)零件名,但不同的的零件號(hào)可以有相同的零件名,每種零件可以有多個(gè)廠商生產(chǎn),但每家廠商生產(chǎn)的零件應(yīng)有不同的零件名。這樣可以得到:

零件號(hào)→零件名,(廠商名,零件名)→零件號(hào)

所以主屬性包括(零件號(hào),廠商名,零件名),但是“零件名”傳遞依賴(lài)于碼“廠商名,零件名”,所以關(guān)系R不滿足BCNF,當(dāng)一個(gè)零件由多個(gè)生產(chǎn)廠商生產(chǎn)時(shí),由于零件號(hào)只有一個(gè)而零件名根據(jù)廠商不同而又多個(gè),零件名與零件號(hào)之間的聯(lián)系將多次重復(fù),帶來(lái)數(shù)據(jù)冗余和操作異常現(xiàn)象

可以將關(guān)系分解為(零件號(hào),廠商名),(零件號(hào),零件名)

4NF:關(guān)系模式R屬于1NF,若對(duì)于R的每個(gè)非平凡多值依賴(lài)X→→Y且Y不包含于X時(shí),X必含碼,則R屬于4NF

5NF:對(duì)關(guān)系進(jìn)行投影,消除關(guān)系中不是由候選碼所蘊(yùn)含的連接依賴(lài)

對(duì)于上面的商品關(guān)系,由于關(guān)系的主鍵是商品編號(hào),而商品類(lèi)別號(hào)→商品類(lèi)別名

所以商品關(guān)系部滿足第三范式,非主屬性商品類(lèi)別名傳遞依賴(lài)于商品編號(hào),會(huì)存在數(shù)據(jù)冗余,數(shù)據(jù)修改異常問(wèn)題。將商品關(guān)系分解為:

商品(商品編號(hào),商品名稱(chēng),單價(jià),生產(chǎn)日期,商品類(lèi)別號(hào))

商品類(lèi)別(商品類(lèi)別號(hào),商品類(lèi)別名)

2.3.3物理結(jié)構(gòu)設(shè)計(jì)

為一個(gè)給定的邏輯數(shù)據(jù)模型設(shè)計(jì)一個(gè)最合適應(yīng)用要求的物理結(jié)構(gòu)的過(guò)程

  • 數(shù)據(jù)庫(kù)的建立
  • 數(shù)據(jù)表的建立
  • 索引的建立
  • 視圖的建立
  • 觸發(fā)器的建立
  • 存儲(chǔ)過(guò)程設(shè)計(jì)
  • 用戶(hù)自定義函數(shù)設(shè)計(jì)
  • 對(duì)關(guān)系模式的數(shù)據(jù)項(xiàng)加以約束,如檢查約束、主鍵約束、參照完整性約束以保證數(shù)據(jù)正確性

2.4應(yīng)用程序設(shè)計(jì)

采用高級(jí)語(yǔ)言以結(jié)構(gòu)化設(shè)計(jì)方法或面向?qū)ο蠓椒ㄟM(jìn)行設(shè)計(jì)

2.5系統(tǒng)實(shí)現(xiàn)

3.優(yōu)化策略3.1.查詢(xún)優(yōu)化策略
  1. 盡可能地減少多表查詢(xún)或建立物化視圖
  2. 只檢索需要的列
  3. 用帶IN的條件字句等級(jí)替換or字句
  4. 經(jīng)常提交COMMIT,以盡早釋放鎖

3.2表設(shè)計(jì)

1.如果頻繁地訪問(wèn)涉及的是對(duì)兩個(gè)相關(guān)的表進(jìn)行連接操作,則考慮將其合并

2.如果頻繁地訪問(wèn)只是在表中的某一部分字段上進(jìn)行,則考慮分解表,將該部分單獨(dú)作為一個(gè)表

3.對(duì)于很少更新的表,引入物化視圖

4. 當(dāng)系統(tǒng)中有一些少量的,重復(fù)出現(xiàn)的值時(shí),使用字典表來(lái)節(jié)約存儲(chǔ)空間和優(yōu)化查詢(xún)。如地區(qū)、系統(tǒng)中用戶(hù)類(lèi)型的代號(hào)等。這類(lèi)值不會(huì)在程序的運(yùn)行期變化,但是需要存儲(chǔ)在數(shù)據(jù)庫(kù)中。

就地區(qū)而言,如果我們要查詢(xún)某個(gè)地區(qū)的記錄,則數(shù)據(jù)庫(kù)需要通過(guò)字符串匹配的方式來(lái)查詢(xún);如果將地區(qū)改為一個(gè)地區(qū)的代號(hào)保存在表中,查詢(xún)時(shí)通過(guò)地區(qū)的代號(hào)來(lái)查詢(xún),則查詢(xún)的效率將大大提高。

程序中宜大量的使用字典表來(lái)表示這類(lèi)值。字典表中保存這類(lèi)值的代號(hào)和實(shí)體的集合,以外鍵的方式關(guān)聯(lián)到使用這類(lèi)值的表中。然而,在編碼階段,程序員并不使用字典表,因?yàn)槭紫炔樵?xún)字典表中實(shí)體的代號(hào),違背了提高查詢(xún)效率的初衷。程序員在數(shù)據(jù)字典的幫助下,直接使用代號(hào)來(lái)代表實(shí)體,從而提高效率。

雖然字典表在實(shí)際上并不使用,但是仍應(yīng)該保留在數(shù)據(jù)庫(kù)中(起碼是在開(kāi)發(fā)期內(nèi)保留)。字典表作為另一種形式上的“數(shù)據(jù)字典文檔”出現(xiàn),以說(shuō)明數(shù)據(jù)庫(kù)中哪些表的哪些字段是使用了字典表的。

為了提高數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性,在開(kāi)發(fā)階段可以保留完整的字典表和普通表的外鍵約束。但是在數(shù)據(jù)庫(kù)的運(yùn)行階段,應(yīng)該將普通表和字典表的外鍵刪除,以提高運(yùn)行效率,特別是某些表使用了很多字典表的情況。

案例:某數(shù)據(jù)庫(kù)中有百萬(wàn)條用戶(hù)信息,應(yīng)用系統(tǒng)中常常需要按照地區(qū)要查詢(xún)用戶(hù)的信息。用戶(hù)信息表以前是按照具體的地區(qū)名稱(chēng)來(lái)保存的,現(xiàn)在將具體的名稱(chēng)改為字典表中的地區(qū)代號(hào),查詢(xún)效率大大提高。

3.3索引
  1. 如果查詢(xún)是瓶頸,則在關(guān)系上建立適當(dāng)?shù)乃饕煌ǔ#鳛椴樵?xún)條件的屬性上建立索引可以提高查詢(xún)效率。
  2. 如果更新是瓶頸,因?yàn)槊看胃露紩?huì)重建表上的索引,引起效率降低,則考慮刪除某些索引。
  3. 選擇適當(dāng)索引,如果經(jīng)常使用范圍查詢(xún),則B樹(shù)索引比散列索引更高效
  4. 將有利于大多數(shù)查詢(xún)和更新的索引設(shè)為聚集性索引。

3.4提高IO效率
  1. 索引文件和數(shù)據(jù)文件分開(kāi)存儲(chǔ),事務(wù)日志文件存儲(chǔ)在高速設(shè)備上
  2. 經(jīng)常修改數(shù)據(jù)文件和索引文件的頁(yè)面大小
  3. 定期對(duì)數(shù)據(jù)進(jìn)行排序
  4. 增加必要的索引項(xiàng)
4.數(shù)據(jù)庫(kù)命名規(guī)范4.1數(shù)據(jù)庫(kù)對(duì)象

對(duì)象

前綴

數(shù)據(jù)庫(kù)

無(wú)

無(wú)

視圖

VI

索引

IX

存儲(chǔ)過(guò)程

SP

函數(shù)

FN

觸發(fā)器

TR

自定義數(shù)據(jù)類(lèi)型

ud

Default

DF

主鍵

pk

外鍵

FK

rule

ru

序列

Sq

UNIQUE

uq

數(shù)據(jù)庫(kù)對(duì)象采用26個(gè)英文字母(區(qū)分大小寫(xiě))和0-9這十個(gè)自然數(shù),加上下劃線_組成,共63個(gè)字符。不能出現(xiàn)其他字符(注釋除外)。

同一個(gè)數(shù)據(jù)庫(kù)中這些對(duì)象名都是不能重復(fù)

C CHECK_CONSTRAINT

D DEFAULT_CONSTRAINT

F FOREIGN_KEY_CONSTRAINT

IT INTERNAL_TABLE

P SQL_STORED_PROCEDURE

PK PRIMARY_KEY_CONSTRAINT

S SYSTEM_TABLE

SQ SERVICE_QUEUE

TR SQL_TRIGGER

U USER_TABLE

UQ UNIQUE_CONSTRAINT

V VIEW

4.2命名規(guī)范規(guī)定

1.表名使用單數(shù)名

例如:對(duì)存儲(chǔ)客人信息的表(Customer)不使用Customers

2.避免無(wú)謂的表格后綴

1、 表是用來(lái)存儲(chǔ)數(shù)據(jù)信息的,表是行的集合。那么如果表名已經(jīng)能夠很好地說(shuō)明其包含的數(shù)據(jù)信息,就不需要再添加體現(xiàn)上面兩點(diǎn)的后綴了。

2、 GuestInfo(存儲(chǔ)客戶(hù)信息)應(yīng)寫(xiě)成Guest,F(xiàn)lightList(存儲(chǔ)航班信息的表)應(yīng)寫(xiě)成Flight

3.所有表示時(shí)間的字段,統(tǒng)一以 Date 來(lái)作

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 衡南县| 晋宁县| 铜山县| 馆陶县| 伊吾县| 工布江达县| 含山县| 通州市| 克拉玛依市| 三都| 乐昌市| 和顺县| 武功县| 资阳市| 阜平县| 芮城县| 阳信县| 师宗县| 申扎县| 锡林郭勒盟| 抚远县| 利津县| 五河县| 永年县| 盐边县| 七台河市| 平谷区| 陇川县| 南召县| 侯马市| 定西市| 梁山县| 平江县| 阿巴嘎旗| 灵台县| 曲阳县| 郯城县| 西乡县| 仙居县| 隆林| 鹤峰县|