程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 暑假實踐做了一個學生宿捨管理系統的數據庫

暑假實踐做了一個學生宿捨管理系統的數據庫

編輯:關於SqlServer

本次暑假實踐結束了,

和同學們一起做了一個學生宿捨管理系統的數據庫.

基於該數據庫開發學生宿捨管理系統軟件.

發現數據庫這東西一下子創建一個大概的結構其實是很簡單的,

但是你要將這個數據庫完整,並准確地運用到軟件程序開發中的確需要很大的心思.

更何況對於我這菜鳥,連數據庫的運用都不能達到十分熟悉的程度.

可想而知這次的數據庫的完整性有多高.........

由於數據庫編寫不完整,所以搞的後期編寫代碼麻煩死,錯誤時時發生.

數據庫啊數據庫,真是一樁麻煩事~

以下是數據庫代碼:

USE master
GO

IF EXISTS
(SELECT name
FROM master.dbo.sysdatabases
WHERE name = 'CS1')
 DROP DATABASE CS1
GO     

-------------------------------------------------------------------------------------------------------------------------------                                              

create database  CS1   ---新建一個名為CS1的數據庫
on
( name = CS1_dat,
  filename = 'D:\CS1.mdf',
  size = 10,
 maxsize = 50,
 filegrowth = 5)                  -------本人創建數據庫的位置就是為了貪方便,直接把數據庫文件丟到D盤裡去 - -!

log on
(name = 'CS1_log',
 filename = 'D:\CS1.ldf',
  size = 5mb,
 maxsize = 25mb,
 filegrowth = 5mb)

go

--------------------------------------------------------------------------------------------------------------------------

use CS1
go

IF OBJECT_ID('系統管理員表')IS NOT NULL
DROP TABLE 系統管理員表
GO

IF OBJECT_ID('宿捨表')IS NOT NULL
DROP TABLE 宿捨表
GO

IF OBJECT_ID('宿捨調整表')IS NOT NULL
DROP TABLE 宿捨調整表
GO
IF OBJECT_ID('學生表')IS NOT NULL
DROP TABLE 學生表
GO
IF OBJECT_ID('違紀記錄表')IS NOT NULL
DROP TABLE 違紀記錄表
GO
IF OBJECT_ID('訪客表')IS NOT NULL
DROP TABLE 訪客表
GO

IF OBJECT_ID('訪問表 ')IS NOT NULL
DROP TABLE 訪問表
GO

IF OBJECT_ID('衛生評比表')IS NOT NULL
DROP TABLE 衛生評比表
GO

IF OBJECT_ID('報修表')IS NOT NULL
DROP TABLE 報修表
GO
IF OBJECT_ID('水電費表')IS NOT NULL
DROP TABLE 水電費表
GO

IF OBJECT_ID('宿捨管理員表')IS NOT NULL
DROP TABLE 宿捨管理員表
GO

IF OBJECT_ID('學院表')IS NOT NULL
DROP TABLE 學院表
GO
IF OBJECT_ID('班級表')IS NOT NULL
DROP TABLE 班級表
GO

create table 系統管理員表
(
 user_id  int identity(1,1),--key
 user_name nchar(30) not null,
 user_passWord nchar(30) null,
 flag  int default  0
)
GO


create table 宿捨表  ---新建宿捨表,並在表中添加約束
(
  宿捨ID varchar(8)     not null ,                              -----宿捨表裡,其實我覺得宿捨ID這東西應該由樓號,
  樓號  varchar(5)     not null ,                                 ----單元號以及宿捨號一同做為主鍵,這樣宿捨ID的
  房間號碼 char(3)        not null ,                            -----唯一性及功能性就會更豐富了
  基本設施      varchar(50)    not null ,
  規格          varchar(20)    not null ,
  可住人數      int            not null ,                            
  實住人數      int            not null ,
  入住性別      char(2)        not null ,
  所屬學院      varchar(20)    not null ,
  入住情況      varchar(10)    not null ,                   -----這裡有個十分嚴重的問題,

就是入住情況竟然沒有
  電話          varchar(15)    not null ,                      -----約束,那麼這裡有人入住也可以寫成沒有人入住了, 汗~~

  check (入住性別 ='男' OR 入住性別='女'),
  check(可住人數>=實住人數)
)
go


