1. 程式人生 > >資料庫軟體設計(8684)

資料庫軟體設計(8684)

 

 

                                       《資料庫原理與應用》課程設計

  

課設題目:                                     

8684公交資料庫分析設計

院    系:                                     

電腦科學與技術學院

專    業:   

                                  

電腦科學與技術

學生姓名:

胡廬林

學 號:        

20163823007

       


 

 

 

 

2018  年 06 月

 

目錄

前言 2

1. 需求分析 3

1.1系統資料需求 3

1.2系統功能需求 4

1.3系統安全性與完整性需求 5

1.3.1資料安全性 5

1.3.2資料完整性 5

1.3.3E-R圖設計................................................................................. 10

      1.3.4資料流圖設計............................................................................11

2.系統設計..........................................................................................................12

2.1定義.........................................................................................................15

2.2系統模組圖...........................................................................................16

2.3 資料表的設計......................................................................................17

2.4 用例列舉...............................................................................................20

2.4.1建立資料表.................................................................................20

2.4.2建立檢視....................................................................................26

2.4.3建立索引....................................................................................27

2.4.4查詢語句....................................................................................28

2.4.5建立儲存過程............................................................................29

2.4.6建立觸發器...............................................................................31

3.體會與心得...............................................................................................34

 

前言

 

由於現行公交資訊越來越複雜,公交線路越來越多,站點越來越複雜,不管是公交公司管理者,還是乘客都可能對當前這類軟體提出要求。一方面,因為公交資訊一些新的內容的出現,對軟體提出了新的要求,另一方面,現在市場上的8684公交軟體可能存在著一些問題和缺陷,無法滿足現在管理職工的需求。所以,我們提出這一任務,第一可以運用我們所學知識對8684公交軟體進行資料分析,看下是否有地方可以值得改進,第二可以鍛鍊我們對軟體設計的整體把握能力和團隊協作能力。

我們做此設計的目標有以下幾點:

1.完善現有的8684公交軟體管理系統的一些缺陷。

2.提供更加簡易的操作介面,適當增加功能。

3.規範公交管理,提高服務質量。

 

 

 1.1系統資料需求

  1. 公交路線資訊 ,對公交路線的新增,修改,刪除,根據該地地理環境的變化,對公交路線進行修改及新增新的公交路線。
  2. 公交站點資訊,隨著城市的建設發展,對站點資訊做出適當的新增、修改、刪除。
  3. 公交車輛資訊,車輛資訊應該包括車輛使用年限,車牌號,對應的公交路線編號,車輛型號(大,中,小),開始運營時間,維修資訊。
  4. 公交司機以及維修員資訊,公交司機資訊包括:姓名、性別、年齡,駕齡,身份證;維修員資訊包括:姓名、性別、年齡,工號,身份證號。
  5. 使用者表,使用者表包括:使用者名稱,密碼,電話,(微訊號,QQ號,地址)《括號裡面非必選》
  6. 簽到表,簽到表包括:簽到時間,積分,使用者id
  7. 收藏資料表 ,收藏資料表包括:收藏時間,收藏站點,收藏路線。

 

1.2系統功能需求

    系統資料維護功能:

  1. 公交路線資訊維護

        使用者首先通過密碼驗證,然後進入路線資訊管理介面,通過檢視和編輯進行相應的修改。當然對路線的修改,應該包括路線的增加,路線站點的變更,路線的刪除等操作。  

         (詳細來講:公交路線記錄的插入、修改一條公交路線所經過的站點或者服務時間、公交路線的刪除。對於公交路線的插入,要進行相應的站點查詢,如果沒有相應的站點,那麼就要新增站點到資料庫,然後再進行路線資訊的插入。對於修改一條公交路線所經過的站點,依然需要注意其修改的以後的站點在站點資訊表中是否含有,如果沒有,那麼也要進行相應的站點新增。)  

         所以,將該快功能細劃分為以下幾個部分:

  1. 插入路線
  2. 刪除路線
  3. 修改路線

