資料庫設計、資料庫需求分析、資料庫結構設計
一 基本概念
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 )