create table 宿捨調整表  ---新建一個宿捨調整表,並在表中添加約束
(
  調整記錄號     int            identity(1,1) ,                -----這個 調整記錄號用IDENTITY,個人覺得有點太過簡化了,
  學號           char(11)       not null ,                        -----合理性究竟怎樣,沒主意了.畢竟不是自己一個人建的,
調整時間       datetime       not null ,
  原宿捨ID varchar(8)     not null ,
  現宿捨ID varchar(8)     not null ,
  原床位號       int            not null ,
  現床位號       int            not null ,
  調整類型  varchar(10) not null ,
  備注說明       varchar(100)    ,

  check(原床位號>=0)    ,
  check(現床位號>=0) 
)
go


create table 學生表  ---新建一個學生表,並在表中添加約束
(
  宿捨ID varchar(8)     not null,
  學號          char(11)       not null ,
  姓名          varchar(20)    not null ,
  性別          char(2)        not null ,
  床位號        i

nt            not null ,
  班級號        varchar(4)     not null ,
  學院號 varchar(4)      not null ,
  家庭住址      varchar(40)    not null ,  
  聯系電話      varchar(15)    not null ,
  備注說明 varchar(100)            ,

  check (性別 ='男' OR 性別='女')       ,
  check (床位號>=0)   
)
go

 

create table 學院表  ---新建一個學院表,並在表中添加約束
(
  學院號    varchar(4)       not null ,
  學院名       varchar(30)      not null ,
  備注說明    varchar(100)              
)
go


create table 班級表  ---新建一個班級表,並在表中添加約束
(
  班級號    varchar(4)       not null ,
  班級名           varchar(30)      not null ,
  備注說明    varchar(100)              
)
go

 

 

create table 違紀記錄表  ---新建一個違紀記錄表,並在表中添加約束
(
  違紀記錄號    int            identity(1,1) ,
  宿捨ID varchar(8)     not null ,
  學號          char(11)       not null ,
  姓名          varchar(20)    not null ,
  違紀事項      varchar(50)    not null ,
  違紀時間  varchar(20)       not null ,
  處理方法  varchar(50)    not null ,


  處理時間      varchar(20)       not null ,
  備注說明 varchar(100)    ,

  check(處理時間>=違紀時間)
)
go


create table 訪客表  ---新建一個訪客表,並在表中添加約束
(
  訪客號         int            not null ,
  姓名           varchar(20)    not null ,
  性別           char(2)        not null ,
  與被訪人關系   varchar(10)    not null ,
  備注說明  varchar(100)    ,

  check (性別 ='男' OR 性別='女')
)
go


create table 訪問表  ---新建一個訪問表,並在表中添加約束
(
  記錄號         int              identity(1,1) ,
  訪客號         int              not null,
  宿捨ID  varchar(8)       not null ,
  學號       varchar(11)      not null ,
  訪問時間       datetime         not null ,
  離開時間       datetime         not null ,
 
  事宜   varchar(100)             ,

  check(離開時間>=訪問時間)  
)
go 

 

create table 衛生評比表  ---新建一個衛生評比表,並在表中添加約束
(
  衛生評比號     int               &nb

sp; identity(1,1) ,
  宿捨ID  varchar(8)          not null ,
  年份           varchar(10)         not null ,


  學期           varchar(10)         not null ,
  周次           int                 not null ,
  分數          int           not null ,

  check( 分數>=0 AND 分數<=100)        ,
  check( 周次>=0) 
)
go 

 

create table 報修表  ---新建一個報修表,並在表中添加約束
(
  報修號         int      identity(1,1) ,
  宿捨ID    varchar(8)       not null ,
  學號             char(11)         not null ,
  報修時間         datetime         not null ,
  維修時間         datetime          ,
  報修事項         varchar(20)      not null ,
  處理結果         varchar(20)      ,
  員工號           char(4)       not null ,
  備注說明         varchar(100)              ,

  check(報修時間<維修時間)
)
go 

 

