資料庫系統原理之資料庫設計

来源:https://www.cnblogs.com/QiaoPengjun/archive/2023/03/24/17250280.html
-Advertisement-
Play Games

資料庫設計 一、資料庫設計概述 資料庫的生命周期 從資料庫演變過程的角度來看,資料庫的生命周期可分為兩個階段: 資料庫分析與設計階段 需求分析 概念設計 邏輯設計 物理設計 資料庫實現與操作階段 資料庫的實現 操作與監督 修改與調整 資料庫設計的目標 滿足應用功能需求:主要是指用戶當前與可預知的將來 ...


資料庫設計

一、資料庫設計概述

資料庫的生命周期

從資料庫演變過程的角度來看,資料庫的生命周期可分為兩個階段:

  • 資料庫分析與設計階段
    • 需求分析
    • 概念設計
    • 邏輯設計
    • 物理設計
  • 資料庫實現與操作階段
    • 資料庫的實現
    • 操作與監督
    • 修改與調整

資料庫設計的目標

  • 滿足應用功能需求:主要是指用戶當前與可預知的將來應用所需要的數據及其聯繫,應全部準確地存儲在資料庫之中,從而可滿足用戶應用中所需求的對數據進行的存、取、刪、改等操作。
  • 良好的資料庫性能:主要是指對數據的高效率存取和空間的節省,並具有良好的數據共用性、完整性、一致性及安全保密性。

資料庫設計的內容

  • 資料庫結構設計
    • 針對給定的應用環境進行資料庫的模式或子模式的設計,包括資料庫的概念結構設計、邏輯結構設計和物理結構設計
    • 模式定義並給出各應用程式共用的結構,是靜態的,一經形成通常不會改變
  • 資料庫行為設計
    • 確定資料庫用戶的行為和動作,而用戶的行為和動作是對資料庫的操作,它們通常是通過應用程式來實現的
    • 由於用戶的行為會使資料庫的內容發生變化,所以行為設計是動態的

數據設計的方法

  • 直觀設計法
    • 一類最原始的資料庫設計方法,它利用設計者的經驗和技巧來設計資料庫模式
    • 由於缺乏科學理論的指導,設計的質量很難保證,因此這種方法已不適應如今信息系統的開發
  • 規範設計法
    • 一類較為普遍、常用的資料庫設計方法
    • 新奧爾良(New Orleans)設計方法
      • 1978年提出,是目前公認的較為完整和權威的一種規範設計方法
      • 將資料庫設計分為四個階段,分別是需求分析、概念結構設計、邏輯結構設計和物理結構設計,它註重資料庫的結構設計、而不太考慮資料庫的行為設計
    • 基於E-R模型的資料庫設計方法
      • P.P.SChen於1976年提出的
      • 基本思想是在需求分析的基礎上用E-R圖構造一個反映現實世界實體之間聯繫的企業模式,然後將此模式轉換成某一特定DBMS下的概念模式
    • 基於第三範式的設計方法
      • 一類結構化設計方法
      • 其思想是在需求分析的基礎上首先確定資料庫的模式、屬性及屬性間的依賴關係,然後將它們組織在一個單一的關係模式中,再分析模式中不符合第三範式的約束條件,進行模式分解,規範成若幹個第三範式關係模式的集合
  • 電腦輔助設計法
    • 在資料庫設計過程中,以領域專家的知識或經驗為主導,模擬某一規範化設計的方法,通常通過人機交互的方式來完成設計的某些過程
    • 目前,許多電腦輔助軟體工程工具(俗稱CASE工具),可以用來幫助資料庫設計人員完成資料庫設計的一些工作,如此可減輕資料庫設計人員的工作量,加快資料庫設計的進度,例如Rational公司的Rational Rose等

資料庫設計的過程

  • 需求分析階段
  • 結構設計階段
    • 概念結構設計
    • 邏輯結構設計
    • 物理結構設計
  • 行為設計階段
    • 功能設計
    • 事務設計
    • 程式設計
  • 資料庫實施階段
    • 載入資料庫數據
    • 調試運行應用程式
  • 資料庫運行和維護階段

資料庫設計過程實際上是一個反覆修改、反覆設計的迭代過程

二、資料庫設計的基本步驟