(2)公交車輛資訊維護

        當通過密碼驗證以後,然後進入車輛資訊管理介面,通過檢視和編輯進行相應的修改。

         (詳細來講:包括新增新車輛、刪除現有車輛、修改現有車輛、維修車輛檢視。新增新車輛,需要將該車輛資訊加入到車輛資訊表中,刪除現有車輛的時候一定要將跟該車輛所有的有聯絡的地方都刪除掉,比如:排班表中的相關記錄,維修車輛表中的相關記錄)

         所以,將該快功能細劃分為以下幾個部分:

         A.新增新的車輛

         B.刪除現有車輛

         C.修改現有車輛

(3)排班資訊維護

        當通過密碼驗證進入系統以後,可以使用這一功能來檢視和修改排班資訊。也就是司機、維修員、車輛、是否是首班車之間的聯絡。

         功能劃分如下:

  1. 新增排班

B.刪除排班

C. 修改排班

   (4)職工(公交司機、維修員)資訊維護

        進入系統,然後進入這一功能選項。通過檢視和編輯進行相

         應的修改。

  1. 新增人員
  2. 刪除人員
  3. 修改資訊

(5)站點資訊維護

     當通過密碼驗證之後,管理員就可以對站點資訊進行修改了。可以

     檢視已有的站點,在已有的基礎上進行編輯和修改。

  1.  新增新站點
  2.  刪除站點
  3.  修改站點
  1. 簽到表

         當用戶每天登陸的時候,可以通過簽到方式進行積分獲取。

 

1.3系統安全性與完整性需求

1.3.1資料安全性

     資料的安全性是指保護資料庫以防止不合法的使用造成的資料洩露、更改和破壞。

在本設計中,因該管理端並沒有涉及到終端使用者直接共享,只是簡單的資料管理和維護,其中可能有多個人有管理許可權,所以在設計時進行了密碼驗證,該密碼存放在資料庫中。

    

   1.3.2資料完整性

   (1)避免插入異常。

       A.將維修車輛插入到車輛資訊表時候,應該立即將該條記錄

          從資料庫當中刪除,應該所有車輛資訊由這兩個表構成。

          此時,應該在排班資訊表中增加相應的和該車有關的記錄,或者將其新增到空閒車輛表中。

        B.同樣,在將車輛資訊表插入到維修車輛表中的時候,也要

          將對應的記錄從車輛表中刪除。應該在排班資訊表中將與該車輛的相關記錄刪除。

        C.在插入排班資訊的時候,需要從空閒車輛表、駕駛員資訊表、維護員資訊表、路線資訊表進行彙總處理。也就是說,在插入排班資訊時候必須避免將車輛資訊和人員重複排班。

        D.在插入新的車輛時,必須將其同時插入到車輛資訊表和空閒車輛表中。

        E.在插入新的職工時候,必須將其插入到駕駛員資訊表或者維修員人員表中,並且註明是否工作狀態。

        F.插入公交車路線資訊時,應該檢查站點資訊表檢視站點資訊是否有重複,或者將新出現的站點加入到站點資訊表中。並將新加入的路線代號加入到相應的站點資訊表中。

        G.插入站點的時候,應該避免站名的重複。

   (2)避免刪除異常。

        A.刪除車輛資訊的時候,應該同時將空閒車輛表中的記錄、該車有關的排班記錄都刪除掉。

B.刪除站點資訊的時候,應該檢查與其關聯的路線是否還存在,然後再進行刪除操作。

C.刪除維修車輛時,應該刪除該車在車輛資訊表中的相關記錄。

(3)避免修改異常

     A.修改車輛所屬的路線的時候,首先檢查是否有該車的排班資訊,如果有,必須刪除該資訊,並將該車放入空閒車輛表中。

     B.當改變人員所屬的路線的時候,首先檢查是否有與該人員聯絡起來

       的排班資訊,如果有,則將該記錄刪除,將聯絡的車輛加入到空閒車輛表中。

         C.當改變路線中的站點資訊時候需要,需要修改站點表中的記錄。

1.3.3E-R圖設計

  所涉及的的各實體:使用者,公交站點,公交路線,公交車輛,公交職工(司機和維護員(管理員))

如圖(1):

 

 

 

                        

ER圖(1)

 

所涉及的各實體間的聯絡的區域性ER圖如下圖(2):

 

 

細化總體E-R圖:

 