create table 水電費表  ---新建一個水費表,並在表中添加約束
(
  抄表時間         datetime         not null ,
  宿捨ID    varchar(8)       not null ,
  給定水量         int              not null ,


  起抄水量         int              not null ,
  本月水量         int              not null ,
  水單價           smallmoney       not null ,
  給定電量         int              not null ,
  起抄電量         int              not null ,
  本月電量         int              not null ,
  電單價           smallmoney       not null ,
  備注說明         varchar(100)              ,

  check(本月水量>=起抄水量)                  ,
  check(本月電量>=起抄電量)
)
go  

 

create table 宿捨管理員表  ---新建一個宿捨管理員表,並在表中添加約束
(
  員工號    char(4)          not null ,
  樓號     varchar(5)       not null ,
  姓名             varchar(20)      not null ,
  性別             char(2)          not null ,
  家庭住址         varchar(40)      not null ,  
  聯系電話         varchar(15)      not null ,
  備注說明    varchar(100)   

;           ,
  check (性別 ='男' OR 性別='女')
)
go 

 


/*向各表中添加主鍵*/


use CS1
go

ALTER TABLE 宿捨表                                                     
/*向宿捨表中添加主鍵*/
ADD CONSTRAINT 宿捨表

_pk PRIMARY KEY (宿捨ID)
go

ALTER TABLE 宿捨調整表                                                     
/*向宿捨表中添加主鍵*/
ADD CONSTRAINT 宿捨調整表_pk PRIMARY KEY (調整記錄號)
go

ALTER TABLE 學生表                                                     
/*向學生表中添加主鍵*/
ADD CONSTRAINT 學生表_pk PRIMARY KEY (學號)
go

ALTER TABLE 違紀記錄表                                                     
/*向違紀記錄表中添加主鍵*/
ADD CONSTRAINT 違紀記錄表_pk PRIMARY KEY (違紀記錄號)
go

ALTER TABLE 訪客表                                                     
/*向訪客表中添加主鍵*/
ADD CONSTRAINT 訪客表_pk PRIMARY KEY (訪客號)
go

ALTER TABLE 訪問表                                                     
/*向訪問表中添加主鍵*/
ADD CONSTRAINT 訪問表_pk PRIMARY KEY (記錄號)
go

ALTER TABLE 衛生評比表                                                     
/*向衛生評比表中添加主鍵*/
ADD CONSTRAINT 衛生評比表_pk PRIMARY KEY (衛生評比號)
go

ALTER TABLE 報修表                                                     
/*向報修表中添加主鍵*/
ADD CONSTRAINT 報修表_pk PRIMARY KEY (報修號)
go

ALTER TABLE 水電費表                                                     
/*向水電費表中添加主鍵*/
ADD CONSTRAINT 水費表_pk PRIMARY KEY (抄表時間,宿捨ID)
go

ALTER TABLE 宿捨管理員表                                                     
/*向宿捨管理員表中添加主鍵*/
ADD CONSTRAINT 宿捨管理員表_pk PRIMARY KEY (員工號)
go

ALTER TABLE 學院表                                &nbsp;                    
/*向學院表中添加主鍵*/
ADD CONSTRAINT 學院表_pk PRIMARY KEY (學院號)
go

ALTER TABLE 班級表                                                     
/*向班級表中添加主鍵*/
ADD CONSTRAINT 班級表_pk PRIMARY KEY (班級號)
go

 

/*約束*/
alter table 學生表  add constraint 學號要以N開頭 check (學號 like 'N[0-9]%[0-9]')
alter table 宿捨表 add constraint 電話號碼錯誤 check (電話 like '[0-9][0-9][0-9][0-9][0-9][0-9]%[0-9]');


/*外鍵*/

alter table 宿捨調整表 add constraint 不存在此類型編號2_fk foreign key (原宿捨ID) references 宿捨表 (宿捨ID);


alter table 宿捨調整表 add constraint 不存在此類型編號3_fk foreign key (現宿捨ID) references 宿捨表 (宿捨ID);

 

