第七章-概念結構設計

来源:https://www.cnblogs.com/Mr-shne/archive/2022/11/13/16880207.html
-Advertisement-
Play Games

7.1 資料庫設計概述: 資料庫設計一般定義:資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求 定的應用環境:一個資料庫不可能什麼數據都接收,如在學校或 ...


7.1 資料庫設計概述:

  • 資料庫設計一般定義:資料庫設計是指對於一個給定的應用環境,構造(設計)優化的資料庫邏輯模式和物理結構,並據此建立資料庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據操作要求
    • 定的應用環境:一個資料庫不可能什麼數據都接收,如在學校或工廠,就要建立相當於的資料庫,學校工廠就是環境 
    • 邏輯模式:如設計的一張表,表的屬性設計,每個表中應該放什麼數據,是第幾範式,這就是在邏輯模式設計的
    • 物理結構:就是數據存儲在什麼地方,怎麼存放
  • 信息管理要求:在資料庫中應該存儲和管理哪些數據對象
  • 數據操作要求:對數據對象需要進行哪些操作,如查詢、增、刪、 改、統計等操作
  • 資料庫設計的目標:為用戶和各種應用系統提供一個信息基礎設施和高效的運行環境
  • 高效的運行環境:(資料庫是應用程式理最底層的交互平臺,所以要保證高效的操作,要求如下)
    • 資料庫數據的存取效率高
    • 據庫存儲空間的利用率高
    • 資料庫系統運行管理的效率高

7.1.1 資料庫設計的特點:

  • 三分技術,七分管理,十二分基礎數據
    • 管理:資料庫建設項目管理、企業(即應用部門)的業務管理
    • 基礎數據:數據的收集、整理、組織和不斷更新是資料庫建設中的重要環節
  • 結構(數據)設計和行為(處理)設計相結合
    • 整個設計過程中把資料庫結構設計和對數據的處理設計密切結合起來
    • 結構和行為分離的設計:(如圖,資料庫和軟體設計分離,不好的設計)
      • 傳統的軟體工程:重行為設計,忽視對應用中數據語義的分析和抽象,只要有可能就儘量推遲數據結構設計的決策
      • 早期的資料庫設計:重結構設計,致力於數據模型和資料庫建模方法研究,忽視了行為設計對結構設計的影響

7.1.2 資料庫設計方法:

  • 大型資料庫設計是涉及多學科的綜合性技術,又是一項龐大的工程項目。它要求資料庫設計人員具有多方面的知識和技術主要包括
    • 電腦的基礎知識
    • 軟體工程的原理和方法
    • 程式設計的方法和技巧
    • 資料庫的基本知識
    • 資料庫設計技術
    • 應用領域的知識
  • 早期資料庫設計:主要採用手工與經驗相結合的方法:
    • 設計質量與設計人員的經驗和水平有直接關係
    • 缺乏科學理論和工程方法的支持,設計質量難以保證
    • 資料庫運行一段時間後又不同程度地發現各種問題,增加了系統維護的代價
  • 規範設計法基本思想:過程迭代和逐步求精,典型方法如下:
    • 新奧爾良(New Orleans)方法
      • 簡介:把資料庫設計分為四個間階段,目前不同的階段做什麼事,如第一個階段需求分析(瞭解用戶和應用程式對資料庫的要求),第二個階段概念結構設計根據需求分析設計出資料庫大致長什麼樣(如用E-R圖),第三階段邏輯設計根據E-R設計轉為資料庫中實際的表,第四階段物理結構設計(就是數據存儲在什麼地方,怎麼存放)  
    • 基於 E-R 模型的設計方法
      • 簡介:根據需求分析得到實體與實體之間的聯繫,做成E-R圖  
    • 3NF(第三範式)的設計方法
      • 簡介:就是取消了表中的傳遞函數依賴  
    • 面向對象的資料庫設計方法
      • 簡介:和java中的面向對象一樣的原理  
    • 統一建模語言(UML)方法
      • 簡介:這是一種工具,和E-R圖有點類似,表達出實體與實體間的聯繫