1 需求分析

  • 需求分析的目標是瞭解與分析用戶的信息及應用處理的要求,並將結果按一定格式整理而形成需求分析報告。
  • 資料庫設計人員進行需求分析的基本方法是聽取資料庫應用部門工作人員的報告,並與之座談。同時,需求分析人員可提交一份需求調查表,該表內容主要包括調查的內容和要求提供資料的格式,應用部門的業務人員則可根據該表進行準備和提交材料。此外,資料庫設計人員還需查閱原始資料,以及跟班作業等。
  1. 確定資料庫範圍

  2. 應用過程分析

  3. 收集與分析數據

    1. 靜態結構
      1. 數據分類表:用於數據的總體描述
      2. 數據元素表:通常意義下的數據項或屬性
    2. 動態結構:概念設計和物理設計的重要依據
      1. 任務分類表
      2. 數據操縱特征表
    3. 數據約束
      1. 數據的安全保密性
      2. 數據的完整性
      3. 響應時間
      4. 數據恢復
  4. 編寫需求分析報告

    1. 實際上,需求分析報告是在需求分析的過程中逐漸整理而形成的,是隨著該過程的不斷深入而反覆修改與完善的。
    2. 需求分析報告通常包含如下內容
      1. 資料庫的應用功能目標(功能、性能)
      2. 標明不同用戶視圖範圍(許可權、用戶、角色)
      3. 應用處理過程需求說明
        1. 數據流程圖
        2. 任務分類表
        3. 數據操縱特征表
        4. 操作過程說明書
      4. 數據字典
        1. 數據字典(Data Dictionary, DD)是資料庫系統中存儲三級結構定義的資料庫,通常指的是資料庫系統中各類數據詳細描述的集合。
        2. 功能是存儲和檢索各種數據描述,即元數據(Metadata)
        3. 通常包括數據分類表、數據元素表和各類原始資料
      5. 數據量
      6. 數據約束

2 概念結構設計

  • 概念結構設計的任務是在需求分析中產生的需求分析報告的基礎上,按照特定的方法設計滿足應用需求的用戶信息結構,該信息結構通常稱為概念模型。
  • 概念模型獨立於任何軟體與硬體,其設計的主要目標是最大限度地滿足應用需求,可完全不顧及具體的硬體和軟體的限制,特別是DBMS的限制,因而它是一個符合用戶要求的趨於理想化的信息結構。
  • 概念結構設計的常用方法有實體分析法和屬性綜合法兩種,它們也分別稱為自頂向下法和自底向上法。

3 邏輯結構設計

邏輯結構設計的目標是講概念模型轉換為等價的、併為特定DBMS所支持數據模型的結構。資料庫邏輯模型一般由層次、網狀、關係數據模型表示。

  • 邏輯結構設計的輸入與輸出信息
    • 輸入信息
      • 獨立於特定DBMS的概念模型
      • 有關響應時間、安全保密性、數據完整性及恢復方面的要求說明,包括保持數據一致性的規則說明
      • 數據量及使用頻率
      • 特定DBMS特性,包括DBMS支持的數據模型及數據定義語言的說明
    • 輸出信息
      • 一個特定DBMS支持的概念模型,或稱之為模型
      • 一個或多個外部視圖,或稱之為子模式
      • 物理設計說明,其主要包括存入資料庫中的數據量、使用頻率及響應時間要求
      • 程式設計說明,其是在需求分析的基礎上,根據已完成的邏輯模型,編製各程式名、執行邏輯步、存取數據的名、順序及操作特征(讀、寫、刪、改)的說明
  • 邏輯結構設計的步驟
start=>start: 概念設計
operation1=>operation: 模型轉換
operation2=>operation: 子模式設計(左)
operation3=>operation: 應用程式設計說明(右)
operation4=>operation: 設計評價
end=>end: 物理設計
start->operation1->operation2->operation3->operation4->end


其中:

  1. 模型轉換是指將概念模型等價地轉換為特定DBMS支持的關係模型、網狀模型或層次模型。對於一個特定的應用環境,通常只轉換為用戶要求的某個特定DBMS所支持的一種模型表示。
  2. 子模式設計的目標是抽取或導出模式的子集,以構造不同用戶使用的局部數據邏輯結構。具體的規則在DBMS的使用指南中通常會有明確的說明。
  3. 編製應用程式設計說明的目的是為可實際運行的應用程式設計提供依據與指導,並作為設計評價的基礎。
  4. 設計評價的任務是分析並檢驗模型及子模式的正確性與合理性,其方法是通過程式設計指南中提交的程式執行邏輯步驟在子模式上的模擬執行來考核模型及子模式是否滿足應用需求,有無遺漏,併進一步估計數據容量及存取效率,為物理設計提供參考信息。評價分析中,如若發現不合理之處,則返回到模型轉換處重新執行,如此反覆,直至滿足要求為止。