alter table 違紀記錄表 add constraint 不存在此類型編號4_fk foreign key (宿捨ID) references 宿捨表 (宿捨ID);


alter table 學生表 add constraint 不存在此類型編號7_fk foreign key (宿捨ID) references 宿捨表 (宿捨ID);

 

alter table 訪問表 add constraint 不存在此類型編號10_fk foreign key (訪客號) references 訪客表(訪客號);


alter table 訪問表 add constraint 不存在此類型編號11_fk foreign key (宿捨ID) references 宿捨表(宿捨ID);

alter table 報修表 add constraint 不存在此學號12_fk foreign key (學號) references 學生表(學號);
alter table 報修表 add constraint 不存在此宿捨ID14_fk foreign key (宿捨ID) references 宿捨表(宿捨ID);
alter table 報修表
add constraint 不存在此員工號15_fk foreign key (員工號) references 宿捨管理員表(員工號);
alter table 水電費表 add constraint 不存在此類型編號16_fk foreign key (宿捨ID) references 宿捨表(宿捨ID);

--=======================存儲過程與觸發器====================================================================

if Exists (select * from sysobjects where type = 'P' and name = 'CheckLoginGetFlag_SP')
    drop Procedure CheckLoginGetFlag_SP
go


CREATE PROCEDURE CheckLoginGetFlag_SP
(@Name nchar (30),
@Pass char (30))
 AS
   Declare @Flag int
   select @Flag = -1
    if exists

            (select flag from 系統管理員表 where [user_name] = @Name and user_passWord = @Pass)
    select @Flag =(select  flag from 系統管理員表 where [user_name] = @Name and user_passWord = @Pass)
 Return @Flag
GO

--=======================默認值====================================================================


CREATE DEFAULT def_默認宿捨 AS '0-0-000'
GO

CREATE DEFAULT def_默認數值 AS 0
GO

sp_bindefault 'def_默認宿捨' , '宿捨調整表.原宿捨ID'
GO

sp_bindefault 'def_默認宿捨' , '宿捨調整表.現宿捨ID'
GO

sp_bindefault 'def_默認數值' , '衛生評比表.分數'
GO

sp_bindefault 'def_默認數值' , '衛生評比表.周次'
GO

sp_bindefault 'def_默認數值' , '水電費表.給定水量'
GO

sp_bindefault 'def_默認數值' , '水電費表.給定電量'
GO

sp_bindefault 'def_默認數值' , '水電費表.水單價'
GO

sp_bindefault 'def_默認數值' , '水電費表.電單價'
GO

sp_bindefault 'def_默認數值' , '學生表.床位號'
GO

sp_bindefault 'def_默認數值' , '宿捨調整表.原床位號'
GO

sp_bindefault 'def_默認數值' , '宿捨調整表.現床位號'
GO

/*增加維修登記視圖*/
create vIEw 維修登記
AS
select  樓號,房間號碼,學號,報修時間,維修時間,報修事項,處理結果,員工號,備注說明 from  報修表 , 宿捨表
where 報修表.宿捨ID=宿捨表.宿捨ID
with check option
GO

create vIEw 學生居住信息
AS
select  樓號,房間號碼,學號,姓名,性別,床位號, 班級名, 學院名, 家庭住址, 聯系電話
FROM 學生表 ,宿捨表,班級表, 學院表
where 學生表.宿捨ID=宿捨表.宿捨ID AND
 學生表.班級號=班級表.班級號 AND
 學生表.學院號=學院表.學院號
with check option
GO


create vIEw 學生居住變動信息
AS
SELECT 學生表.學號, 姓名, 性別, 班級名, 學院名, 聯系電話,家庭住址,調整時間,原宿捨ID,現宿捨ID,原床位號, 現床位號,調整類型,宿捨調整表.備注說明
FROM 學生表 INNER JOIN
      宿捨調整表 ON 學生表.學號 = 宿捨調整表.學號 INNER JOIN
      班級表 ON 學生表.班級號 = 班級表.班級號 INNER JOIN
      學院表 ON 學生表.學院號 = 學院表.學院號
with check option
GO
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved