軟體項目實訓及課程設計指導——實體類結構和類關係的設計示例

2020-12-18 楊教授工作室

軟體項目實訓及課程設計指導——系統概要設計中的實體類結構和關係的設計示例

1、軟體應用系統中的實體類及主要的作用

軟體應用系統中的實體類主要是指軟體系統中代表人、地點、事物或概念等方面的數據對象。通常把業務領域中的各種名詞——例如客戶、訂單、商品等信息可以作為應用系統中的實體域對象。在如下示圖中的各個資料庫表所體現出的數據對象都可以設計為對應的實體類,然後在數據訪問邏輯組件中訪問和操作這些實體類的對象實例。

在銀行帳戶信息管理系統中,主要有代表帳戶信息的AccountInfoPO實體類、代表銀行卡信息的BankCardPO實體類、代表儲戶信息的UserInfoPO實體類和代表管理人員信息的AdminUserInfoPO實體類等。

如下示圖為銀行帳戶信息管理系統中的各個實體類結構和關係的設計結果,作者在此示圖中隱藏了每個實體類中的各個成員屬性(沒有顯示)。

而如下示圖為體現某個軟體應用系統中的數據訪問操作組件、資料庫連接組件和數據實體類組件之間關係的UML類圖的局部截圖。

2、軟體應用系統中的實體類對象實例的持久化及技術實現

所謂實體類對象的實例的持久化也就是將實體類對象的實例永久保存到磁碟文件(如資料庫)中的過程。

為什麼要進行實體類對象實例的持久化過程?因為當實體類對象實例在內存中被創建後,它們不可能永遠地存在——計算機中的內存是無法永久地保存數據的,因此必須對這些實體類對象實例進行持久化操作。否則,如果這些對象實例沒有被持久化,則該實體類對象實例的信息將在軟體應用系統結束運行後隨之也將被消失掉。

目前在J2EE技術平臺中,提供有下面幾種常用的實現實體類對象實例持久化的技術實現方式:

(1)標準的JDBC技術

直接採用JDBC API並在數據訪問對象中直接嵌入標準的SQL語句,並實現對目標資料庫表中的數據訪問操作--增、刪、改和查功能操作;

(2)CMP(Container-Managed Persistence)

由J2EE EJB容器來管理各個實體EJB組件的持久化功能實現;

(3)ORM(Object/Relational Mapping)

也就是採用對象/關係映射技術實現實體類對象實例持久化功能;

(4)JDO(Java Data Objects)

由SUN 公司制定的描述對象實例持久化語義的標準API,它支持把對象實例持久化到任意一種存儲系統中--包括關係型資料庫、面向對象的資料庫、基於XML的資料庫以及其他專用的存儲系統等。

3、體現實體類之間關係的實體關係圖的主要作用

(1)實體關係圖ERD(Entity Relationship Diagram)

實體關係圖是指以實體、關係、屬性三個基本概念來概括和描述軟體系統中的各個實體類對象實例的基本結構,從而描述出實體的靜態數據結構的一種概念模式。當然,不同的UML類圖的實現工具軟體在表現實體關係圖ERD時可能會存在不同的形式,下圖示例為在Rose工具中創建出的某個軟體應用系統的實體關係圖ERD的局部截圖。

而下圖示例圖為在MyEclipse開發工具中應用 Database Explorer ER-Designer設計工具創建出的某個軟體應用系統的實體關係圖ERD的局部截圖。

(2)實體關係圖的主要作用

實體關係圖用於描述軟體應用系統中實體之間的對應關係,在軟體應用系統的需求分析階段使用實體關係圖則可以描述軟體應用系統中實體之間的邏輯關係,而在軟體應用系統的設計階段則使用實體關係圖描述出軟體應用系統中的資料庫表之間的關係(比如「一對一」、「一對多」和「多對多」等關係),如上示圖所示的各個實體之間的對應關係其實就代表對應的資料庫表之間的關係。

採用實體關係圖描述軟體應用系統中的數據模型,能夠幫助軟體應用系統的設計人員預先精確定義出軟體應用系統中的各種數據需求,使軟體應用系統的設計人員能夠對以後的系統改進和軟體應用系統可能的需求變化做出有效的設計規劃——能夠隨著軟體應用系統的開發實現的進展,不斷地改進和完善軟體應用系統的規劃、設計和重構。

(3)實體關係圖所可能存在的不足之處

