SQL Server --數據庫設計實驗


1、實驗目的

掌握數據庫設計基本方法及數據庫設計工具。

2、實驗內容及要求

掌握數據庫設計基本步驟,包括數據庫概念結構設計、邏輯結構設計、物理結構設計、數據庫模式SQL語句生成。

3、實驗步驟

設計一個采購、銷售和客戶管理應用數據庫。其中,一個供應商可以供應多種零件,一個零件也可以有多個供應商。一個客戶訂單可以訂購多種供應商供應的零件。客戶和供應商都分屬不同的國家,而國家按世界五大洲八大洋划分地區。請設計該數據庫。

 

(1)需求分析

要求實現一個銷售應用數據庫。在此數據庫中7個實體:零件、供應商、顧客、訂單、訂單明細、國家、地區。

此系統的業務要求是:

其中,一個供應商可以供應多種零件,一個零件也可以有多個供應商。一個客戶訂單可以訂購多種供應商供應的零件。客戶和供應商都分屬不同的國家,而國家按世界五大洲八大洋划分地區。

 該系統的基本信息是:

 地區表:地區編號,地區名稱,備注

國家表:國家編號,國家名稱,地區編號,備注

零件表:零件編號,零件名稱,制作商,品牌,零售價格,備注

顧客表:顧客編號,地址,姓名,國家編號,電話,賬戶余額,備注

供應商表:供應商編號,供應商名稱,地址,國家編號,電話,備注,供應商賬余額

訂單表:訂單編號,訂單總價,訂單狀態,訂單日期,訂單優先級,記賬員,備注,顧客編號

訂單明細表:訂單的詳細內容的報表,內容包括:零件編號,訂單編號,供應商編號,零件數量,訂單明細價格,折扣,備注

還需要產生報表:

零件供應商聯系表:供應商與零件聯系的表。內容包括零件編號、可用數量、供應價格、供應商編號、備注

 

 

(2)數據庫概念結構設計

設計E-R圖

 根據需求分析的結構可知,該E-R模型中各實體所包含的屬性如下:

1.  地區表:地區編號,地區名稱,備注

2.  國家表:國家編號,國家名稱,地區編號,備注

3.  顧客表:顧客編號,地址,姓名,國家編號,電話,賬戶余額,備注

4.供應商表:供應商編號,供應商名稱,地址,國家編號,電話,備注,供應商賬余額

5. 訂單表:訂單編號,訂單總價,訂單狀態,訂單日期,訂單優先級,記賬員,備注,顧客編號

6.訂單明細表:訂單的詳細內容的報表,內容包括:零件編號,訂單編號,供應商編號,零件數量,訂單明細價格,折扣,備注

7. 零件表:零件編號,零件名稱,制作商,品牌,零售價格,備注

8.零件供應商聯系表:零件編號、可用數量、供應價格、供應商編號、備注

 

 

 (3)數據庫邏輯結構設計

設計關系模式

把上面的E-R圖轉換為關系模型

1.  地區表(地區編號,地區名稱,備注)

主碼:地區編號

2.  國家表(國家編號,國家名稱,地區編號,備注)

主碼:國家編號

外碼:地區編號 為引用地區表的地區編號的外碼

關系:國家表屬於地區表

3.  顧客(顧客編號,地址,姓名,國家編號,電話,賬戶余額,備注)

主碼:顧客編號

外碼:國家編號,為引用國家表的國家編號

關系:國家擁有顧客

4.供應商(供應商編號,供應商名稱,地址,國家編號,電話,備注,供應商賬余額)

主碼:供應商編號

外碼:國家編號,為引用國家表的國家編號

關系:國家擁有供應商

5. 訂單表(訂單編號,訂單總價,訂單狀態,訂單日期,訂單優先級,記賬員,備注,顧客編號)

主碼:訂單編號

外碼:顧客編號,為引用顧客表的顧客編號

關系:顧客簽約訂單

6.訂單明細表(零件編號,訂單編號,供應商編號,零件數量,訂單明細價格,折扣,備注)

主碼:訂單編號

外碼:訂單編號,供應商編號,供應商編號

關系:訂單填寫訂單明細表

7. 零件表(零件編號,零件名稱,制作商,品牌,零售價格,備注)

主碼:零件編號

