1. 程式人生 > 其它 >資料庫設計、資料庫需求分析、資料庫結構設計

資料庫設計、資料庫需求分析、資料庫結構設計

一  基本概念

1 資料庫設計面對的主要有哪些問題

(1) 懂資料庫原理同時懂甲方軟體專業知識的人缺少。

(2) 應用的資料庫系統的最終目標往往在一開始不能完全明確,與開發者與使用者方最初沒在要求完全一致有關.

(3) 應用業務系統千差萬別的,難以找到一種通用的工具和方法

2 資料庫設計特點

(1) 對人員要求,綜合性:成熟的開發人員涉及到的知識面,主要包括計算機專業和業務專業知識,要解決技術問題同時,還要去解決許多非技術方面的問題。

(2) 資料庫結構設計與動態功能行為是分離的。

結構設計主要包括語義結構(概念性的),資料結構(邏輯性),儲存結構(物理資料庫)

動態行為設計:基於資料庫的應用程式設計(動作操作,功能實現)

3 目前資料庫設計主要方法

NEW ORLEANS--新奧爾良方法:一個數據庫要成功設計,該流程:

需求分析(形成需求分析,得到說明書)---概念結構設計(概念結構)---邏輯結構設計(形成邏輯結構)----物理設計(生成磁碟上的物理資料庫)

整個設計過程都要基於以前理論和正規化。

4 常用的資料庫設計細節步驟

把新奧爾良方法細化:

需求分析---結構設計—行為功能設計---資料庫實施---資料庫執行和維護

需求分析:瞭解使用者方的真實需要,紙面化,形成需求說明書

結構設計:主要有概念結構,邏輯結構,物理結構的思考

行為設計:功能設計,事務設計,APP設計

資料庫實施:載入資料庫,除錯執行應用程式

執行和維護:即使軟體交付後,在保證期內維護

 

二 資料庫需求分析

 是整個設計過程的起點,詳細地明確使用者方要求,直接影響後面所有階段。

 主要難點:真實完整地明確要求;技術上可能存在難點;

 調查使用者需求階段主要包括:對方業務現狀,資訊源流,外部的其它要求

 資訊源流:各種資料種類,型別,資料量;各種資料的來源,去向,結點是哪裡;各種資料如何產生,修改,查詢,更新,使用頻率,效率;這些看起來分散的資料在業務如何聯絡起來?

 得到需求報告,過程中常用方法:檢查使用者方工作中的文件;面談;觀察使用者方操作的中業務;甚至研究和問卷調查等

三 資料庫結構設計

1資料庫設計分類

資料庫結構設計(靜態描述的東西),資料庫行為設計(功能行為,程式設計)

結構設計:資料庫概念結構,邏輯結構,物理儲存結構

行為設計:資料庫的功能組織和流程控制,APP實現

2 概念結構設計(在人腦和紙上體現)常用E-R(實體—聯絡)

(1)設計區域性E-R模型:定義某個功能或小範圍內的模型,定義實體,明確實體的聯絡,各實體的屬性(某個或某些表的定義)

(2)設計全域性E-R模型:把所有的區域性E-R圖整合一個全域性的E-R

(3)優化全域性E-R模型

 

 E-R介紹:

  矩形框表示實體表,圓角長方或橢圓表示屬性列;

  要描述出不同實體之間的聯絡:1:1, 1:m,  m:n

  原則:實體個數儘量少,但要滿足各正規化;一個實體包含的屬性列儘量少,但要保證對實體屬性列描述清楚。

  實體間的聯絡無冗餘。

(要思考平衡各正規化與實體集大小關係)

3 E-R模型如何向關係模型轉換(資料庫的邏輯結構設計概念)

說的是根據E-R圖如何得到表的結構;根據E-R描述,設計出邏輯表;

一個實體轉換為一個關係模式;實體中的屬性就是關係表的列屬性,實體中的識別符號就是關係表的中的碼.

難點在:如何處理實體之間的聯絡

(1) 兩個實體是1:1關係:可直接把E-R圖轉換為關係模式.

如“學生”實體與“學生籍貫”實體之間是1:1,在轉換時,兩個實體各自獨立轉換

 

 

把上面的E-R實體“學生”轉換為關係模式:

學生(學號 pk, 姓名,性別…)

(2) 實體間是1:m:  如實體“部門”和“職工”是一對多,如何轉換為這個E-R到關係模型

 

 

部門(部門號 pk,部門名…)

職工(職工號 pk ,部門號 FK ,職工名,工資…)

(3)實體間是m:n ,多對多關係. 如有實體“教師”,“課程”,一個老師可教多門不同課程;一門課程可被不同的多個老師教。這種情況下如何轉換為關係模型。

 

 

教師(教師號PK,教師名,職稱….)

課程(課程號PK,課程名,學分…)

授課(教師號 FK,課程號FK,授課時數……)

說明:在教師表中教師號為主碼,在課程表中課程號是主碼;在授課表中教師號外來鍵到教師表,課程號外來鍵到課程表;授課表中教師號和課程號組合成主碼PK

例:如下E-R如何寫出關係模型?

 

 

 產品(產品號pk,效能引數……)

 零件(零件號pk,規格,價格….)

 材料(材料號pk,材料型別,庫存量,材料引數….)

 產品零件(產品號fk,零件號fk,零件個數….)

 零件材料(零件號fk,材料號fk,使用量….)

 後臺資料連線操作的類化,模組化:

應用開發:

MVC:模型-檢視-控制器

 MVC標準規範,程式要遵守的,通用模型。

 模型:實現各個環節交換資料時的類CLASS

 檢視:給使用者最終呈現

 控制器:後臺程式,如aspx.cs程式碼或 JAVA的servlet

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

/// <summary>

/// XsModel 的摘要說明

/// </summary>

public class XsModel

{

    private string 學號;

    private string 姓名;

    private int 年齡;

    private string 家庭住址;

    private float 身高;

    public void setXH(string t) { this.學號 = t; }

    public string getXH() { return 學號; }

 

    public XsModel()

    {

        //

        // TODO: 在此處新增建構函式邏輯

        //

    }

    public XsModel(string xh,string xm,int nl,string jtzz,float sg)

    {

        學號 = xh;姓名 = xm;年齡 = nl;家庭住址 = jtzz;身高 = sg;

        //

        // TODO: 在此處新增建構函式邏輯

        //

    }

}

 

 

在註冊提交按鈕程式設計:

  protected void bt1_Click(object sender, EventArgs e)

    {

      

        string xh0 = xh.Text.Trim();

        string xm0 = xm.Text.Trim();

        XsModel xs = new XsModel(xh0,xm0,0,"",0);

        double sg0=1.75;

        xs.setsg(sg0);

        new Class1().insertIntoTable0("學生表", xs);

 

 

    }

在資料操作工具類class1中新編寫insertintotable0( )方法,實現對任意表,任意模型中的資料插入到資料庫表中。

 

實現了的同學,把程式碼和執行結果截圖發到作業郵箱中,平時成績加5分

(檔名:學號+姓名+資料庫操作工具+模型實現.docx )