数据库的设计建立
??????? 一般將數(shù)據(jù)庫設(shè)計(jì) 分為6個(gè)階段,包括系統(tǒng)規(guī)劃,需求分析,概念設(shè)計(jì),邏輯設(shè)計(jì),物理設(shè)計(jì),系統(tǒng)實(shí)施,咱們重點(diǎn)講解邏輯設(shè)計(jì),物理設(shè)計(jì)
&數(shù)據(jù)庫的邏輯設(shè)計(jì)
1.1關(guān)系數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)
???? 現(xiàn)實(shí)世界中的對象為實(shí)體,是客觀存在并可相互區(qū)別的事物,事物可以指實(shí)際的東西也可指抽象的事物還可以指事物與事物的聯(lián)系)
?1.1.1.實(shí)體與關(guān)系表
??????? ? ????? 實(shí)體是用來描述現(xiàn)實(shí)世界中事物及其聯(lián)系的,把組合在一起的同類事物叫做實(shí)體集,即性質(zhì)相同的同類事物的集合。這里的同類是指同一實(shí)體集合中的每個(gè)實(shí)體具有相同的特征要求·
?????????? ?? ?? 用來表示實(shí)體某一方面的特性叫屬性,例如人的姓名,年齡,職務(wù),專長等表示了人的5個(gè)方面的特性,特性是對同類的限定,人類可以根據(jù)需要選擇其中的某些特性,甚至賦予新的特性,如職工編號。如果把人作為認(rèn)識管理的對象,可用職工編號姓名,性別,年齡等特性描述,如果把人作為財(cái)務(wù)管理的對象,可用職工編號,姓名,基本工資,工齡工資等特性來描述。
??? ???????? ???? 實(shí)體是通過屬性來體現(xiàn)的,因此實(shí)體是相關(guān)屬性的集合,例如,職工編號001,姓名馬華騰,基本工資6000.工齡工資500等屬性的集合,表示馬化騰的工資清單這樣一個(gè)實(shí)體。
????????????????? 實(shí)體是千差萬別的,即使是同類實(shí)體也各不相同,因而不可能有兩個(gè)實(shí)體在所有的屬性上是相同的。實(shí)體集合有一個(gè)或一組特殊的屬性,能夠唯一表示實(shí)體集合中的每個(gè)實(shí)體,能將一個(gè)實(shí)體與其他實(shí)體區(qū)分開來的屬性集叫做實(shí)體標(biāo)識符。
????????????????? 在關(guān)系型數(shù)據(jù)庫Oralce中,把實(shí)體集表示為表,實(shí)體表示為表中的行,屬性表示為表中的列,實(shí)體表示符表示為關(guān)鍵字或主碼。
1.1.2.實(shí)體間的聯(lián)系
??????? ?????????? 在一個(gè)數(shù)據(jù)庫中,一般具有幾個(gè),幾十個(gè),幾百個(gè)實(shí)體集合,集合之間不是孤立的,是有聯(lián)系的。兩個(gè)集合之間的聯(lián)系就是兩個(gè)屬性或者兩個(gè)實(shí)體集合之間的聯(lián)系
????????????????? (1)一對一聯(lián)系
???????????????????? 如果實(shí)體集EA中的任何一個(gè)實(shí)體僅對應(yīng)于實(shí)體集EB中一個(gè)實(shí)體,則稱EA對EB是一對一聯(lián)系。以1:1表示,即專業(yè)與系部的關(guān)系,一個(gè)系部只能有一個(gè)系主任
?????????????????? (2)一對多(多對一)聯(lián)系
??????????????????? 如果實(shí)體集EA中至少有一個(gè)實(shí)體對應(yīng)于實(shí)體集EB中一個(gè)以上的實(shí)體,反之,實(shí)體集EB中任一實(shí)體至多對應(yīng)于實(shí)體集EA中的一個(gè)實(shí)體,則稱實(shí)體集EA對實(shí)體集EB是一對多關(guān)系,以1:N表示(實(shí)體集EB對實(shí)體集EA是多對一關(guān)系,以N:1表示)。例如班級與學(xué)生的關(guān)系,一個(gè)班級可以有多么學(xué)生,一個(gè)學(xué)生只能屬于一個(gè)班級。
??????????????????? (3)多對多聯(lián)系
???????????????????? 如果實(shí)體集EA中至少有一個(gè)實(shí)體對應(yīng)于實(shí)體集EB中一個(gè)以上實(shí)體:反之,實(shí)體集EB中也只是有一個(gè)實(shí)體對應(yīng)于實(shí)體集EA中一個(gè)以上實(shí)體,則稱A與B是多對多關(guān)系,以N:M表示,例如學(xué)生與課程之間的關(guān)系,一名學(xué)生可以學(xué)習(xí)多門課程,多門學(xué)生可以學(xué)習(xí)一門課程。
1.2關(guān)系數(shù)據(jù)庫的規(guī)范化
????????????????????? 關(guān)系數(shù)據(jù)庫中的關(guān)系需要滿足一定的要求這些要求被稱為范式。,規(guī)范化的關(guān)系數(shù)據(jù)庫有助于消除表中的冗余與不一致性,數(shù)據(jù)庫的設(shè)計(jì)主要是數(shù)據(jù)庫模式的設(shè)計(jì),關(guān)系模式的設(shè)計(jì)將直接影響數(shù)據(jù)庫的質(zhì)量
????????????????????? 1.第一范式
???????????????????? 如何一個(gè)實(shí)體(表)的所有屬性都是不可分割的,即表中的每一行和每一列均有一個(gè)值,并且永遠(yuǎn)不會是一組值,這表被稱為滿足1NF(第一范式定義的數(shù)據(jù)庫中不包含任何多值屬性)
???????????????????? 2.第二范式
????????????????????? 第二范式允許數(shù)據(jù)庫中用多個(gè)屬性作為主碼(主碼是實(shí)體實(shí)例的唯一標(biāo)識符),在包括多個(gè)碼的表中,如何函數(shù)依賴于碼中的一部分來確定信息,則違反了第二范式
???????????????????? 3第三范式
???????????????????? 每個(gè)非關(guān)鍵子子列都獨(dú)立于其他非關(guān)鍵子列,并依賴于關(guān)鍵字,第三范式指數(shù)據(jù)庫中不能存在傳遞函數(shù)依賴關(guān)系
???????????????????? 4Boyce-Codd范式BCNF
?????????????????? 在表中,可以將其中一列或多列指定為主碼,也可以指定其他某些列為候選碼,表中也存在其他屬性。不考慮候選碼,唯一的函數(shù)依賴關(guān)系存在于表中的每個(gè)屬性與整個(gè)主碼之間。(消除主屬性對碼的部分和傳遞依賴)
&數(shù)據(jù)庫的物理設(shè)計(jì)
數(shù)據(jù)庫邏輯確定后,在此基礎(chǔ)上就可以設(shè)計(jì)一個(gè)有效,可實(shí)現(xiàn)的數(shù)據(jù)庫物理結(jié)構(gòu)。數(shù)據(jù)庫物理結(jié)構(gòu)有時(shí)候也被稱為存儲結(jié)構(gòu)。物理設(shè)計(jì)包括某些操作約束,如響應(yīng)時(shí)間和存儲要求等。數(shù)據(jù)庫的物理設(shè)計(jì)的主要任務(wù)是:對數(shù)據(jù)庫中數(shù)據(jù)在物理設(shè)備上的存放結(jié)構(gòu)和存取方法進(jìn)行設(shè)計(jì)??????????????????? 1.設(shè)計(jì)步驟
??????????????????? (1)存儲記錄結(jié)構(gòu)設(shè)計(jì),包括記錄的組成,數(shù)據(jù)項(xiàng)的類型和長度,以及邏輯記錄到存儲記錄的映射。還要對數(shù)據(jù)項(xiàng)類型特征做分析,對存儲記錄進(jìn)行格式化,并決定如何進(jìn)行數(shù)據(jù)壓縮或代碼化
?????????????????????? (2)確定數(shù)據(jù)存儲方式,物理設(shè)計(jì)最重要的一個(gè)考慮,就是把存儲記錄在全范圍內(nèi)進(jìn)行物理安排
??????????????????????????? 順序存放:平均查詢次數(shù)為該關(guān)系中記錄個(gè)數(shù)的二分之一
??????????????????????????? 哈希存放:查詢次數(shù)有哈希算法決定
??????????????????????????? 索引存放:要確定建立何種索引,及建索引的表和屬性
??????????????????????????? 聚簇存放:記錄聚簇是將不同類型的記錄分配到相同的物理區(qū)域中去以充分利用物理順序性的優(yōu)點(diǎn),從而提高訪問速度,即把經(jīng)常在一起使用的記錄聚簇在一起,以減少物理i/o次數(shù)。
??????????????????????? (3)設(shè)計(jì)訪問方法,訪問方法設(shè)計(jì)為存儲在物理設(shè)備上的數(shù)據(jù)提供存儲結(jié)構(gòu)和查詢路徑
??????????????????????? (4)完整性和安全性考慮。根據(jù)邏輯設(shè)計(jì)文檔中提供的對數(shù)據(jù)庫的約束條件以及具體的數(shù)據(jù)庫管理系統(tǒng)dbms,操作系統(tǒng)os的性能特征和硬件環(huán)境,設(shè)計(jì)數(shù)據(jù)庫的完整性和安全性措施。
??????????????????????? (5)形成物理設(shè)計(jì)文檔。包括存儲記錄格式,存儲記錄位置分布及方法方法,滿足的操作需求,并給出硬件和軟件系統(tǒng)的約束。
???????????????????????? 在物理設(shè)計(jì)中,注意物理數(shù)據(jù)的獨(dú)立性。所謂物理數(shù)據(jù)的獨(dú)立性,指消除由于物理數(shù)據(jù)結(jié)構(gòu)變動而引起對應(yīng)用程序的修改
??????????????????????? 2.設(shè)計(jì)性能 ?
??????????????????????? 數(shù)據(jù)庫的性能用時(shí)間 空間 開銷來衡量。
??????????????????????? 要提高數(shù)據(jù)庫物理性能,有下面一些基本考慮
??????????????????????? (1)為表和索引建立不同的表空間,禁止在系統(tǒng)表空間中放入非核心Oracle系統(tǒng)成分的對象,確保數(shù)據(jù)表空間和索引空間位于不同的磁盤驅(qū)動器上
???????????????????????? (2)了解終端客戶如何訪問數(shù)據(jù),如果可能,將經(jīng)常同時(shí)查詢和頻繁查詢的對象防止不同的物理磁盤上
???????????????????????? (3)當(dāng)數(shù)據(jù)庫包含允許用戶并行訪問不同數(shù)據(jù)元素的大對象數(shù)據(jù)時(shí),將大對象數(shù)據(jù)分割存放在多個(gè)磁盤上
???????????????????????? (4)在獨(dú)立的各盤上至少創(chuàng)建兩個(gè)用戶定義的回滾段表空間,以存放用戶自己的回滾段。在初始化文件中安排回滾段的次序,使他們在多個(gè)磁盤間進(jìn)行切換。
???????????????????????? (5)將重做日志放在一個(gè)讀寫較少的盤上。對于每個(gè)oracle實(shí)例要建立2個(gè)以上的重做日志組,同坐的兩個(gè)成員放在不同的設(shè)備上
????????????????????????? (6)確立表和索引的大小,這決定了保持他們所需的表空間的尺寸,也決定了哪些表空間物理地裝在哪些盤上和哪些表空間可以結(jié)合在一起。
??????????????????????????? 對于不同的應(yīng)用環(huán)境,對數(shù)據(jù)庫物理結(jié)構(gòu)有不同的要去。用戶可以根據(jù)特定的應(yīng)用環(huán)境對數(shù)據(jù)庫的要去,設(shè)計(jì)對于數(shù)據(jù)庫的物理結(jié)構(gòu),使得數(shù)據(jù)庫能夠支持企業(yè)計(jì)算。
????????????????
總結(jié)
- 上一篇: Oracle版本号的含义
- 下一篇: php+mysql留言板小案例