外碼:制作商引用供應商表的供應商名稱

關系:供應商提供零件

8. 零件供應商聯系表(零件編號、可用數量、供應價格、供應商編號、備注)

主碼:零件編號,供應商編號

關系:零件與供應商的聯系表

 

1)確定關系模式是否是第三范式的:

經分析:地區、國家、顧客、供應商、訂單、訂單明細、零件都是一個主碼,沒有部分依賴和傳遞依賴。屬於第三范式。

2)確定信息的完整性:

確定好關系模式的結構之后,接下來要分析一下這些關系模式是否滿足生成報表的信息需求。

該系統產生一個報表:零件供應商聯系表

分析如下:

零件供應商聯系表:內容包括:零件編號、可用數量、供應價格、供應商編號、備注。其中零件編號由零件表獲得。供應商編號由供應商獲得。

因此,所設計的關系模式滿足所有報表的信息要求。

 

至此,關系模式設計完成

 

4)數據庫物理結構設計

 根據上面設計物理結構

 

1.  地區表

 

列名

數據類型

主碼、外碼

說明

地區編號

Int

主碼

地區編號

地區名稱

Varchar30

地區名稱

備注

Varchar30

Remarks

2.  國家表

 

列名

數據類型

主碼、外碼

說明

國家編號

Int

主碼

Country_id

國家名稱

Varchar20

Country_Name

地區編號

Int

外碼

Region_id

備注

Varchar30

Remarks

3.  顧客表

 

列名

數據類型

主碼、外碼

說明

顧客編號

Int

主碼

Customer_id

顧客姓名

Varchar20

Customer_name

顧客地址

Varchar20

Customer_Address

顧客電話

Char(20)

Customer_Tel

國家編號

Int

外碼

Country_id

賬戶余額

Int

Customer_remainder

備注

Varchar30

Remarks

4.  供應商表

 

列名

數據類型

主碼、外碼

說明

供應商編號

Int

主碼

Supplier_id

供應商名稱

Varchar20

Supplier_Name

供應商地址

Varchar20

Supplier_Address

供應商電話

Varchar20

Supplier_Tel

國家編號

Int

外碼

Supplier_nationality

供應商賬戶余額

Int

Supplier_money

備注

Varchar30

Remarks

 

5.  訂單表

 

列名

數據類型

主碼、外碼

說明

訂單編號

Int

主碼

Order_id

訂單狀態

Varchar20

Order_State

訂單總價

Int

Totalprice

訂單日期

Date

Order_data

訂單優先級

Varchar20

Priority

記賬員

Varchar20

Bookkeeper

顧客編號

Int

外碼

Customer_id

備注

Varchar30

Remarks

 

6.  訂單明細表

 

列名

數據類型

主碼、外碼

說明

訂單明細編號

Int

主碼

Order_drid

訂單編號

Int

外碼

Order_id

零件編號

Int

外碼

Part_Id

供應商編號

Int

外碼

Supplier_id

零件數量

Int

Part_number

折扣

Float

Discount

稅率

Float

Cess

訂單明細價格

Float

Order_ Price

備注

Varchar30

Remarks

7. 零件表

 

列名

數據類型

主碼、外碼

說明

零件編號

Int

主碼

Part_id

零件名稱

Varchar20

Part_name

制作商

Varchar20

Manufacture

品牌

Varchar20

Brand

零售價格

Int

Price

備注

Varchar30

Remarks

8. 零件供應商聯系表

 

列名

數據類型

主碼、外碼

說明

零件編號

Int

主碼

Part_id

供應商編號

Int

主碼

Supplier_id

可用數量

Int

Number

供應價格

Int

Supplier_price

備注

Varchar30

Remarks

 

 

5)數據庫模式SQL語句生成

create database 銷售應用數據庫
use 銷售應用數據庫
--1.地區表
CREATE TABLE 地區表
(地區編號 int PRIMARY KEY,
地區名稱 varchar(30),
備注 varchar(30)default '該地區無備注'); --默認無備注

--2.國家表
CREATE TABLE 國家表
(國家編號 int PRIMARY KEY,
國家名稱 varchar(20),
地區編號 int,
備注 VARCHAR(30) default'該國家無備注',
FOREIGN KEY(地區編號) REFERENCES 地區表(地區編號));

