数据库设计笔记——概述(一)
數(shù)據(jù)庫
- 數(shù)據(jù)庫(DataBase,DB)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi),有組織的,可共享的數(shù)據(jù)集合。是存放數(shù)據(jù)的倉庫,并且有組織,有管理。
數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)(Database Management System,DBMS)位于用戶與操作系統(tǒng)之間的一個(gè)計(jì)算機(jī)系統(tǒng)軟件,基本功能如下:
- 數(shù)據(jù)定義功能(語言:DDL)
- 數(shù)據(jù)操作功能(語言:DML)
- 數(shù)據(jù)庫的運(yùn)行管理功能(語言:DCL)
- 數(shù)據(jù)庫的建立和維護(hù)功能
目前流行的有Oracle、Sybase、SQL Server、Access、MySQL等。
數(shù)據(jù)庫系統(tǒng)
- 數(shù)據(jù)庫系統(tǒng)(Database System,DBS)包括和數(shù)據(jù)有關(guān)的整個(gè)系統(tǒng),如計(jì)算機(jī)硬件,操作系統(tǒng)、DBMS以及在他支持下建立起來的數(shù)據(jù)庫、應(yīng)用程序、用戶和維護(hù)人員等。
有時(shí)也將人以外的與數(shù)據(jù)庫有關(guān)的硬件和軟件系統(tǒng)成為DBS。
數(shù)據(jù)的發(fā)展
- 人工管理階段:程序與數(shù)據(jù)一一對(duì)應(yīng)。數(shù)據(jù)不可共享。
- 文件系統(tǒng)階段:應(yīng)用程序通過存取調(diào)用數(shù)據(jù)文件、可共享。
- 數(shù)據(jù)庫系統(tǒng)階段:應(yīng)用程序通過DBMS調(diào)用管理DB中的數(shù)據(jù)。
- 分布式數(shù)據(jù)可以管理階段 :邏輯上統(tǒng)一,地域上分布的數(shù)據(jù)集合。
數(shù)據(jù)庫的體系結(jié)構(gòu)
1)站在最終用戶的角度
集中式體系結(jié)構(gòu)
將DBMS軟件、所有用戶數(shù)據(jù)和應(yīng)用程序放在一臺(tái)計(jì)算機(jī)(服務(wù)器)上,其余計(jì)算機(jī)作為終端通過通信線路向服務(wù)器發(fā)出數(shù)據(jù)應(yīng)用請(qǐng)求,這種網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用系統(tǒng)稱為集中式數(shù)據(jù)庫體系結(jié)構(gòu)。
分布式體系結(jié)構(gòu)
將分散存儲(chǔ)在計(jì)算機(jī)網(wǎng)絡(luò)中的多個(gè)節(jié)點(diǎn)上的數(shù)據(jù)庫在邏輯上統(tǒng)一管理。
CLS體系結(jié)構(gòu)
在CLS計(jì)算機(jī)網(wǎng)絡(luò)上運(yùn)行的數(shù)據(jù)庫系統(tǒng),這個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中,一部分計(jì)算機(jī)為Client,一部分為服務(wù)器,其關(guān)鍵在于功能分布,一些放在Client機(jī)上(前端)上運(yùn)行,另一些在Server(后端)運(yùn)行。
并行體系結(jié)構(gòu)
要求盡可能并行執(zhí)行所有的數(shù)據(jù)操作從而在整體上提高數(shù)據(jù)庫系統(tǒng)的性能,是多個(gè)物理上連接在一起的CPU通過劃分的任務(wù)以及通過每秒兆位級(jí)的告訴網(wǎng)絡(luò)通信共同完成事務(wù)查詢。
2) 站在DBMS的角度
一般采用三級(jí)模式結(jié)構(gòu):外模式、模式和內(nèi)模式。
- 外模式:又稱子模式,是用戶與數(shù)據(jù)庫的接口,是應(yīng)用程序可見的數(shù)據(jù)描述。
- 模式:分為概念模式和邏輯模式,是由數(shù)據(jù)可以設(shè)計(jì)者綜合所有用戶數(shù)據(jù),按照統(tǒng)一的觀點(diǎn)構(gòu)造的全局邏輯結(jié)構(gòu)。
內(nèi)模式:物理模式或存儲(chǔ)模式,它描述數(shù)據(jù)在存儲(chǔ)介質(zhì)上的安排與存儲(chǔ)方式。
三級(jí)模式是用指針來表示數(shù)據(jù)之間的關(guān)系,數(shù)據(jù)定義語言和數(shù)據(jù)操作語言相互獨(dú)立。
三級(jí)模式之間的關(guān)系是二級(jí)映射,映射用來指定映射雙方進(jìn)行數(shù)據(jù)轉(zhuǎn)換的規(guī)則,實(shí)際上轉(zhuǎn)換工作有DBMS來完成,三級(jí)模型之間的關(guān)系如下圖:
數(shù)據(jù)模型
數(shù)據(jù)模型通常有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作 和 完整性約束三要素組成,分別表示系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性和數(shù)據(jù)庫的正確性、相容性和有效性。
數(shù)據(jù)模型就是對(duì)客觀事物抽象化的表現(xiàn)形式,具有有三大特點(diǎn):
- 必須真實(shí)反映現(xiàn)實(shí)世界中的具體應(yīng)用,否則就是去了意義
- 要便于理解,使用者與設(shè)計(jì)者要去的一致看法
- 便于使用計(jì)算機(jī)來實(shí)現(xiàn)處理。
數(shù)據(jù)模型的分類
- 層次模型(傳統(tǒng),較少使用),支持三級(jí)模式結(jié)構(gòu)
- 網(wǎng)狀模型(傳統(tǒng),較少使用),支持三級(jí)模式結(jié)構(gòu)
- 關(guān)系模型(占主導(dǎo)地位,具有嚴(yán)格的數(shù)學(xué)理論)
- 對(duì)象模型(近年來得到了一些應(yīng)用)
MySQL中,對(duì)象模型是后關(guān)系數(shù)據(jù)庫技術(shù)階段,包絡(luò)面向?qū)ο髷?shù)據(jù)庫技術(shù)(ORDBMS)和結(jié)構(gòu)化數(shù)據(jù)庫技術(shù)(NOSQL)
數(shù)據(jù)庫的類型
平面文件
定義:只包含文本的文件,沒有粗體,斜體、花體或其他特殊的字體樣式,而僅僅是普通文本。可添加結(jié)構(gòu),如逗號(hào)、分隔數(shù)值或縮排。
優(yōu)點(diǎn):非常簡(jiǎn)單并且容易理解,可以任意文本編輯器中打開平面文件并作出更改而不需要編寫復(fù)雜的用戶界面。
缺點(diǎn):對(duì)搜索數(shù)據(jù)沒有幫助,并不提供聚集功能,不能按照常規(guī)的方式修改平面穩(wěn)健,在文件某位添加數(shù)據(jù)或更改文件內(nèi)的特殊字符,不能再中間插入或刪除數(shù)據(jù)。
適用場(chǎng)合
- 數(shù)值較小且簡(jiǎn)單
- 數(shù)值不經(jīng)常變化
- 希望能夠使用
- 簡(jiǎn)單的文本編輯器來更改數(shù)值
- 希望保存以前數(shù)值的簡(jiǎn)單歷史清單
- 希望使用工具快速比較兩個(gè)文件
不適用場(chǎng)合
- 需要通過數(shù)值執(zhí)行復(fù)雜的搜索
- 數(shù)值經(jīng)常變化
- 不希望其他人能夠輕易閱讀和修改數(shù)值
- 數(shù)值是分級(jí)的
常用的存儲(chǔ)配置信息的地方是INI文件和Windows系統(tǒng)注冊(cè)表(一種分級(jí)數(shù)據(jù)庫)
關(guān)系型數(shù)據(jù)庫
定義:包含保存行和列的表
適用情況
- 需要在不同的表之間執(zhí)行復(fù)雜的查詢和連接
- 需要執(zhí)行數(shù)據(jù)有效性驗(yàn)證,如在其他表中檢驗(yàn)相關(guān)行的存在
- 需要為特定的數(shù)據(jù)段考慮任意數(shù)量的值(如比賽最后的名次)
- 希望能夠靈活地構(gòu)建在開始設(shè)計(jì)項(xiàng)目時(shí)本沒計(jì)劃的新查詢
電子數(shù)據(jù)表
定義:以行和列的形式顯示數(shù)據(jù)(Excel表)
優(yōu)勢(shì):允許用戶創(chuàng)建與電子數(shù)據(jù)表中其他數(shù)據(jù)相關(guān)的公式,生成形象顯示數(shù)據(jù)的圖表,大隱書局,以及以文本和其他格式導(dǎo)入和導(dǎo)出數(shù)據(jù),此外還支持相對(duì)復(fù)雜的分析工具。
注意:在大多數(shù)作者曾開發(fā)的大型項(xiàng)目中,都會(huì)設(shè)法內(nèi)建特別的查詢工具以便用戶能夠定義他們自己的報(bào)表。
缺點(diǎn):電子數(shù)據(jù)表不支持復(fù)雜的查詢,而且不能自動(dòng)檢查數(shù)據(jù)的完整性,因此可以輕易地錄入不正確或不一致的數(shù)值。
許多應(yīng)用程序都采用電子表數(shù)據(jù)作為輸出形式,衙門將數(shù)據(jù)存儲(chǔ)在一種關(guān)系或其他類型的數(shù)據(jù)庫中,然后將結(jié)果轉(zhuǎn)存成電子數(shù)據(jù)表格式以便用戶使用。
分級(jí)數(shù)據(jù)庫
- 包括按照書性結(jié)構(gòu)很自然地安排的數(shù)值,類似于文件夾(分層和分級(jí))
XML(擴(kuò)展標(biāo)記語言)
定義:一種用于存儲(chǔ)分級(jí)數(shù)據(jù)的語言。
優(yōu)點(diǎn)
- 對(duì)于存儲(chǔ)、傳輸、檢索分級(jí)數(shù)據(jù)而言,XML是一個(gè)很有用的工具。
- XML文件相對(duì)簡(jiǎn)單,他使用特殊的標(biāo)記為其包含的數(shù)據(jù)定義結(jié)構(gòu)。
缺點(diǎn): XML自身并不提供任何用于構(gòu)建、檢索、更新、驗(yàn)證或以其他方式操縱數(shù)據(jù)的工具。
適用場(chǎng)合
- 數(shù)據(jù)自然分級(jí)的
- 可用XML工具提供需要的特性
- 希望獲得模式文件能夠提供各種有效性驗(yàn)證
- 希望能夠在支持XML產(chǎn)品中導(dǎo)入和導(dǎo)出數(shù)據(jù)
不適用場(chǎng)合
- 非分級(jí)
- 需要的數(shù)據(jù)有效性驗(yàn)證要比模式文件能夠提供的更復(fù)雜
- 需要執(zhí)行關(guān)系查詢而非分級(jí)查詢
- 數(shù)據(jù)庫很龐大,因此重寫整個(gè)文件來更新其中的少量數(shù)據(jù)非常麻煩
- 需要允許多個(gè)用戶頻繁更新數(shù)據(jù)庫而互不干擾
網(wǎng)絡(luò)數(shù)據(jù)庫
當(dāng)使用網(wǎng)絡(luò)文件來存儲(chǔ)數(shù)據(jù)時(shí),程序?qū)⑼瓿伤械墓ぷ鳌N募旧聿惶峁┨厥獾奶匦浴?/p>
適用場(chǎng)合
- 數(shù)據(jù)本身就是一種網(wǎng)絡(luò)形式(或近似為層次結(jié)構(gòu))
- 需對(duì)數(shù)據(jù)執(zhí)行網(wǎng)絡(luò)運(yùn)算,如查找最短路徑或計(jì)算網(wǎng)絡(luò)流
- 不需要對(duì)數(shù)據(jù)執(zhí)行復(fù)雜的查詢
不適用的場(chǎng)合
- 數(shù)據(jù)不能表示網(wǎng)絡(luò)
- 需要驗(yàn)證數(shù)據(jù)
- 需對(duì)數(shù)據(jù)執(zhí)行查詢
- 需允許多個(gè)用戶頻繁地更新數(shù)據(jù)而互不干擾
對(duì)象數(shù)據(jù)庫
用來管理對(duì)象。他提供某種查詢語法用于從數(shù)據(jù)庫中檢索對(duì)象,還提供一些工具來將對(duì)象的改動(dòng)保存到數(shù)據(jù)庫中。
適用場(chǎng)合
- 編程環(huán)境和體系結(jié)構(gòu)支持使用對(duì)象
- 不需要對(duì)數(shù)據(jù)執(zhí)行復(fù)雜的查詢
不適用的場(chǎng)合
- 程序需要與外部工具交互,再次采用相關(guān)數(shù)據(jù)庫此類格式存儲(chǔ)數(shù)據(jù)更為有利。
- 需要執(zhí)行復(fù)雜的查詢
- 沒有使用面向?qū)ο蟮恼Z言
- 需要執(zhí)行對(duì)象數(shù)據(jù)庫不能提供的數(shù)據(jù)有效性驗(yàn)證
對(duì)象關(guān)系數(shù)據(jù)庫(ORD)
是一種關(guān)系數(shù)據(jù)庫,他提供了用于將對(duì)象類型集成到數(shù)據(jù)中的格外特性。
與關(guān)系數(shù)據(jù)庫類似,她能夠相對(duì)快速地執(zhí)行復(fù)雜的查詢。
另一方面又類似于對(duì)象數(shù)據(jù)庫,使用某種特殊的語法來簡(jiǎn)化對(duì)象的創(chuàng)建。
特殊類型的數(shù)據(jù)庫
- 面向文檔的數(shù)據(jù)庫
- 演繹數(shù)據(jù)庫
- 維度(或空間)數(shù)據(jù)庫
- 時(shí)態(tài)數(shù)據(jù)庫
數(shù)據(jù)庫設(shè)計(jì)總結(jié)
數(shù)據(jù)庫設(shè)計(jì)分為:概念模型設(shè)計(jì) 、 邏輯模型設(shè)計(jì) 和 物理模型設(shè)計(jì)。
關(guān)系數(shù)據(jù)庫適用的情況:
- 需要在不同表直接執(zhí)行復(fù)雜的查詢
- 需要執(zhí)行數(shù)據(jù)有效性驗(yàn)證,如在其他表中驗(yàn)證相關(guān)行的存在
- 需要為特定的數(shù)據(jù)段考慮任意數(shù)量的值
- 希望能夠靈活的構(gòu)建在開始設(shè)計(jì)項(xiàng)目時(shí)本設(shè)計(jì)劃的新查詢
關(guān)系數(shù)據(jù)庫設(shè)計(jì)總結(jié)
- 符合三大范式(3NF)
- DB不能處理多對(duì)多關(guān)系時(shí),應(yīng)再建關(guān)聯(lián)表,來表示兩表間的關(guān)系。若多對(duì)多的關(guān)系包含額外的關(guān)聯(lián)數(shù)據(jù),將字段放于關(guān)聯(lián)表中。
- 命名約定:若表中兩字段包含相同的數(shù)據(jù),則賦予兩個(gè)字段相同的名稱。
- 對(duì)于同類型的表,若有相同類型的字段,應(yīng)使其對(duì)應(yīng)的字段名相同,這樣對(duì)于編寫,調(diào)用函數(shù),非常方便
- php操作數(shù)據(jù)庫總結(jié):
- 關(guān)于數(shù)據(jù)的重復(fù)問題,需在代碼中驗(yàn)證該數(shù)據(jù)在DB中是否存在,若已存在,則不能插入
- 查詢數(shù)據(jù)時(shí),當(dāng)訪問細(xì)分的幾個(gè)表時(shí),需使用聯(lián)合查詢。
總結(jié)
以上是生活随笔為你收集整理的数据库设计笔记——概述(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贷款时,如何评估借款人的还款意愿
- 下一篇: 数据库设计笔记——有效设计数据库的目标(