7.1.3 資料庫設計的基本步驟:

  • 資料庫設計分 6 個階段:(在上述的新奧爾良方法中增加了兩個設計)
    • 需求分析  -- 就是瞭解資料庫要建成什麼樣
    • 概念結構設計 -- 把資料庫描述出來(如用E-R或UML)
    • 邏輯結構設計 -- 根據概念結構設計,在資料庫中設置出一張張表
    • 物理結構設計 -- 數據存儲在什麼地方,怎麼存放
    • 資料庫實施 -- 上面四步資料庫就建成,那怎麼用,就是實施
    • 資料庫運行和維護 -- 資料庫進行使用枚舉需要運行和維護
  • 細節:
    • 需求分析和概念結構設計獨立於任何資料庫管理系統
      • 理解:這兩個階段不是真得要建立資料庫,只是設計階段,獨立於任何資料庫管理系統,就是那我設計完了,可能用MySQL或SqlServer
    • 邏輯結構設計和物理結構設計與選用的資料庫管理系統密切相關
      • 理解:就是不同的資料庫管理系統,設計的操作也不同,所以密切相關,像MySQL或SqlServer的很多操作就不同 
    • 這個圖可以多看:  
  • 參加資料庫設計的人員
    • 系統分析人員和資料庫設計人員:資料庫設計的核心人員,將自始至終參與資料庫設計,其水平決定了資料庫系統的質量
    • 資料庫管理員和用戶代表:主要參加需求分析與資料庫的運行和維護
    • 應用開發人員(包括程式員和操作員):在實施階段參與進來,分別負責編製程式和準備軟硬體環境
  • 各階段的主要任務:
    • 1. 需求分析階段
      • 整個設計過程的基礎,是最困難和最耗費時間的一步
      • 是否做得充分與準確,決定了構建資料庫的速度和質量
    • 2. 概念結構設計階段
      • 整個資料庫設計的關鍵
      • 通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體資料庫管理系統的概念模型
    • 3. 邏輯結構設計階段
      • 將概念結構轉換為某個資料庫管理系統所支持的數據模型,並對其進行優化
    • 4.物理結構設計階段  
      • 為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)
    • 5. 資料庫實施階段
      • 根據邏輯設計和物理設計的結果建立資料庫
      • 編寫與調試應用程式
      • 組織數據入庫併進行試運行
    • 6. 資料庫運行和維護階段
      • 經過試運行後即可投入正式運行
      • 在運行過程中必須不斷對其進行評估、調整與修改
  • 細節:
    • 設計一個完善的資料庫應用系統,往往是上述 6 個階段的不斷反覆
    • 這個設計步驟既是資料庫設計的過程,也包括了資料庫應用系統的設計過程
    • 在設計過程中把資料庫的設計和對資料庫中數據處理的設計緊密結合起來,將這兩個方面的需求分析、抽象、設計、實現在各個階段同時進行,相互參照,相互補充,以完善兩方面的設計 
  • 各階段的數據設計描述:
  • 對上述圖簡單的說明:
    • 1.需求分析階段
      • 綜合各個用戶的應用需求
    • 2.概念設計階段
      • 用圖像的方式(E-R圖)表示出需要分析
    • 3.邏輯設計階段
      • 將E-R圖轉換成具體的資料庫產品支持的數據模式(就是表)
      • 然後根據用戶處理的要求、安全性考慮,在基本表上在建立視圖,形成數據外模式
    • 4.物理設計階段
      • 根據(不同的產品資料庫)資料庫管理系統特點和處理的需要,進行物理存儲安排,建立索引,形成資料庫內模式

7.1.4 資料庫設計過程中的各級模式:

7.2 需求分析:

  • 什麼是需求分析?分析用戶的要求

7.2.1 需求分析的任務:

  • 詳細調查現實世界要處理的對象(組織、部門、企業等)
  • 充分瞭解原系統(手工系統或電腦系統)的工作概況
  • 明確用戶的各種需求,然後在此基礎上確定新系統的功能
  • 新系統必須充分考慮今後可能的擴充和改變
  • 調查的重點:是“數據”和“處理”,通過調查、收集與分析,獲得用戶對資料庫的信息要求、處理要求、安全性與完整性要求