由於實體關係圖只關注於軟體應用系統中數據之間的關係,而缺乏對軟體應用系統功能的描述。如果將實體關係圖與數據流圖DFD(Data Flow Diagram尤其適用於MIS資料庫管理系統的表述,但是從DFD圖中無法表達活動中的各個實體間的關係)兩種方法相結合,則可以更準確地描述軟體應用系統中的數據需求。

數據流圖DFD是一種最常用的結構化分析工具,主要實現從數據傳遞和加工角度,以圖形的方式刻畫和描述出系統內的數據運動情況(數據的來龍去脈和實際流程----數據在對象間流動),從而實現對系統中信息運動的抽象,是MIS資料庫管理系統中的系統數據建模的主要形式。下面為一個在Excel中設計出的人員管理系統中的DFD示例。

因此,讀者在課程設計中的項目設計中應該要充分地應用實體關係圖ERD和數據流圖DFD以準確地描述出本軟體應用系統項目中系統的數據需求。

4、系統概要設計中的實體類結構和關係的設計

銀行帳戶信息管理系統中的各個實體類結構和關係的設計結果請見下圖所示,為了節省本文章的篇幅,作者在此圖中隱藏了每個實體類中的各個成員屬性(沒有顯示)。

5、依據實體關係圖進行資料庫表的邏輯結構設計時必須要遵循資料庫表結構的範式

在設計軟體應用系統中的各個資料庫表邏輯結構之前,軟體應用系統的設計人員首先要進行軟體應用系統中存在哪些實體和它們之間存在什麼關係的識別與確定;然後再根據各個實體的屬性及各個實體之間的關係,在軟體應用系統的概要設計階段中設計出對應的資料庫表結構和資料庫表之間的關係。

當然,資料庫表邏輯結構的設計工作必須要遵循一定的設計規則。在關係型資料庫表結構設計中,這種設計規則就是資料庫表結構的範式——範式是符合某一種級別的關係模式的集合。

(1)第一範式(1NF)

是指資料庫表的每一列都是不可分割的基本數據項。簡而言之,第一範式就是資料庫表中無重複的列。

(2)第二範式(2NF)

要求資料庫表中的每個實例或行必須可以被唯一地區分,這個唯一屬性列被稱為主關鍵字或主鍵。

(3)第三範式(3NF)

要求一個資料庫表中不包含已在其它表中已包含的非主關鍵字信息,也即屬性不依賴於其它非主屬性。

下圖所示為銀行帳戶信息管理系統中的資料庫表的定義及代表帳戶信息的資料庫表account表的結構定義的圖示。

6、依據實體關係圖進行資料庫表的邏輯結構設計

根據實體類中的成員屬性獲得資料庫表結構中的各個欄位的類型的主要工作過程如下。(1)首先,根據對每個實體類中的數據的抽象結果獲得對應的成員屬性,據此作為資料庫表結構設計的基本依據;

(2)然後,再建立出目標資料庫表結構,並進行數據內部以及外在關係的分析,從而有效地建立出整個軟體應用系統的數據結構——在關係型資料庫系統中通常稱為資料庫表結構;(3)最後,把各種數據信息用不同的資料庫表來存儲。

當然,在資料庫表的主鍵欄位的設計方面儘可能不要使用業務本身的數據作為資料庫表的主鍵——比如身份證號碼、公司編號、學生的學號等;並且主鍵與外鍵相互配對,表示實體之間的連接關係(也就是對應的類之間的關聯關係等)。

但讀者需要注意的問題,由於面向對象設計的機制與目前的關係型資料庫管理系統中所支持的各種關係模型存在不同和差異,造成了面向對象設計與關係型資料庫表設計之間在體現關係方面的不匹配——因為面向對象設計是基於如耦合、聚合、封裝等理論,而關係模型則是基於數學原理;此外,面向對象設計中提供有「繼承」、「組合」、「聚合」和「依賴」等關係的支持,而在關係模型中則不存在這些關係。

因此,軟體應用系統在依據實體關係圖設計出對應的資料庫表結構關係時需要進行「對象/關係映射」(O/R Mapping)的工作——也就是將關係型資料庫表和面向對象設計中的對象關係之間相關聯。

如下示圖是根據某個軟體應用系統中各個實體的屬性及各個實體之間的關係,軟體應用系統的設計人員在設計階段設計出對應的資料庫表結構和表關係的局部截圖。