4 物理設計

  • 物理設計是指對於一個給定的資料庫邏輯結構,研究並構造物理結構的過程,其具體任務主要是確定資料庫在存儲設備上的存儲結構及存取方法,因DBMS的不同還可能包括建立索引和聚集,以及物理塊大小、緩衝區個數和大小、數據壓縮的選擇等。

5 資料庫實施

  • 載入數據
    • 數據的收集(人工)
    • 分類(人工)
    • 整理(人工)
    • 校驗(程式)
    • 輸入(程式)
  • 應用程式設計
  • 資料庫試運行

6 資料庫運行和維護

  • 資料庫系統投入實際運行標志著資料庫設計和應用開發的基本完成,但絕不意味著設計和應用開發工作的終止。
  • 系統維護中最困難的工作是資料庫重組與重構
  • 重組是當空間利用率和存取效率下降時進行的,它並不改變資料庫的邏輯結構和物理結構,只是利用DBMS提供的設施調整資料庫中數據的存儲位置,從而回收“碎片”,使有關聯的數據儘可能靠近存放,達到提高空間利用率和數據存取效率的目的。
  • 重構是指部分修改資料庫的邏輯結構或物理結構,這往往因應用需求的改變與拓展或發現當初的設計欠妥而引起的,例如增、刪、改數據類型,增、刪、改索引和聚集等。

三、關係資料庫設計方法

關係資料庫是一類採用關係模型作為邏輯數據模型的資料庫系統,它的設計過程遵從資料庫設計的基本步驟,即同樣包含需求分析、概念結構設計、邏輯結構設計、物理結構設計、資料庫實施、資料庫的運行和維護等這樣一些階段,其中關係資料庫的概念結構設計與邏輯結構設計是關係資料庫整個設計過程的關鍵。

1 關係資料庫設計過程與各級模式

2 概念結構設計方法

  • E-R圖的表示方法
    • 實體型,其用矩形表示,矩形框內寫明實體的名稱
    • 屬性,其用橢圓形表示,並用無向邊將其與相應的實體連接起來
    • 聯繫,其用菱形表示,菱形框內寫明聯繫的名稱,並用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯繫的類型(1:1、 1:N、 M:N),如果一個聯繫具有屬性,則這些屬性也要用無向邊與該聯繫連接起來。

實體之間的聯繫:

(1)兩個實體型之間的聯繫

  1. 一對一聯繫(1:1)
  2. 一對多聯繫(1:N)
  3. 多對多聯繫(M:N)

一對一聯繫是一對多聯繫的特例,一對多聯繫是多對多聯繫的特例

(2)兩個以上的實體型之間的聯繫

(3)單個實體型內的聯繫

  • 局部信息結構設計
    • 確定局部範圍
    • 選擇實體
      • 數據分類表是選擇實體的直接依據
      • 在同一局部信息結構中的實體名稱應具有唯一性
    • 選擇實體的關鍵字屬性
    • 確定實體間的聯繫
    • 確定實體的屬性
      • 標識屬性:實體的關鍵字
      • 說明屬性:描述實體的一般特征 (單值的)
  • 全局信息結構設計
    • 各局部E-R圖之間的衝突
      • 屬性衝突
        • 屬性域衝突,即屬性值的類型、取值範圍、取值集合的不同
        • 屬性取值單位衝突
      • 命名衝突
        • 同名異義
        • 異名同義
      • 結構衝突
        • 同一對象在一個局部E-R圖中作為實體,而在另一局部E-R圖中作為屬性
        • 同一實體在不同的E-R圖中屬性個數和類型不同
        • 實體之間的聯繫在不同的E-R圖中是不同的類型
    • 一個好的全局E-R模型除能反映用戶功能需求之外,還應滿足下列條件:
      • 實體類型個數儘可能少
      • 實體類型所含屬性儘可能少
      • 實體類型間聯繫無冗餘

3 邏輯結構設計方法

  • E-R圖向關係模型的轉換
    • 一個實體型轉換為一個關係模式。實體的屬性作為關係的屬性,實體的碼作為關係的碼
    • 一個一對一(1:1)聯繫可以轉換為一個獨立的關係模式,也可以與任意一端對應的關係模式合併
    • 一個一對多(1:N)聯繫可以轉換為一個獨立的關係模式,也可以與N端對應的關係模式合併
    • 一個多對多(M:N)聯繫轉換為一個關係模式
    • 三個或三個以上實體間的一個多元聯繫可以轉換為一個關係模式
    • 具有相同碼的關係模式可合併
  • 數據模型的優化(方法)
    • 確定各屬性間的函數依賴關係
    • 對於各個關係模式之間的數據依賴進行極小化處理,消除冗餘的聯繫
    • 判斷每個關係模式的範式,根據實際需要確定最合適的範式
    • 按照需求分析階段得到的處理要求,分析這些模式對於這樣的應用環境是否合適,確定是否要對某些模式進行合併或分解
    • 對關係模式進行必要的分解,提高數據操作的效率和存儲空間的利用率
  • 設計用戶子模式
    • 可以通過視圖機制在設計用戶視圖時,重新定義某些屬性的別名,使其更符合用戶的習慣,以方便使用
    • 可以對不同級別的用戶定義不同的視圖,以保證系統的安全性
    • 簡化用戶的對系統的使用

4 物理設計方法

物理設計的任務主要是通過對關係建立索引和聚集來實現與應用相關數據的邏輯連接和物理聚集,以改善對資料庫的存取效率

  • 建立索引
    • 靜態 (用戶較多且使用周期相對較長的數據)
    • 動態 (單獨用戶或臨時性使用)
  • 建立聚集
    • 聚集是將相關數據集中存放的物理存儲技術,藉以提高I/O的數據命中率而改善存取速度,其功能由具體的DBMS所提供,如MySQL。
    • 集中存放時指將相關數據儘可能地存放於一個物理塊中,或一個磁軌中,或一個柱面中,或相鄰區域(塊、磁軌、柱面)中。
    • 數據聚集結構的一種有效方式是塊結構方式,塊與塊之間由指針連接,一個塊對應於一個物理分區。
    • 數據聚集可在一個或多個關係式建立。

本文來自博客園,作者:QIAOPENGJUN,轉載請註明原文鏈接:https://www.cnblogs.com/QiaoPengjun/p/17250280.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 存儲過程 特定功能的的SQL指令 進行封裝 編譯之後存儲在資料庫伺服器中客戶端通過名字調用這個SQL指令集 優點: 防止SQL 在網路中惡意修改 無需客戶端編寫 通過網路傳送 存儲過程 SQL存在邏輯關係 支持流程式控制制 分支 迴圈 ##基本語法 創建存儲過程 輸入參數 a 輸入參數b 都是 int ...
  • windows安裝redis及配置教程,附網盤資源 鏈接:https://pan.baidu.com/s/1KvcyY27_q7aI2hQ7QRsEGA?pwd=iidx 一、windows系統安裝及配置 解壓文件,準備開始配置、安裝服務。 1.1、註冊redis的windows服務 在該文件夾中打 ...
  • windows安裝mysql8免安裝版教程,附網盤資源 鏈接:https://pan.baidu.com/s/1_qagfA-i7CbeWG3urIAlgw?pwd=iidx 提取碼:iidx 一、前言 本次使用的mysql版本為mysql8.0.32,安裝的系統為windows系統。使用免安裝的方 ...
  • 本文分享自華為雲社區《選擇KV資料庫最重要的是什麼?》,作者:GaussDB 資料庫 。 經常有客戶提到KV資料庫,但卻偏偏“不要Redis”。比如有個做安全威脅分析平臺的客戶,他們明確表示自己對可靠性要求非常高,需要的不是開源Redis這種記憶體緩存庫,而是KV資料庫。 雖然最後我也沒問清楚他們業務 ...
  • 一、工具介紹 YCSB 於 2010 年開源,YCSB是雅虎開源的NoSQL測試工具,通常用來對noSQL資料庫進行性能,註意此工具僅支持varchar和text類型,且列的長度可以增加,預設是10列,可以根據自己的需要增加列長。運行一個壓力測試需要 6 步: 配置需要測試的資料庫 選擇合適的資料庫 ...
  • 在MySQL中,如果訪問/連接MySQL資料庫時遇到“ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx:xxx' (111)”這個錯誤,我們應該從哪些方面進行考慮和排查問題呢? 下圖是我總結整理的一個思維導圖, ...
  • 生產者創建消息。在其他基於發佈與訂閱的消息系統中,生產者可能被稱為發佈者 或 寫入者。 一般情況下,一個消息會被髮布到一個特定的主題上。生產者在預設情況下把消息均衡地分佈到主題的所有分區上,而並不關心特定消息會被寫到哪個分區。不過,在某些情況下,生產者會把消息直接寫到指定的分區。這通常是通過消息鍵和 ...
  • ChunJun 是一款穩定、易用、高效、批流一體的數據集成框架,⽀持海量數據的同步與計算。ChunJun 既可以採集靜態的數據,比如 MySQL,HDFS 等,也可以採集實時變化的數據,比如 binlog,Kafka 等。同時 ChunJun 也是一個支持原生 FlinkSQL 所有語法和特性的計算 ...
