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