1.3.4資料流圖設計

                             資料流圖

 

2.系統設計

2.1定義

  1. 系統名稱:8684公交軟體系統
  2. 資料庫管理軟體:Microsoft SQL Server 2005
  3. 資料庫設計採用軟體:EZDML
  4. 執行平臺:windows 2012/xp/linux
  5. 資料庫的安全性設計:準確、高效、實時

 

2.2系統模組圖

系統模組圖

 

 

2.3資料表的設計

站點資訊表:(站點ID,站點名,站點所屬省,站點所屬市,站點所屬縣,站點所屬區,站點所屬鎮,站點所屬村,站點經度,站點緯度)

線路資訊表:(線路ID,站點ID,線路號)

排班資訊表:(排班路線,車牌號,駕駛員工號,維修員工號)

車輛資訊表:(車牌號,線路ID,車輛型號,使用年限,購買時間,駕駛員工號,服務時間)

駕駛員資訊表:(姓名,性別,駕齡,年齡,工號,是否空閒)

車輛維護表:(車牌號,維護員,故障原因,維修時間)

維護員資訊表:(姓名,性別,年齡,工號,是否空閒)

使用者資訊表:(使用者名稱,使用者ID,密碼,電話,微訊號,qq號,地址)

收藏資料表:(收藏時間,收藏站點,收藏路線)

簽到表:(簽到時間,積分,使用者ID)

表1 站點資訊表

屬性名

型別

長度

完整性約束

備註

站點ID

Int

 

主碼

站點id唯一標識某個站點,不因地域而重名

站點名

char

10

非空

站點名因地域不同允許同名

站點所屬省

char

10

非空

主要是針對中國國內的省市,省份進行check約束,只能在{北京市,天津市,上海市,重慶市,河北省,山西省,遼寧省,吉林省,黑龍江省,江蘇省,浙江省,安徽省,福建省,江西省,山東省,河南省,湖北省,湖南省,廣東省,海南省,四川省,貴州省,雲南省,陝西省}中選擇

站點所屬市

char

10

非空

站點所屬縣

char

10

非空

站點所屬區

char

10

非空

站點所屬鎮

char

10

非空

站點所屬村

char

10

非空

站點經度

float

20

非空

站點精度和緯度主要是為了在地圖上定位站點,方便精準查詢

站點緯度

float

20

非空

 

 

 

 

 

表2 線路資訊表

屬性名

型別

長度

完整性約束

備註

線路ID

int

 

主碼

路線id唯一標識某條路線,不因地域而重名

站點ID

int

 

非空

站點id作為路線組成部分,作外來鍵

線路號

char

3

非空

 

 

表3 排班資訊表

屬性名

型別

長度

完整性約束

備註

排班線路

char

3

非空

 

車牌號

char

10

主碼

 

駕駛員工號

char

10

外碼

 

維修員工號

int

 

外碼

 

表4 車輛資訊表

屬性名

型別

長度

完整性約束

備註

車牌號

char

10

主碼

因為每個省份的車牌號字首都不一樣,可以起到唯一標示的效果

線路ID

int

 

非空

路線ID作為車輛表的外來鍵,指定車輛按照哪條路線行駛

車輛型號

char

4

非空

 

使用年限

int

 

非空

 

購買時間

datetime

 

非空

格式"XX-YY-ZZ"  年-月-日

駕駛員工號

char

10

非空

每輛車的駕駛員根據排班表確定

服務時間

char

12

非空

服務時間一般遵循7:00-22:00,特殊情況不出車

 

 

 

 

表5  駕駛員資訊表

屬性名

型別

長度

完整性約束

備註

姓名

char

20

非空

 

性別

char

20

非空

只能選擇男或者女

駕齡

int

 

非空

根據駕齡來評定熟練度

年齡

int

 

非空

必須大於18,小於60

工號

char

10

主碼

 

是否空閒

bit

 

非空

0表示空閒狀態,1表示工作狀態

 

表6 車輛維護表

屬性名

型別

長度

完整性約束

備註

車牌號

char

    10

主碼

 

維護員

char

10

非空

 

故障原因

ntext

 

非空

方便後期檢視日誌,評定損耗情況