--3.顧客表
CREATE TABLE 顧客表
(顧客編號 int PRIMARY KEY,
顧客姓名 varchar(20),
顧客地址 varchar(20),
顧客電話 char(20),
賬戶余額 int check(賬戶余額>0),
國家編號 int,
備注 varchar(20) default'該顧客無備注',
FOREIGN KEY(國家編號) REFERENCES 國家表(國家編號));

--4.供應商表
CREATE TABLE 供應商表
(供應商編號 int PRIMARY KEY,
供應商名稱 varchar(20),
供應商地址 varchar(20),
供應商電話 varchar(20),
供應商賬戶余額 int check(供應商賬戶余額>0),
國家編號 int,
備注 varchar(30) default'該供應商無備注',
FOREIGN KEY(國家編號) REFERENCES 國家表(國家編號));

--5. 訂單表
CREATE TABLE 訂單表
(訂單編號 int PRIMARY KEY,
顧客編號 int,
訂單狀態 varchar(20),
訂單總價 int,
訂單日期 DATE,
訂單優先級別 varchar(20),
記賬員 varchar(20),
備注 VARCHAR(100) default'該訂單無備注',
FOREIGN KEY(顧客編號) REFERENCES 顧客表(顧客編號));

--7. 零件表
CREATE TABLE 零件表
(零件編號 int PRIMARY KEY,
零件名稱 varchar(20),
制作商 varchar(20),
品牌 varchar(20),
零售價格 int check(零售價格>0),
備注 VARCHAR(100)default'該零件表無備注');

--6. 訂單明細表
CREATE TABLE 訂單明細表
(訂單明細編號 int  PRIMARY KEY,
訂單編號 int,
零件編號 int,
供應商編號 int,
零件數量 int not null,
折扣 float check(折扣>=0.00 and 折扣<=1.00),
稅率 float check(稅率>=0.00 and 稅率<=0.08),
訂單明細價格 float not null,
備注 VARCHAR(100)default'該訂單明細表無備注',
FOREIGN KEY(訂單編號) REFERENCES 訂單表(訂單編號),
FOREIGN KEY(零件編號) REFERENCES 零件表(零件編號),
FOREIGN KEY(供應商編號) REFERENCES 供應商表(供應商編號)
);

--8 零件供應商聯系表
CREATE TABLE 零件供應商聯系表
(零件編號 int,
供應商編號 int,
可用數量 int not null,
供應價格 int not null,
備注 VARCHAR(100),
PRIMARY KEY(零件編號,供應商編號));

 

 

 

(6)數據庫行為設計

對於數據庫應用系統來說,最常用的功能就是安全控制功能、數據的增、刪、改、查功能以及報表的功能。本系統也應包含這些基本的操作。

1)  安全控制

把系統的用戶分為幾類:

系統管理員:擁有對系統的全部權限

顧客:擁有自己信息的查改等,購買零件訂單的權限

供應商:擁有對基本信息的維護權,提供零件

用戶:對數據的查詢權

 

在實現時,可將每一類用戶定義為一個角色,這樣在授權時只需對角色授權,而無須對每個具體的用戶授權。

 

2)數據操作功能:

 增刪改查

 數據錄入:對數據的錄入,比如對地區表操作

insert into 地區表(地區編號,地區名稱)values(1,'亞洲');

insert into 地區表(地區編號,地區名稱)values(2,'美洲');

insert into 地區表(地區編號,地區名稱)values(3,'澳洲');

select* from 地區表;

 

 

 

 

   數據修改:對數據修改,比如修改地區表

update地區表 set地區編號=5,地區名稱='非洲'where地區編號=3;

 

 

 

 數據刪除:對數據刪除,比如刪除地區表id=5

delete from 地區表 where地區編號=5;

 

 查詢操作:對數據查詢,比如查詢地區表

select地區名稱 from地區表

 

 

 

 

 7 實驗小結

 

通過本次實驗,我學習了數據庫設計,如何從0開始設計一個要使用的符合規范的數據庫。剛開始不知道怎樣做,隨着老師的教課和講解,以及和同學的討論,再結合自己所知道的知識和老師所發放下的課程內容,根據這些實際的情況,我對自己將要做的事也有了興趣和信心。

 

7個實體:零件、供應商、顧客、訂單、訂單明細、國家、地區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM