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

来源: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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...