7.2.2 需求分析的方法:

  • 需求分析的目標:
    • 調查清楚用戶的實際要求併進行初步分析,與用戶達成共識,分析與表達這些需求
  • 調查用戶需求的具體步驟:
    • 調查組織機構情況
    • 調查各部門的業務活動情況
    • 協助用戶明確對新系統的各種要求,包括信息要求、 處理要求、完全性與完整性要求
    • 確定新系統的邊界
  • 常用的調查方法:
    • 跟班作業。通過親身參加業務工作來瞭解業務活動的情況
    • 開調查會。通過與用戶座談來瞭解業務活動情況及用戶需求
    • 請專人介紹
    • 詢問。對某些調查中的問題可以找專人詢問
    • 設計調查表請用戶填寫。如果調查表設計得合理,則很有效
    • 查閱記錄。查閱與原系統有關的數據記錄
    • 結構化分析方法(Structured Analysis,SA):從最上層的系統組織機構入手,採用自頂向下、逐層分解的方式分析系統
    •           

7.2.3 數據字典:

  • 什麼是數據字典?數據字典和新華字典一樣,但數據字典解釋的是每一個數據,解釋每一個數據裡面有什麼屬性和什麼操作
  • 數據字典是關於資料庫中數據的描述,即元數據(不是直接描述,如存的是張三,學號001不是這樣描述,而是描述出學號是什麼樣的,應該學號是三位的的數字,範圍是多少,是這樣描述的),不是數據本身。數據字典是在需求分析階段建立,是繼續詳細的數據收集和數據分析所得到的,併在資料庫設計過程中不斷修改、充實、完善的
  • 數據字典包括:數據項(有哪些數據)、數據結構(這個數據是什麼結構,如:學號的結構是什麼)、數據流(數據的流向,部門A指向部門B)、數據存儲(數據是B+樹存儲還是表的形式存儲)、處理過程(資料庫哪些數據要進行增刪改查,這個操作可以被哪些用戶擁有)
  • 數據項:數據項是不可再分的數據單位
    • 數據項描述={數據項名,數據項含義說明,別名,數據類型,長度,取值範圍,取值含義,與其他數據項的邏輯關係,數據項之間的聯繫} 
    • 理解:
      • 數據項名 -- 如Sno
      • 數據項含義說明 -- Sno的作用
      • 別名 -- Sno在其它其它表中是否有別名,如學號
      • 數據類型 -- Sno的數據類型,然char(3)
      • 長度 -- char(3),3就是它的長度
      • 取值範圍 -- Sno的取值範圍001-999
      • 取值含義 -- 001是學號,或表示男女生0是女1是男
      • 與其他數據項的邏輯關係 --如: SC(Sno,Cno),就是外鍵
      • 數據項之間的聯繫:如知道Sno就可以推出學生的姓名,就是函數依賴
    • “取值範圍”、“與其他數據項的邏輯關係”定義了數據的完整性約束條件,是設計數據檢驗功能的依據
    • 可以用關係規範化(範式)理論為指導,用數據依賴的概念分析和表示數據項之間的聯繫
  • 數據結構:數據結構反映了數據之間的組合關係
    • 數據結構描述={數據結構名,含義說明,組成:{數據項或數據結構}}
    • 說明:一個數據結構可以由若幹個數據項組成,也可以由若幹個數據結構組成,或由若幹個數據項和數據結構混合組成
    • 理解:如倉庫進貨,入庫單就是數據結構,入庫單上又有很多信息
  • 數據流:數據流是數據結構在系統內傳輸的路徑
    • 數據流描述={數據流名,說明,數據流來源,數據流去向,組成:{數據結構},平均流量,高峰期流量}
    • 理解:如從選課表中抽取一個成績反饋給用戶
      • 數據流名 -- 就可以是成績
      • 說明 -- 該數據是乾什麼的
      • 數據流來源 -- 數據從哪來的SC表
      • 數據流去向 -- 數據到哪去,到應用程式
      • 組成 -- 如學號、姓名和成績組成
      • 平均流量 -- 如12小時或一個月的傳輸次數
      • 高峰期流量 -- 如15號來查詢成績,15號就是高峰期流量
    • 說明:
      • 數據流來源:說明該數據流來自哪個過程
      • 數據流去向:說明該數據流將到哪個過程去
      • 平均流量:在單位時間(每天、每周、每月等)里的傳輸次數
      • 高峰期流量:在高峰時期的數據流量
  • 數據存儲:數據存儲是數據結構停留或保存的地方,也是數據流的來源和去向之一
    • 數據存儲描述={數據存儲名,說明,編號,輸入的數據流,輸出的數據流,組成:{數據結構},數據量,存取頻度,存取方式}
    • 理解:
      • 數據存儲名 -- 這個存儲的名字
      • 說明 -- 存儲什麼信息
      • 編號 -- 存儲編號
      • 輸入/出的數據流 -- 輸入輸出的信息
      • 組成 -- 輸入輸出的是哪些數據,存取的量,存取的頻率,存取的方式
    • 說明:
      • 存取頻度:每小時、每天或每周存取次數及每次存取的數據量等信息
      • 存取方式:批處理/ 聯機處理;檢索/ 更新;順序檢索/隨機檢索
      • 輸入的數據流:數據來源
      • 出的數據流:數據去向
  • 處理過程:處理過程的具體處理邏輯一般用判定表或判定樹來描述。數據字典中只需要描述處理過程的說明性信息
    • 處理過程描述={處理過程名,說明,輸入:{數據流},輸出:{數據流},處理:{簡要說明}}
    • 說明: -- 說白了就是我要對該數據做什麼
      • 說明該處理過程的功能及處理要求 -- 如該處理要達到什麼目的,如查詢成績最高的學生
      • 功能:該處理過程用來做什麼
      • 處理要求:處理頻度要求(如多次時間執行一次),如單位時間里處理多少事務,多少數據量、響應時間要求等 
      • 這些處理要求是後面物理設計的輸入及性能評價的標準
  • 需求分析小結:
    • 需求收集和分析作為資料庫設計的第一階段是十分重要的
    • 第一階段收集的基礎數據(用數據字典來表達)是下一步進行概念設計的基礎
    • 強調兩點:
      • 設計人員應充分考慮到可能的擴充和改變,使設計易於更改、系統易於擴充
      • 必須強調用戶的參與  