相關焦點

  • 軟體項目實訓及課程設計指導——系統設計中的系統架構設計示例
    軟體項目實訓及課程設計指導——軟體系統設計中的系統架構設計示例1、軟體系統概要設計中所涉及的主要設計內容和工作過程(1)在軟體應用系統項目的系統概要設計工作中,首先是要完成軟體系統的總體架構設計及系統的分層設計,然後再利用UML包視圖體現出軟體系統架構設計的最終結果
  • 軟體項目實訓及課程設計指導——軟體系統設計中的系統架構設計示例
    軟體項目實訓及課程設計指導——軟體系統設計中的系統架構設計示例 1、軟體系統概要設計中所涉及的主要設計內容和工作過程 (1)在軟體應用系統項目的系統概要設計工作中,首先是要完成軟體系統的總體架構設計及系統的分層設計,然後再利用
  • 軟體項目實訓及課程設計指導——UML靜動態建模在詳細設計中應用
    軟體項目實訓及課程設計指導——UML靜態和動態建模技術在詳細設計中的應用示例1.1 在軟體應用系統的詳細設計中要充分應用UML靜態和動態建模技術1、再次理解UML技術規範中的「統一」的內涵(2)在課程設計的項目開發中要充分應用UML靜態和動態建模技術在課程設計的項目開發中,作者強烈地要求讀者要應用UML所提供的各種技術規範實現所開發的軟體應用系統項目的分析、設計和開發實現等過程,這並不是要求讀者為了UML而應用「UML」——因為UML的統一建模的機制抓住了軟體應用系統的本質,它能夠定義軟體應用系統的體系結構
  • 軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向服務的系統架構設計1、什麼是基於SOA的軟體系統架構(1)什麼是面向服務的軟體系統體系架構所謂的SOA(Service-Oriented Architecture,面向服務的軟體系統體系架構
  • 軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計
    軟體項目實訓及課程設計指導——如何實現面向對象的系統架構設計1、什麼是面向對象的軟體應用系統的架構設計從軟體應用系統的架構設計師的角度來看,所謂的軟體應用系統的系統架構就是一套構建軟體應用系統的整體結構的各種設計準則
  • 軟體項目實訓及課程設計指導——如何在數據持久層中應用DAO模式
    軟體項目實訓及課程設計指導——如何在J2EE應用系統數據持久層中應用DAO模式1、為什麼要在軟體應用系統中提供數據持久層軟體應用系統中的數據持久層主要為整個軟體應用系統提供數據訪問功能服務,從而可以使軟體應用系統中的業務層組件的設計和開發人員能夠專注於系統業務邏輯的開發
  • 軟體項目實訓及課程設計指導——如何在項目中實現日誌、事務功能
    軟體項目實訓及課程設計指導——如何在J2EE平臺項目中實現交易日誌、事務控制等功能1.1 基於面向切面AOP設計思想的系統架構設計實現交易日誌的應用示例1、面向對象OOP設計中的「開-閉」(OCP,Open-Close Principle)設計原則
  • 課程設計指導——如何應用Java反射技術靈活地創建程序類對象實例
    軟體項目實訓及課程設計指導——如何應用Java反射技術靈活地創建程序類的對象實例1、如何應用屬性配置文件實現對系統中的配置信息進行讀寫操作Java中的屬性配置文件主要可以作為軟體應用系統及項目的配置文件,比如許多J2EE的開源框架系統中都提供了屬性配置文件作為該應用框架的對外配置文件
  • 項目實訓及課程設計——如何合理地設計軟體應用系統的Web表示層
    軟體項目實訓及課程設計指導——如何合理地設計軟體應用系統的Web表示層1、用戶界面是軟體應用系統的門面,在設計和開發實現時必須高度重視軟體應用系統表示層內的各個組件是軟體應用系統的前端界面組件,它們直接與應用該軟體應用系統的最終操作者發生各種人機互動行為。
  • 在軟體系統設計中如何降低軟體系統中程序類之間耦合關係(上篇)
    軟體項目實訓及課程設計指導——如何降低軟體系統中程序類之間耦合關係(上篇)1、分離軟體應用系統中各個模塊類的接口定義和對應接口的具體功能實現面向對象程序類設計的五大原則中的「開放-封閉原則」 ( OCP,Open-Close Principle)倡導分離接口的定義和接口的具體功能實現的設計原則
  • 課程設計指導——如何應用XML+XSLT技術分離Web表示層數據和樣式
    軟體項目實訓及課程設計指導——如何應用XML+XSLT技術分離Web表示層數據和樣式1、「XML+XSLT」技術在J2EE技術平臺中的應用Java語言及相關的應用技術的產生解決了跨平臺的軟體應用系統的開發,但沒有解決如何實現跨平臺的數據交換問題。
  • 如何應用數據訪問服務層分離系統中的業務層和持久層之間耦合關係
    軟體項目實訓及課程設計指導——如何應用數據訪問服務層分離業務層和持久層之間耦合關係作者已經在本系列文章《軟體項目實訓及課程設計指導--如何正確地設計J2EE應用系統持久層中的各個組件結構及關係》中為讀者介紹了為什麼要設計和應用數據訪問服務接口的目的及如何設計該接口以真正達到利用數據訪問服務層組件隔離業務處理邏輯和數據訪問操作邏輯的應用效果
  • 如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)
    軟體項目實訓及課程設計指導——如何保證軟體應用系統架構設計結果的可擴展性和可重用性(上篇)1、良好的可重用性軟體系統架構設計結果的主要體現可重用性的軟體應用系統的系統架構設計結果主要體現在如下兩個方面——本項目的系統架構設計的結果是可重用的和在本項目的系統架構設計中重用成熟的系統架構設計方案
  • 如何應用GOF設計模式中的創建型模式實現鬆耦合地創建對象實例
    軟體項目實訓及課程設計指導——如何應用GOF設計模式中的創建型模式實現鬆耦合地創建對象實例1、GOF設計模式中的工廠模式在GOF設計模式的劃分中,把與實現對象的實例化相關的模式稱之為「創建型模式」——而其中的工廠模式為創建型模式中的一種具體實現形式。
  • 如何應用策略設計模式分離JDBC資料庫連接中的外部環境信息
    軟體項目實訓及課程設計指導——如何應用策略設計模式分離JDBC資料庫連接中的外部環境信息1、什麼是策略(Strategy)設計模式策略設計模式把「算法」(也就是軟體應用系統中的業務規則或者待實現的功能等)和「環境」(封裝軟體應用系統在實際應用時的場景)相互分離
  • 【暑期課程】手繪與電腦服裝設計效果圖實訓營——15天全方位學習效果圖,圓你時裝設計夢
    項目設計點評Day2基本的人體動態原理幾何流暢人體轉換項目設計點評Day3臉部五官以及髮型妝容的刻畫常用時裝動態勾線項目設計點評Day4人體的完整處理人體光影關係項目設計點評Day5服裝線稿示範基本的衣紋學習項目設計點評Day6手繪時裝插畫賞析服裝和人體的關係項目設計點評Day7不同面料的處理面料質感技巧項目設計點評Day8馬克筆的正確使用方法與筆觸解析馬克筆容色技巧項目設計點評Day9
  • 如何正確地應用Web MVC架構模式分離表示層和模型處理層耦合關係
    軟體項目實訓及課程設計指導——如何正確地應用Web MVC架構模式分離表示層和模型處理層耦合關係1、MVC體系架構設計模式是用來幫助系統設計人員控制「變化」的一種設計模式MVC體系架構設計模式是上世紀80年代在Smalltalk-80中出現的一種軟體設計模式
  • 在程序中如何正確地創建和銷毀軟體應用系統中文件IO流對象實例
    軟體項目實訓及課程設計指導——如何正確地創建和銷毀軟體應用系統中文件IO流對象實例1、Java文件輸入輸出(讀寫)相關的技術基礎知識(1)流(Stream)它是通過緩衝機制將數據從生產者(如鍵盤、磁碟文件、內存或其他設備
  • 如何在系統架構設計中應用面向切面的設計思想分離橫切關注點
    軟體項目實訓及課程設計指導——如何在系統架構設計中應用面向切面的設計思想分離橫切關注點1、什麼是面向切面編程AOP(Aspect Oriented Programming)技術對於「AOP 和 Spring AOP技術」等有關的編程實現的細節內容,作者已經在「J2EE項目實訓——Spring框架技術」一書中的第6章「AOP 和 Spring AOP技術」和第7章「Spring AOP中的Advice通知」作了比較詳細的介紹。
  • 課程設計指導——應用AJAX技術提高Web應用系統的整體響應性能
    軟體項目實訓及課程設計指導——應用AJAX技術提高Web應用系統的整體響應性能1、軟體應用系統的性能指標是衡量軟體應用系統優劣程度的一個重要指標Web應用系統由於是基於HTTP協議產生請求、並由Web伺服器端程序處理對應的請求、最後再次通過HTTP響應向Web