維修時間

datetime

 

非空

根據檢修時間來判斷維修員工作積極性

表7  維護員資訊表

屬性名

型別

長度

完整性約束

備註

姓名

char

 

非空

 

性別

char

20

非空

只能選擇男或者女

年齡

int

 

非空

必須大於18,小於60

工號

int

 

主碼

 

是否空閒

bit

 

非空

 

 

 

 

 

 

 

表8  使用者資訊表

屬性名

型別

長度

完整性約束

備註

使用者名稱

char

12

非空

 

使用者ID

int

 

主碼

 

  密碼

char

10

非空

 

電話

char

11

非空

 

微訊號

char

11

 

 

Qq號

char

11

 

 

地址

char

30

 

 

表9  收藏資料表

屬性名

型別

長度

完整性約束

備註

收藏時間

datetime

 

主碼

 

收藏站點

char

20

 

 

收藏路線

char

20

 

 

 

表10  簽到表

屬性名

型別

長度

完整性約束

備註

簽到時間

datetime

 

主碼

 

積分

int

 

 

 

使用者ID

int

 

外碼

 

 

 

 

 

 

 

 

2.4用例列舉

2.4.1建立資料表

  1. 站點資訊表

create table Bus_sta_info(

Sid int primary key,--站點ID

Sname char(10) not null,--站點名

Sprovince char(10) default '湖北省',--站點所屬省 預設湖北省

check(Sprovince in ('北京市','天津市','上海市','重慶市','河北省','山西省','遼寧省','吉林省','黑龍江省','江蘇省','浙江省','安徽省','福建省','江西省','山東省','河南省','湖北省','湖南省','廣東省','海南省','四川省','貴州省','雲南省','陝西省')),

Scity char(10) default '黃岡市',--站點所屬市 預設黃岡市

Scounty char(10) default '黃梅縣',--站點所屬縣 預設黃梅縣

Sarea char(10),--站點所屬區 預設為空

Stown char(10) default'分路鎮',--站點所屬鎮

Svillage char(10) default'港西村',--站點所屬村

Slongi float(20),--站點經度

Slati float(20),--站點緯度

);

  1. 線路資訊表

create table Bus_route_info(

rid int primary key,--路線ID

Sid int,--站點ID

foreign key(Sid)references Bus_sta_info(Sid),--路線ID作為唯一標識,站點ID作為外來鍵是路線組成部分

rno char(10) not null,--路線號

)

 

  1. 排班資訊表

create table Sch_info(

--排班資訊表

rno char(3),--排班路線

bno char(10)primary key,--車牌號

DNo char(10),--駕駛員工號

WorkNo int,--維修員工號

foreign key(DNo)references Bus_Driver_info(DNo),

foreign key(WorkNo)references Bus_Defender(WorkNo),

foreign key(bno)references Bus_info(bno),

)

  1. 車輛資訊表

create table Bus_info(

bno char(10) primary key,--車牌號

rid char(3),

btype char(1),--車輛型號

usetime int,--使用年限

buytime datetime,--購買時間

foreign key(rid)references Bus_route_info(rno),

)

  1. 駕駛員資訊表

create table Bus_Driver_info(

D_name char(20) not null,--駕駛員姓名

sex char(2) not null,--駕駛員性別

check(sex in('男','女')),

Driver_age int,--駕駛員駕齡,可評定熟練度

age int,--駕駛員年齡

check(age between 18 and 60),--年齡在18到60之間

DNo char(10) primary key,--駕駛員工號

Dfree bit,--是否空閒,0表示空閒,1表示工作狀態

)

  1. 車輛維護表

create table Bus_maintain(

--方便後期檢視日誌,評定損耗情況

bno char(10) primary key,--車牌號

De_name char(10),--維護員姓名

F_reason ntext,--故障原因

time datetime,--維修時間

foreign key(bno)references Bus_info(bno),

)

  1. 維護員資訊表

create table Bus_Defender(

De_name char(4),--維護人員姓名

sex char(2),--維護人員性別

check(sex in('男','女')),

age int,--維護人員年齡

check(age between 18 and 60),

WorkNo int primary key,--維護人員工號

Dfree bit,--是否空閒

)