7.3 概念結構設計(E-R):

  • 什麼是概念結構設計?將需求分析得到的用戶需求抽象為信息結構(即概念模型)的過程就是概念結構設計

7.3.1 概念模型:

  • 什麼是概念模式?將需求分析得到的用戶需求抽象為信息結構(即概念模型)
  • 概念模型的主要特點:

    (1)能真實、充分地反映現實世界,包括事物和事物之間的聯繫,是現實世界的一個真實模型

    (2)易於理解,可以用它和不熟悉電腦的用戶交換意見

    (3)易於更改,當應用環境和應用要求改變時容易對概念模型修改和擴充

    (4)易於向關係、網狀、層次等各種數據模型轉換

 

7.3.2 E-R模型:

  • 描述現實世界的概念模型的工具:E-R 模型
  • 實體是E-R圖的核心,做E-R圖的時要先找實體,實體包括實體的名稱,實體的屬性,在找另外一個實體,在找實體與實體的聯繫
  • 什麼是實體?在現實世界中客觀存在並可相互區別的事物,如一個人,商店等
  • 實體之間的聯繫: 兩個實體型之間的聯繫
    • 一對一聯繫(1:1)、一對多聯繫(1:n)、多對多聯繫(m:n)
  • 兩個以上的實體型之間的聯繫:

    • 多個以上的實體型之間也存在著一對一、一對多、多對多聯繫
  • 單個實體型內的聯繫:

    • 同一個實體集內的各實體之間也可以存在一對一、一對多、多對多聯繫

  • 聯繫的度:參與聯繫的實體型的數目
    • 兩個實體型之間的聯繫度為 2,也稱為二元聯繫
    • 三個實體型之間的聯繫度為 3,稱為三元聯繫
    • N個實體型之間的聯繫度為 N,也稱為 N 元聯繫
  • E-R 圖:
    • E-R 圖提供了表示實體型、屬性和聯繫的方法:
      • 實體型:用矩形表示,矩形框內寫明實體名
      • 屬性:用橢圓形表示,並用無向邊將其與相應的實體型連接起來
      • 聯繫:用菱形表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯繫的類型(1:1、1:n 或 m:n) 
  • 例子:
    • 某個工廠物資管理的概念模型。物資管理涉及的實體有:
      • 倉庫:屬性有倉庫號、面積、電話號碼
      • 零件:屬性有零件號、名稱、規格、單價、描述
      • 供應商:屬性有供應商號、姓名、地址、電話號碼、賬號
      • 項目:屬性有項目號、預算、開工日期
      • 職工:屬性有職工號、姓名、年齡、職稱
    • 這些實體之間的聯繫如下:  
      • 一個倉庫可以存放多種零件,一種零件可以存放在多個倉庫中,因此倉庫和零件具有多對多的聯繫。用庫存量來表示某種零件在某個倉庫中的數量
      • 一個倉庫有多個職工當倉庫保管員,一個職工只能在一個倉庫工作,因此倉庫和職工之間是一對多的聯繫
      • 職工之間具有領導與被領導關係,即倉庫主任領導若幹保管員,因此職工實體型中具有一對多的聯繫 
      • 供應商、項目和零件三者之間具有多對多的聯繫,即一個供應商可以供給若幹項目多種零件,每個項目可以使用不同供應商供應的零件,每種零件可由不同供應商供給
    •  

       

                      

      

         

    

  

 

                                        

 

 

                        

         

 

  

                          

 

 

         


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

