Xây dựng Database và khai thác cơ sở dữ liệu cho bài toán quản lý cấp thẻ xe bus I. Đề tài đã chọn 3 II. Phát biểu bài toán 3 III. Thiết kế CSDL mức khái niệmMô hình liên kết thực thể 4 1. Xác định các thực thể và thuộc tính 4 2. Mô hình ER 5 3. Thiết kế CSDL mức logicmô hình quan hệ 6 4. Thiết kế vật lý 7 5. Code chương trình 7
Trang 1Thành viên Phân công công vi c ệ
FK ng v i ứ ớ Parameter truy n vào ề -Vi t các stored procedure l y d li u t m i b ng theo ế ấ ữ ệ ừ ỗ ả
CK ng v i ứ ớ Parameter truy n vào ề
hàm t ng h p d li u; dùng đ câc m nh đ c a ổ ợ ữ ệ ủ ệ ề ủ truy v n SELECT) Vi t truy ấ ế
v n th c hi n t ng yêu c u ấ ự ệ ừ ầ -Truy v n d li u t 1 b ng ấ ữ ệ ừ ả -Truy v n d li u t nhi u b ng ấ ữ ệ ừ ề ả
3.member3 Vi t truy v n các d li u : ế ấ ữ ệ
-Phát bi u bài toánể -Phân tích, thi t k c s d li u ế ế ơ ở ữ ệ -T o b ng truy v n ạ ả ấ
-Nh p d li u ậ ữ ệ -T o khoá chính khoá ngo i , ràng bu c ạ ạ ộ
Trang 2M c L c ụ ụ
I Đ tài đã ch n ề ọ 3
II Phát bi u bài toán ể 3
III Thi t k CSDL m c khái ni m-Mô hình liên k t th c th ế ế ứ ệ ế ự ể.4 1 Xác đ nh các th c th và thu c tính ị ự ể ộ 4
2 Mô hình ER 5
3 Thi t k CSDL m c logic-mô hình quan h ế ế ứ ệ 6
4 Thi t k v t lý ế ế ậ 7
5 Code ch ươ ng trình 7
Trang 3BÀI TOÁN QU N LÝ C P TH XE BUS Ả Ấ Ẻ
I Đ tài đã ch n ề ọ
Xây d ng Database và khai thác c s d li u cho bài toán qu n lý c p th xeự ơ ở ữ ệ ả ấ ẻbus
II Phát bi u bài toán ể
Bài toán qu n lý c p th xe bus s bao g m :ả ấ ẻ ẽ ồ
Khách hàng đ n mua vé xe bus s c n có nh ng thông tin c thế ẽ ầ ữ ụ ể
- Khách hàng: bao g m mã khách hang ,tên khách hang ,ngày sinh ,đ a ồ ị
ch ,gi i tính ,s đi n tho i.ỉ ớ ố ệ ạ
khi đ n n i c p vé thì s có nhân viên bán vé tháng có nh ng thông tin sauế ơ ấ ẽ ữ
- Nhân viên:mã nhân viên,tên nhân viên,đ a ch ,gi i tính,s đi n tho i.ị ỉ ớ ố ệ ạNhân viên s xu t phi u thu ti n sau khi nh n ti n c a khách hangẽ ấ ế ề ậ ề ủ
- Phi u thu ti n: ế ề mã phi u , ngày l p , t ng ti nế ậ ổ ề
Vé tháng thì có nhi u lo i vé khác nhau s g m thông tin c th c a lo i vé ề ạ ẽ ồ ụ ể ủ ạ
- Lo i vé: ạ mã lo i vé , lo i véạ ạ
M i lo i vé thì s có 1 m nh giá tỗ ạ ẽ ệ ương ng v i vé đóứ ớ
- Gía vé: mã giá, đ n giáơ
Khách hàng nh n vé tháng,vé tháng s bao g m các thông tinậ ẽ ồ
- Vé tháng: mã vé ,ngày b t đ u , ngày k t thúcắ ầ ế
Trang 4III Thi t k CSDL m c khái ni m-Mô hình liên k t th c th ế ế ứ ệ ế ự ể
1 Xác đ nh các th c th và thu c tính ị ự ể ộ
1.KHACHHANG (MaKH, TenKH, ngay sinh, dia chi, gioi tinh, SDT)2.NHANVIEN ( MaNV, TenNV, ngay sinh, dia chi, gioi tinh, SDT)3.VETHANG (MaV, ngayBD, ngayKT)
4 PHIEUTHU(MaP, ngaythu, TTien)
Trang 52 Mô hình ER
Trang 63 Thi t k CSDL m c logic-mô hình quan h ế ế ứ ệ
(3’) VETHANG (MaV ,MaKH ,ngayBD ,ngayKT)
(4’) PHIEUTHU(MaP, MaNV ,ngaythu, TTien)
(4’’) PHIEUTHU(MaP, MaNV , MaKH ,ngaythu , TTien)
Áp d ng quan h 1-1: ụ ệ
(3’’)VETHANG (MaV , MaLV, MaKH, ngayBD, ngayKT)
(4’’’) PHIEUTHU(MaP ,MaV , MaNV , MaKH ,ngaythu , TTien)(6’) GIAVE(MaG ,dongia , MaLV)
(3’’)VETHANG (MaV , MaLV, MaKH, ngayBD, ngayKT)
(4’’’) PHIEUTHU(MaP ,MaV , MaNV , MaKH ,ngaythu , TTien)
Trang 8foreign key (sMaloaive) references LOAIVE(sMaloaive),
foreign key (sMakh) references KHACHHANG(sMakh),);
Trang 9foreign key (sMave) references VETHANG(sMave),
foreign key (sManv) references NHANVIEN(sManv),
foreign key (sMakh) references KHACHHANG(sMakh),);
T o các index ạ
create index id_TTkhach on KHACHHANG(sMaKH);
create index id_TTGia on GIAVE(sMaloaive);
create index id_TTLV on LOAIVE(sMaloaive);
create index id_TTPhieu on PHIEUTHUTIEN(sMave);
create index id_TTVe on VETHANG(sNgaybatdau);
create index id_TTNvien on NHANVIEN(sManv);
T o rang buocạ
alter table KHACHHANG
add constraint CK_GT CHECK (sGtinh in('Nam','Nu'));
alter table NHANVIEN
add constraint GT_NV CHECK (sGtinh in('Nam','Nu'));
alter table NHANVIEN drop GT_NV
Xóa trường th 2 m i b ngứ ở ỗ ả
alter table KHACHHANG drop column sTenkh;
alter table NHANVIEN drop column sTennv;
alter table LOAIVE drop column sLoaive;
alter table GIAVE drop column fDongia;
alter table VETHANG drop column sNgayketthuc;
alter table PHIEUTHUTIEN drop column sNgaylap;
Thêm trường v a xóa vào m i b ngừ ỗ ả
Alter table KHACHHANG add sTenkh nvarchar(30);
Trang 10Alter table NHANVIEN add sTennv nvarchar(30);
Alter table LOAIVE add sLoaive varchar(10);
Alter table GIAVE add fDongia float;
Alter table VETHANG add sNgayketthuc date;
Alter table PHIEUTHUTIEN add sNgaylap date;
-Nh p d li u cho các b ngậ ữ ệ ả
B ng khách hàngả
Insert into KHACHHANG values
('KH01','09/06/1986',N'Hà N i'ộ ,'Nu','0123456789',N'Nguy n Th Hà'ễ ị );
Insert into KHACHHANG values
('KH02','09/06/1996',N'Hà Nam','Nu','0125498696',N'Đinh Thu
Trâm');
Insert into KHACHHANG values
('KH03','09/06/1995',N'H i Dả ương','Nam','0786786782',N'Tr n Văn ầLong');
Insert into KHACHHANG values
('KH04','09/06/1994',N'Nam Đ nh'ị ,'Nam','0846521869',N'Ph m H ng ạ ồ
Ti n'ế );
Insert into KHACHHANG values
('KH05','09/06/1996',N'Hà N i'ộ ,'Nu','0648566215',N'vũ Thu Trang');
Insert into KHACHHANG values
Insert into NHANVIEN values
('NV02','09/06/1988',N'l ng S n'ạ ơ ,'Nu','0946658861',N'Tr n Thu Hà'ầ );
Insert into NHANVIEN values
('NV03','09/06/1998',N'Gia Lai','Nam','0984656564',N'Nguy n Văn ễQuy t'ế );
Insert into NHANVIEN values
Trang 11('NV04','09/06/1988',N'Hà Nam','Nu','0179455753',N'Tr n Th Bầ ị ưởi');
Insert into NHANVIEN values
('NV05','09/06/1988',N'B n Tre'ế ,'Nam','0618486966',N'Nguy n Th ễ ịThanh Tâm');
Insert into NHANVIEN values
('NV06','09/06/1993',N'H Chí Minh'ồ ,'Nu','0123584866',N'Nguy n ễTrà My');
select * from NHANVIEN
B ng Lo i véả ạ
Insert into LOAIVE values('M01','L1');
Insert into LOAIVE values('M02','L2');
Insert into LOAIVE values('M03','L3');
Insert into LOAIVE values('M04','L4');
Insert into LOAIVE values('M05','L5');
Insert into LOAIVE values('M06','L6');
select * from LOAIVE
B ng giá t ng lo i véả ừ ạ
Insert into GIAVE values('MM01','M01','30000');
Insert into GIAVE values('MM02','M02','40000');
Insert into GIAVE values('MM03','M03','50000');
Insert into GIAVE values('MM04','M04','60000');
Insert into GIAVE values('MM05','M05','70000');
select * from GIAVE
Trang 13Insert into PHIEUTHUTIEN values('MP06','MV06','NV06','KH06','90000','06/07/2017');
select * from PHIEUTHUTIEN
C p nh t l i giá cho véậ ậ ạ
update GIAVEset fDongia ='90000'
where sMaloaive ='M06'
select *from GIAVE
C p nh t l i sđt c a khách hàng ậ ậ ạ ủ
update KHACHHANGset sSdt='0155626648'
where sMakh='KH01'
select *from KHACHHANG
C p nh t l i gi i tính cho nhân viênậ ậ ạ ớ
update NHANVIENset sGtinh='Nu'
Trang 14where sManv='NV05'
select *from NHANVIEN
Xoá nhân viên có mã
delete from NHANVIENwhere sManv='NV07'
select * from NHANVIEN
vi t th t c thêm khách hàng v i các tham s truy n vào phù h p ế ủ ụ ớ ố ề ợ
create procedure KHACHHANG_Themkh
insert into KHACHHANG values
(@Makh,@Ngaysinh,@Điachi,@Gtinh,@Sdt,@Tenkh)
Trang 15-TRUY V N d li u t m t b ngẤ ữ ệ ừ ộ ả
Tìm khách hàng có năm sinh
select *from KHACHHANGwhere year(sNgaysinh)= 1996
Thông tin nhân viên có ch cái đ u tiên là Nữ ầ
select *from NHANVIEN where sTennv like'N%'
Tìm phi u thu ti n có ngày l p là 06/07/2017ế ề ậ
select *from PHIEUTHUTIENwhere sNgaylap='06/07/2017'
Trang 16-TRUY V N d li u t nhi u b ngẤ ữ ệ ừ ề ả
Danh sách nhân viên và ngày l p phi u ậ ế
select NHANVIEN.sManv,PHIEUTHUTIEN.sNgaylapfrom NHANVIEN innerjoin PHIEUTHUTIEN
on NHANVIEN.sManv=PHIEUTHUTIEN.sManv
Danh sách Mã lo i vé tạ ương ng mã khách hàng ứ
select LOAIVE.sMaloaive,VETHANG.sMakhfrom LOAIVE inner join VETHANG
on LOAIVE.sMaloaive=VETHANG.sMaloaive
Danh sách Mã lo i vé tạ ương ng đ n giá ứ ơ
select LOAIVe.sMaloaive,GIAVE.fDongiafrom LOAIVE inner join GIAVE
on LOAIVE.sMaloaive=GIAVE.sMaloaive
-T o view tạ ương ng v i select đã cóứ ớ
Select t 1 b ngừ ả
T o view g m ( tên khách hàng và năm sinh )ạ ồ
create view view_ngsinh
Trang 17select sTenkh,sNgaysinhfrom KHACHHANGwhere year(sNgaysinh)= 1996select *from view_ngsinh
T o view g m ( mã nhân viên và tên nhân viên )ạ ồ
create view view_ttinas
select sManv,sTennvfrom NHANVIEN where sTennv like 'N%'
select *from view_ttin
T o view g m ( phi u thu ti n đạ ồ ế ề ượ ậc l p ngày 06/07/2017)
create view view_ngayas
select sMaphieu,sNgaylapfrom PHIEUTHUTIENwhere sNgaylap='06/07/2017'
select *from view_ngay
T o view g m ( s nhân viên là nam )ạ ồ ố
create view view_soKh
as select count(sMakh) as SoKHfrom KHACHHANG
where sGtinh='nam'
select *from view_soKh
Trang 18Select t nhi u b ngừ ề ả
T o view g m mã nhân viên và ngày l p phi u thu ti nạ ồ ậ ế ề
create view view_tt1as
select NHANVIEN.sManv,PHIEUTHUTIEN.sNgaylapfrom NHANVIEN innerjoin PHIEUTHUTIEN
on NHANVIEN.sManv=PHIEUTHUTIEN.sManvselect *from view_tt1
Trang 19asbeginselect * from KHACHHANGwhere sMakh=@sMakhend
asbeginselect * from NHANVIENwhere sManv=@sManvend
asbeginselect * from LOAIVE
Trang 20where sMaloaive=@sMaloaiveend
asbeginselect *from GIAVEwhere sMagiave=@sMagiaveend
asbeginselect *from VETHANGend
asbeginselect *from PHIEUTHUTIENend
Trang 21as beginselect * from GIAVEwhere sMaloaive=@sMaloaiveend
as beginselect * from VETHANGwhere sMaloaive=@sMaloaiveend
as beginselect * from VETHANGwhere sMakh=@sMakhend
as beginselect * from PHIEUTHUTIENwhere sMakh=@sMakh
endexec sp_fk_pt1 'KH06'
Trang 22
-create proc sp_fk_pt2
(
@sManv varchar(10))
as beginselect * from PHIEUTHUTIENwhere sManv=@sManv
endexec sp_fk_pt2 'NV06'
-create proc sp_fk_pt3
(
@sMave varchar(10))
as beginselect * from PHIEUTHUTIENwhere sMave=@sMave
endexec sp_fk_pt3 'MV06'
-T o procedure l y d li u theo CKạ ấ ữ ệ
create proc sp_ck_gt
(
@sGtinh varchar(5))
asbeginselect *from KHACHHANGwhere sGtinh=@sGtinhend
exec sp_ck_gt 'nam';