B Ả NG PHÂN CÔNG: ...........................................................................................................2 1. Phân tích bài toán.........................................................................................................3 1.1. Xác đ ị nh ki ể u th ự c th ể........................................................................................3 1.2. Xác đ ị nh liên k ế t và ki ể u kiên k ế t .....................................................................3 1.3. Mô hình quan hệ...................................................................................................3 Quy t ắ c 3: chuy ể n các liên k ế t 1n ........................................................................3 Mô hình quan hệ...........................................................................................................4 2. Th ự c hành trong SQL server .......................................................................................4 PH Ầ N 1 : T Ạ O VIEW CHO B Ả NG ..................................................................8 PH Ầ N 2 : T Ạ O PROCEDURE CHO CÁC B Ả NG ...............................................10 PH Ầ N 3 : T Ạ O TRIGGER ....................................................................................12 PH Ầ N 4 : PHÂN QUY Ề N VÀ B Ả O M Ậ T CHO CSDL ......................................13 3. TOÀN B Ộ CODE C Ủ A BÀI .....................................................................................14
Trang 1M C L C: Ụ Ụ
B NG PHÂN CÔNG: Ả 2
1 Phân tích bài toán 3
1.1 Xác đ nh ki u th c th ị ể ự ể 3
1.2 Xác đ nh liên k t và ki u kiên k t ị ế ể ế 3
1.3 Mô hình quan hệ 3
- Quy t c 3: chuy n các liên k t 1-n ắ ể ế 3
- Mô hình quan hệ 4
2 Th c hành trong SQL server ự 4
PH N 1 : T O VIEW CHO B NG */ Ầ Ạ Ả 8
PH N 2 : T O PROCEDURE CHO CÁC B NG */ Ầ Ạ Ả 10
PH N 3 : T O TRIGGER */ Ầ Ạ 12
PH N 4 : PHÂN QUY N VÀ B O M T CHO CSDL */ Ầ Ề Ả Ậ 13
3 TOÀN B CODE C A BÀI Ộ Ủ 14
Trang 2B NG PHÂN CÔNG Ả
Tr n Thanh H i ầ ả T o b n, Nh p d li u ạ ả ậ ữ ệ
Ph n 4 ầ
Trang 31 Phân tích bài toán
1.1 Xác đ nh ki u th c th ị ể ự ể
- Ch c a hàng không ph i là ki u th c th vì đây là ki u th c th duy nh t ủ ử ả ể ự ể ể ự ể ấ
- Nhân viên c a hàng ch thu c m t b ph n và m t b ph n có nhi u nhân viên ủ ỉ ộ ộ ộ ậ ộ ộ ậ ề
- M i s n ph m thu c 1 lo i s n ph m và m t lo i s n ph m có th có nhi u s n ỗ ả ẩ ộ ạ ả ẩ ộ ạ ả ẩ ể ề ả
ph m ẩ
- M i hóa đ n do 1 nhân viên l p, m t nhân viên có th l p nhi u hóa đ n ỗ ơ ậ ộ ể ậ ể ơ
- M i hóa đ n đ ỗ ơ ượ ậ c l p cho 1 khách hàng, m t khách hàng có th có nhi u hóa ộ ể ề
đ n ơ
- Chi ti t hóa đ n có thông tin c a s n ph m trong hóa đ n ế ơ ủ ả ẩ ơ
Nhanvien ( Manv, hoten, ngaysinh, GT, diachi)
Khachhang (makh, tenkh, diachi, dienthoai, email)
Sanpham ( masp, tensp, donvi, dongia)
Hoadon (mahd, ngaylap)
CT_hoadon(mahd, soluong, giamgia)
Phongban (maPB, tenPB)
1.2 Xác đ nh liên k t và ki u kiên k t ị ế ể ế
Nhanvien thu c phongban : n -1 ộ
nhanvien l p hoadon : 1 – n ậ
sanpham thu c loaisanpham : n – 1 ộ
khachhang có hoadon : 1 – n
CT_hoadon có info s n ph m : 1 – n ả ẩ
1.3 Mô hình quan hệ
- Quy t c 1: chuy n liên th c th m nh ắ ể ự ể ạ
(1) Nhanvien ( Manv, hoten, ngaysinh, GT, diachi)
(2) Khachhang (makh, tenkh, diachi, dienthoai, email)
(3) Sanpham (masp, tensp, donvi, dongia,MLSP)
(5) Hoadon (mahd, ngaylap)
(6) CT_hoadon (mahd, soluong, giamgia)
(7) Phongban (maPB, tenPB,sonv)
- Quy t c 3: chuy n các liên k t 1-n ắ ể ế
(1.1) Nhanvien( Manv, hoten, ngaysinh, GT, diachi)
(4.1) loaisp (maloaisp, tenloaisp, masp)
(5.1) Hoadon (mahd, ngaylap)
Trang 4(5.2) Hoadon (mahd, ngaylap)
(6.1) CT_hoadon (mahd, masp, soluong, giamgia)
=>
(1.1) Nhanvien( Manv, hoten, ngaysinh, GT, diachi) (2) Khachhang (makh, tenkh, diachi, dienthoai, email) (3) Sanpham (masp, tensp, donvi, dongia,MLSP) (4.1) loaisp (maloaisp, tenloaisp, masp)
(5.2) Hoadon (mahd, ngaylap, manv, makh)
(6.1) CT_hoadon (mahd,masp, soluong, giamgia) (7) Phongban (maPB, tenPB,sonv)
- Mô hình quan hệ
2 Th c hành trong SQL server ự
T o c s d li u ạ ơ ở ữ ệ
CREATEDATABASE BanHangDienTu;
T o b ng ạ ả
Createtable phongban
(
mapb varchar(9)primarykey,
)
Trang 5Createtable loaisp
(
maloaispvarchar(9)primarykey,
tenloaispnvarchar(20)
)
Createtable khachhang
(
makh varchar(9)notnullprimarykey,
);
Createtable nhanvien
(
manv varchar(9)notnullprimarykey,
ngaysinhsmalldatetime,
gioitinh nvarchar(3)check (gioitinh in('Nam',N'N 'ữ)),
mapb varchar(9)references phongban(mapb) );
Createtable sanpham
(
masp varchar(9)primarykey,
maloaispvarchar(9)references loaisp(maloaisp)
);
Createtable hoadon
(
mahd varchar(9)notnullprimarykey,
manv varchar(9)references nhanvien(manv),
makh varchar(9)references khachhang(makh),
);
Createtable CT_hoadon
(
mahd varchar(9)notnullreferences hoadon(mahd),
masp varchar(9)notnullreferences sanpham(masp),
primarykey(mahd,masp) );
Thêm trường soluongnv vào b ng phongban ả
Altertable phongban
Add soluongnv int
S a tennv có 30 ký t ử ự
Altertable nhanvien
Altercolumn tennv nvarchar(30)
Trang 6Đ t m c đ nh cho s trặ ặ ị ố ường nhân viên là
0 Altertable phongban
Addconstraint df_soluongnv default 0 for soluongnv
Đ t m c đ nh cho trặ ặ ị ường gi m giá là 0 ả
Altertable hoadon
Addconstraint df_giamgia default 0 for giamgia
Thêm d li u cho b ng phongban ữ ệ ả
Insertinto phongban
Values ('PB01',N'K Toán'ế ,''
Insertinto phongban
Values ('PB02',N'Kinh Doanh',''
Insertinto phongban
Values ('PB03',N'Bán Hàng',''
Xóa trường
mapb Deletefrom phongban
Where mapb='PB01'
Chèn d li u vào b ng khachhang ữ ệ ả
Insertinto khachhang
Values ('KH01',N'Tr n Di u Linh'ầ ệ ,N'Hà N i'ộ ,'086433545','dieulinh@gmail.com')
Insertinto khachhang
Values ('KH02',N'Nguy n Qu c Đ t'ễ ố ạ ,N'Thái Nguyên','086433567','quocdat@gmail.com')
Insertinto khachhang
Values ('KH03',N'Nguy n Mai Anh'ễ ,N'Hà N i'ộ ,'0864445545','maianh@gmail.com')
Insertinto khachhang
Values ('KH04',N'Vũ M nh Toàn'ạ ,N'Hà N i'ộ ,'0864335456','manhhoang@gmail.com')
Insertinto khachhang
Values ('KH05',N'Dương Lam An',N'H i Phòng'ả ,'086433455','duonglamanh@gmail.com')
Chèn d li u vào b ng nhanvien ữ ệ ả
Insertinto nhanvien
Values('NV01',N'Nguy n Anh Tu n'ễ ấ ,'02/7/1996',N'Nam',N'Hà N i'ộ ,'PB01')
Insertinto nhanvien
Values('NV02',N'Nguy n Minh Anh'ễ ,'02/12/1993',N'N 'ữ,N'H i Phòng'ả ,'PB01')
Insertinto nhanvien
Values('NV03',N'Vũ M nh Ti n'ạ ề ,'12/24/1998',N'Nam',N'Hà N i'ộ ,'PB02')
Insertinto nhanvien
Values('NV04',N'Tr n Ng c Huy n'ầ ọ ề ,'11/28/1997',N'N 'ữ,N'Thái Nguyên','PB03')
Trang 7Chèn d li u vào b ng maloaisp ữ ệ ả
Insertinto loaisp
Values('MLSP01','SmartPhone')
Insertinto loaisp
Values('MLSP02','TV')
Xóa
nhanvien Deletefrom nhanvien
Where manv='NV02'
Chèn d li u vào b ng sanpham ữ ệ ả
Insertinto sanpham
Values('SP01','Samsung galaxy S1',N'Cái','2100000','MLSP01')
Insertinto sanpham
Values('SP02','Samsung galaxy S2',N'Cái','800000','MLSP01')
Insertinto sanpham
Values('SP03','LG 113',N'Cái','4500000','MLSP02')
Chèn d li u vào b ng hoadon ữ ệ ả
Insertinto hoadon
Values('HD01','12/10/1996','NV01','KH01',''
Insertinto hoadon
Values ('HD02','3/6/2016','NV02','KH02',''
Insertinto hoadon
Values ('HD03','3/11/2016','NV03','KH03',''
Insertinto hoadon
Values ('HD04','3/26/2016','NV04','KH04',''
Xóa
mahd Deletefrom hoadon
Where mahd='HD04'
Chèn d li u vào b ng CT_hoadon ữ ệ ả
Insertinto CT_hoadon
Values('HD01','SP01','2')
Insertinto CT_hoadon
Values('HD04','SP02','2')
Insertinto CT_hoadon
Values('HD03','SP03','22')
Xóa mahd trong
CT_hoadon Deletefrom CT_hoadon
Where mahd='HD04'
TEST Select*from phongban
Select*from loaisp
Select*from khachhang
Select*from nhanvien
Select*from sanpham
Trang 8Select*from hoadon
Select*from CT_hoadon
/* PH N 1 : T O VIEW CHO B NG */ Ầ Ạ Ả
**T o view tính tu i c a nhân viên** ạ ổ ủ
Createview tuoinv(manv,tennv,tuoi)
As
Select manv,tennv,year(getdate())-year(ngaysinh)as tuoi
From nhanvien
Test
tuoinv Select*From tuoinv
**T o view tính t ng ti n** ạ ổ ề
createview tt(masp,tensp,mahd,tongtien)
As
Select sanpham.masp,sanpham.tensp,CT_hoadon.mahd,sum(dongia*soluong)
Where sanpham.masp=CT_hoadon.masp
Groupby sanpham.masp,sanpham.tensp,CT_hoadon.mahd
Truy xu t view tongtien ấ
Select*from tt
Trang 9**T o view l y ra nhanvien co diachi "Ha Noi"** ạ ấ ở
Createview diachihanoi(manv,tennv,diachi)
As
Select manv,tennv,diachi
Where diachi likeN'Hà%'
Truy xu t ấ
Select*From diachihanoi
**View l y ra khachhang có email** ấ
Createview emailkhachhang(makh,tenkh,email)
As
Select makh,tenkh,email
Where email like'%@%'
Truy Xu t ấ
Select*From emailkhachhang
**T o view th c hi n danh sách nhanvien n sinh tháng 3** ạ ự ệ ữ Createview nhanviennu
As
Select manv,tennv,ngaysinh
Where gioitinh=N'N 'ữ andmonth(ngaysinh)=3
Truy xu t ấ
select*
From nhanviennu
Trang 10**T o view tính t ng s nhân viên nam c a c a hàng** ạ ổ ố ủ ử Createview nhanviennam
As
Selectcount(manv)as SoNVnam
Where gioitinh='Nam'
Truy xu t ấ
Select*
From nhanviennam
Trang 11/* PH N 2 : T O PROCEDURE CHO CÁC B NG */ Ầ Ạ Ả
**T o proc tính nhân viên tu i cao nh t** ạ ổ ấ
Createproc tuoicaonhat
As
Begin
Declare @maxtuoi int
Select @maxtuoi=max(tuoi)
Select manv,tennv,tuoi
Wheretuoi=@maxtuoi
End
Truy xu t ấ
Tuoicaonhat
**T o proc cho bi t tên nhân viên bán đạ ế ược nhi u ti n hàng nh t** ề ề ấ
Createview tienhang(manv,tennv,tongtien)
As
Select nhanvien.manv,nhanvien.tennv,sum(soluong*dongia)
Where nhanvien.manv=hoadon.manv and hoadon.mahd=CT_hoadon.mahd and CT_hoadon.masp= san-pham.masp
Groupby nhanvien.manv,nhanvien.tennv
Createproc nhanvienbannhieutien
As
Begin
Declare @tongtien float
Select @tongtien=max(tongtien)
Select manv,tennv,tongtien
Where tongtien=@tongtien
End
Truy xu t ấ
nhanvienbannhieutien
Trang 12**T o proc cho bi t khách hàng mua nhi uu ti n nh t** ạ ế ề ề ấ
Createview khachhangmuanhieutien(makh,tenkh,tongtien)
As
Select khachhang.makh,khachhang.tenkh,sum(soluong*dongia)
Where khachhang.makh=hoadon.makh and hoadon.mahd=CT_hoadon.mahd and CT_hoadon -masp=sanpham.masp
Groupby khachhang.makh,khachhang.tenkh
Createproc khachhangmua
As
Begin
Declare @tongtien float
Select @tongtien=max(tongtien)
Select makh,tenkh,tongtien
Wheretongtien=@tongtien
End
Truy xu t ấ
khachhangmua
**T o proc cho pháp hi n th danh sách nhân viên trong phòng ban nào đó** ạ ể ị
Createproc dsnhanvien(@MaPB varchar(9))
As
Begin
Select *
Wheremapb=@mapb
End
Truy xu t ấ
dsnhanvien @mapb='PB01'
Trang 13**T o proc nh p masp thì hi n ra lo i s n ph m** ạ ậ ệ ạ ả ẩ
Createproc dsloaisanpham(@tensp nvarchar(20))
As
Begin
Select tensp,loaisp.maloaisp,tenloaisp
From loaisp,sanpham
Where sanpham.maloaisp=loaisp.maloaisp and @tensp=tensp
End
Dropproc dsloaisanpham
Truy xu t ấ
dsloaisanpham @tensp=N'Đi n Tho i'ệ ạ
Trang 14/* PH N 3 : T O TRIGGER */ Ầ Ạ
**T o trigger khi nh p s lạ ậ ố ượng nhanvien thì s tăng soluongnv trong b ng phongban** ẽ ả Createtrigger nhapnhanvien
On nhanvien
Forinsert,delete
As
Begin
Declare @MaPB1 varchar(9)
If (exists(Select*From phongban Where mapb=@MaPB1)) Update phongban
Else
Print 'Khong ton tai ma phong ban!!!!!'
Declare @MaPB2 varchar(9)
Update phongban
End
**T o trigger n u t ng ti n l n h nn 1.000.000 thì gi m 10 % còn l i gi m 0%** ạ ế ổ ề ớ ơ ả ạ ả
trigger Createtrigger tinhgiamgia
Forinsert
As
Begin
Declare @MaHD varchar(9)
Declare @TongTien float=
(
)
Update hoadon
Else
Update hoadon
End
Trang 15/* PH N 4 : PHÂN QUY N VÀ B O M T CHO CSDL */ Ầ Ề Ả Ậ
T o Login ạ
Createlogin login1 Withpassword='123456'
Go
Xóa
login Droplogin login1
Thêm c t user_name cho b ng nhanvien ộ ả
Altertable nhanvien
Add username varchar(9)
T o user ạ
Createuser haitran
Forlogin login1
WithDEFAULT_SCHEMA= BanHangDienTu
Gán quy n "ALTER" b ng phongban cho user ề ả
Grantalter
On phongban
To haitran
WithGrantOption
H y quy n user ủ ề
Revokealter
Revokeall
Test Use BanHangDienTu
Insertinto nhanvien
Values('NV10',N'Nguy n Anh 'ễ ,'02/7/1996',N'Nam',N'Hà N i'ộ ,'PB01')
Altertable phongban
add test int
Altertable phongban
Dropcolumn test
End