-Advertisement-
Play Games
更多相關文章
  • 1、Mybatis 是什麼 MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作。MyBatis 可以通過簡單的 XML 或註解來配置和映射原始類型、介面和 Java POJO(Plain ...
  • JZ61 撲克牌順子 描述 現在有2副撲克牌,從撲克牌中隨機五張撲克牌,我們需要來判斷一下是不是順子。 有如下規則: 1. A為1,J為11,Q為12,K為13,A不能視為14 2. 大、小王為 0,0可以看作任意牌 3. 如果給出的五張牌能組成順子(即這五張牌是連續的)就輸出true,否則就輸出f ...
  • 核心思路是使用Region的求交集和並集的結果與原始Region對比 Winform項目自帶這個類庫,如果使用控制台,需要先在nuget安裝System.Drawing.Common /// <summary> /// 計算兩個形狀的關係 /// </summary> /// <param name ...
  • C#11添加了文件作用域類型功能:一個新的file修飾符,可以應用於任何類型定義以限制其只能在當前文件中使用。 這樣,我們可以在一個項目中擁有多個同名的類。 通過下麵的項目顯示,該項目包含兩個名為Answer的類。 文件File1.cs中 namespace ConsoleApp11 { file ...
  • carbon copy cloner 6 for Mac是一款支持數據同步和備份的磁碟克隆備份工具,Carbon Copy Cloner軟體設計的初衷就是智能到讓人忘記它的存在。界面簡單、易於配置,但後臺各種強大,甚至可設定插上某個移動硬碟時自動開始備份。支持自動備份到另一個目錄、備份到移動硬碟、備 ...
  • ASF掛卡部署,非搬運且親測有效。 一、如何下載ASF 1.下載ASF對應版本 首先你需要確定自己的系統環境,這裡我採用的是centos7.6,即linux64位系統作為演示。第一步進入github查看最新的ASF版本,鏈接如下:https://github.com/JustArchiNET/Arc ...
  • 無屏幕、無網線、根目錄wpa_supplicant失效,甚至沒電腦也可以實現。 以前跑樹莓派一直是用的ubuntu和raspbian,突然想試試centos。因為我沒有單獨的顯示屏,往常格式化寫鏡像之後,都是根目錄寫入ssh和wpa_supplicant,開機自動聯網獲得樹莓派ip就能ssh命令行登 ...
  • 背景 隨著移動設備的普及,越來越多的業務具備了時空屬性,例如快遞,試試跟蹤包裹、快遞員位置。例如實體,具備了空間屬性。 例如餐飲配送,送貨員位置屬性。例如車輛,實時位置。等等。 其中兩大需求包括: 1、對象位置實時跟蹤,例如實時查詢某個位點附近、或某個多邊形區域內的送貨員。 2、對象位置軌跡記錄和分 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...