一周排行
    -Advertisement-
    Play Games
  • PasteSpider是什麼? 一款使用.net編寫的開源的Linux容器部署助手,支持一鍵發佈,平滑升級,自動伸縮, Key-Value配置,項目網關,環境隔離,運行報表,差量升級,私有倉庫,集群部署,版本管理等! 30分鐘上手,讓開發也可以很容易的學會在linux上部署你得項目! [從需求角度介 ...
  • SQLSugar是什麼 **1. 輕量級ORM框架,專為.NET CORE開發人員設計,它提供了簡單、高效的方式來處理資料庫操作,使開發人員能夠更輕鬆地與資料庫進行交互 2. 簡化資料庫操作和數據訪問,允許開發人員在C#代碼中直接操作資料庫,而不需要編寫複雜的SQL語句 3. 支持多種資料庫,包括但 ...
  • 在C#中,經常會有一些耗時較長的CPU密集型運算,因為如果直接在UI線程執行這樣的運算就會出現UI不響應的問題。解決這類問題的主要途徑是使用多線程,啟動一個後臺線程,把運算操作放在這個後臺線程中完成。但是原生介面的線程操作有一些難度,如果要更進一步的去完成線程間的通訊就會難上加難。 因此,.NET類 ...
  • 一:背景 1. 講故事 前些天有位朋友在微信上丟了一個崩潰的dump給我,讓我幫忙看下為什麼出現了崩潰,在 Windows 的事件查看器上顯示的是經典的 訪問違例 ,即 c0000005 錯誤碼,不管怎麼說有dump就可以上windbg開幹了。 二:WinDbg 分析 1. 程式為誰崩潰了 在 Wi ...
  • CSharpe中的IO+NPOI+序列化 文件文件夾操作 學習一下常見的文件、文件夾的操作。 什麼是IO流? I:就是input O:就是output,故稱:輸入輸出流 將數據讀入記憶體或者記憶體輸出的過程。 常見的IO流操作,一般說的是[記憶體]與[磁碟]之間的輸入輸出。 作用 持久化數據,保證數據不再 ...
  • C#.NET與JAVA互通之MD5哈希V2024 配套視頻: 要點: 1.計算MD5時,SDK自帶的計算哈希(ComputeHash)方法,輸入輸出參數都是byte數組。就涉及到字元串轉byte數組轉換時,編碼選擇的問題。 2.輸入參數,字元串轉byte數組時,編碼雙方要統一,一般為:UTF-8。 ...
  • CodeWF.EventBus,一款靈活的事件匯流排庫,實現模塊間解耦通信。支持多種.NET項目類型,如WPF、WinForms、ASP.NET Core等。採用簡潔設計,輕鬆實現事件的發佈與訂閱。通過有序的消息處理,確保事件得到妥善處理。簡化您的代碼,提升系統可維護性。 ...
  • 一、基本的.NET框架概念 .NET框架是一個由微軟開發的軟體開發平臺,它提供了一個運行時環境(CLR - Common Language Runtime)和一套豐富的類庫(FCL - Framework Class Library)。CLR負責管理代碼的執行,而FCL則提供了大量預先編寫好的代碼, ...
  • 本章將和大家分享在ASP.NET Core中如何使用高級客戶端NEST來操作我們的Elasticsearch。 NEST是一個高級別的Elasticsearch .NET客戶端,它仍然非常接近原始Elasticsearch API的映射。所有的請求和響應都是通過類型來暴露的,這使得它非常適合快速上手 ...
  • 參考delphi的代碼更改為C# Delphi 檢測密碼強度 規則(仿 google) 仿 google 評分規則 一、密碼長度: 5 分: 小於等於 4 個字元 10 分: 5 到 7 字元 25 分: 大於等於 8 個字元 二、字母: 0 分: 沒有字母 10 分: 全都是小(大)寫字母 20 ...