Hệ thống thư viện là một trong những trung tâm lưu trữ vàphát hành sách lớn của cả thành phố, do đó việc ứng dụng cơ sở dữliệu trong quản lý là hết sức cần thiết.. - CHINHANHTHUVIEN: MaC
Mô hình thực thể liên kết
Bảng Tìm Khóa
Trung Gian = MaTacGia, TenNXB, MaBanSao, MaChiNhanh, MaMuonSach, MaTheMuonSach
Tập đích = TenSach, TenNXB, TenTacGia, DiaChiNXB, SDT_NXB, SoBanSao, TenChiNhanh, DiaChi_ChiNhanh, NgayHetHan, NgayDaoHan, TenNguoiMuon, DiaChiNguoiMuon, SDT_NguoiMuon
Trung gian Miền bao đóng Siêu khóa Khóa
MaSac h MaSach, TenSach, TenNXB MaSach
TenNXB, MaTacGia, MaBanSao, MaChiNhanh, MaMuonSach
TenChiNhanh,DiaChi_ChiNh anh, MaMuonSach ,
TenNXB, MaTacGia, MaBanSao, MaChiNhanh, MaMuonSach,
TenChiNhanh,DiaChi_ChiNh anh, MaMuonSach ,
NgayHetHan, NgayDaoHan, DiaChiNguoiMuon, TenNguoiMuon, SDT_NguoiMuon
Khóa:MaSach TenNXB MaTacGia MaBanSao MaChiNhanh, , , , ,
Chuẩn hóa dữ liệu 1 Chuẩn 1NF
R = {MaSach, TenSach, TenNXB,MaTacGia , TenTacGia,MaSach, TenNXB, DiaChiNXB, SDT_NXB, MaBanSao, MaSach, MaChiNhanh, SoBanSao,
MaChiNhanh, TenChiNhanh, DiaChi-ChiNhanh, MaMuonSach, MaSach, MaChiNhanh, MaTheMuonSach, NgayHetHan, NgayDaoHan,
MaTheMuonSach, TenNguoiMuon, DiaChiNguoiMuon, SDT_NguoiMuon} Đạt chuẩn 1NF vì nó không có chứa thuộc tính đa trị
R = {MaSach, TenSach, TenNXB,MaTacGia , TenTacGia,MaSach, TenNXB, DiaChiNXB, SDT_NXB, MaBanSao, MaSach, MaChiNhanh, SoBanSao,
MaChiNhanh, TenChiNhanh, DiaChi-ChiNhanh, MaMuonSach, MaSach, MaChiNhanh, MaTheMuonSach, NgayHetHan, NgayDaoHan,
MaTheMuonSach, TenNguoiMuon, DiaChiNguoiMuon, SDT_NguoiMuon}
Không đạt chuẩn 2 do không phụ thuộc đầy đủ vào khóa chính Để đạt chuẩn 2NF:
R11 = {MaSach, TenSach, TenNXB,MaTacGia, TenNXB MaBanSao MaChiNhanh MaMuonSach MaTheMuonSach, , , , , } R12 = {MaTacGia , TenTacGia,MaSach}
R13 = {TenNXB, DiaChiNXB, SDT_NXB,} R14 = {MaBanSao, MaSach, MaChiNhanh, SoBanSao} R15 = {MaChiNhanh, TenChiNhanh, DiaChi-ChiNhanh}
R16 = {MaMuonSach, MaSach, MaChiNhanh, MaTheMuonSach, NgayHetHan, NgayDaoHan}
R11 = {MaSach, TenSach, TenNXB,MaTacGia, TenNXB MaBanSao MaChiNhanh MaMuonSach MaTheMuonSach, , , , , } R12 = {MaTacGia , TenTacGia,MaSach}
R13 = {TenNXB, DiaChiNXB, SDT_NXB,}R14 = {MaBanSao, MaSach, MaChiNhanh, SoBanSao}R15 = {MaChiNhanh, TenChiNhanh, DiaChi-ChiNhanh}
R16 = {MaMuonSach, MaSach, MaChiNhanh, MaTheMuonSach, NgayHetHan, NgayDaoHan}
SDT_NguoiMuon} Đạt chuẩn 3 vì:
+ Đạt chuẩn 2+ Không chứa thuộc tính bất đầu
Thiết kế cơ sở dữ liệu
CREATE DATABASE Quanly_Thuvien GO use QuanLy_Thuvien
TenNXB VARCHAR(100) PRIMARY KEY NOT NULL, DiaChiNXB VARCHAR(200) NOT NULL, SĐT_NXB VARCHAR(50) NOT NULL )
CREATE TABLE SACH ( MaSach INT PRIMARY KEY NOT NULL IDENTITY (1 1 , ), TenSach VARCHAR(100) NOT NULL,
TenNXB VARCHAR(100) NOT NULL CONSTRAINT fk_TenNXB FOREIGN KEY REFERENCES NHAXUATBAN TenNXB ( ) ON UPDATE CASCADE ON DELETE CASCADE,
CREATE TABLE CHINHANHTHUVIEN ( MaChiNhanh INT PRIMARY KEY NOT NULL IDENTITY (1 1 , ), TenChiNhanh VARCHAR(100) NOT NULL,
DiaChi_ChiNhanh VARCHAR(200) NOT NULL, )
CREATE TABLE NGUOIMUONSACH ( MaTheMuonSach INT PRIMARY KEY NOT NULL IDENTITY ( 100,1 ), TenNguoiMuon VARCHAR(100) NOT NULL,
DiaChiNguoiMuon VARCHAR(200) NOT NULL, SDT_NguoiMuon VARCHAR( 50 NOT NULL ) )
CREATE TABLE MUONSACH ( MaMuonSach INT PRIMARY KEY NOT NULL IDENTITY (1 1 , ), MaSach INT NOT NULL CONSTRAINT fk_MaSach FOREIGN KEY REFERENCES SACH (MaSach) ON UPDATE CASCADE ON DELETE CASCADE ,
MaChiNhanh INT NOT NULL CONSTRAINT fk_MaChiNhanh FOREIGN KEY REFERENCES CHINHANHTHUVIEN MaChiNhanh ( ) ON UPDATE CASCADE ON DELETE CASCADE,
MaTheMuonSach INT NOT NULL CONSTRAINT fk_MaTheMuonSach FOREIGN KEY REFERENCES NGUOIMUONSACH MaTheMuonSach ( ) ON UPDATE CASCADE ON DELETE CASCADE,
NgayHetHan VARCHAR(50) NOT NULL, NgayDaoHan VARCHAR(50) NOT NULL )
CREATE TABLE BANSAO ( MaBanSao INT PRIMARY KEY NOT NULL IDENTITY (1,1), MaSach INT NOT NULL CONSTRAINT fk_MaSach_1 FOREIGN KEY REFERENCES SACH ( MaSach ) ON UPDATE CASCADE ON DELETE CASCADE ,
MaChiNhanh INT NOT NULL CONSTRAINT fk_MaChiNhanh_1 FOREIGN KEY REFERENCESCHINHANHTHUVIEN MaChiNhanh ( ) ON UPDATE CASCADE ON DELETE CASCADE,
CREATE TABLE TACGIA ( MaTacGia INT PRIMARY KEY NOT NULL IDENTITY (1,1), MaSach INT NOT NULL CONSTRAINT fk_MaSach_2 FOREIGN KEY REFERENCES SACH ( MaSach ) ON UPDATE CASCADE ON DELETE CASCADE ,
VALUES (N'Nguy n Văn A' ễ , N'123 Đ ườ ng A' , '090.123.123'), (N'Nguy n Văn B' ễ , N'234 Đ ườ ng B' , '090.123.234'), (N'Nguy n Văn C' ễ , N'345 Đ ườ ng C' , '090.123.345'), (N'Nguy n Văn D' ễ , N'456 Đ ườ ng D' , '090.123.456'), (N'Nguy n Văn E' ễ , N'567 Đ ườ ng E' , '090.123.567'), (N'Nguy n Văn F' ễ , N'678 Đ ườ ng F' , '090.321.123'), (N'Nguy n Văn G' ễ , N'789 Đ ườ ng G' , '090.321.987'), (N'Nguy n Văn H' ễ , N'890 Đ ườ ng H' , '090.321.876'), (N'Nguy n Văn I' ễ , N'555 Đ ườ ng I' , '090.321.765'), (N'Nguy n Văn K' ễ , N'777 Đ ườ ng K' , '090.321.654') SELECT * FROM NHAXUATBAN
INSERT INTO SACH (TenSach, TenNXB )
VALUES ( 'The Name of the Wind' , N'Nguy n Văn A' ễ ), ('It', N'Nguy n Văn B' ễ ),
('The Green Mile', N'Nguy n Văn C' ễ ), ( 'Dune' , N'Nguy n Văn D' ễ ), ('The Hobbit', N'Nguy n Văn E' ễ ), ('Eragon', N'Nguy n Văn F' ễ ), ( 'A Wise Mans Fear' , N'Nguy n Văn G' ễ ), ('Fight Club', N'Nguy n Văn H' ễ ), ('Holes', N'Nguy n Văn I' ễ ), ('The Lost Tribe', N'Nguy n Văn K' ễ ) SELECT * FROM SACH WHERE TenNXB = 'Nguy n Văn K' ễ
INSERT INTO CHINHANHTHUVIEN ( TenChiNhanh, DiaChi_ChiNhanh )
VALUES( 'Chi Nhanh 1' 'Dia Chi A-1'), ,( 'Chi Nhanh 2' 'Dia Chi B-2'), ,( 'Chi Nhanh 3' 'Dia Chi C-3'), ,( 'Chi Nhanh 4' 'Dia Chi D-4') ,
INSERT INTO NGUOIMUONSACH (TenNguoiMuon, DiaChiNguoiMuon SDT_NguoiMuon , )
VALUES ('Tran Van Tien', '123/2 Xo Viet Nghe Tinh' '000.123.456' , ), ('Nguyen Quoc Thang', '66/66 Xo Viet Nghe Tinh' '000.123.123' , ), ( 'Phan Tran Bao Huy','150 Bach Dang' '000.123.234'), , ( 'Nguyen Van Minh' '23/12 Chu Van An' '000.123.345'), , , ( 'Dang Minh','273 No Trang Long' '000.456.789'), , ( 'Cao Minh' '23/35 Phan Van Tri', , '000.789.654' ), ( 'Hai Nam' '158/28 Ngo Tat To', , '000.159.357' ), ( 'Tran Bao Ha' '100 Pham Viet Chanh' '000.789.654') , , SELECT * FROM NGUOIMUONSACH
SET IDENTITY_INSERT MUONSACH OFF
INSERT INTO MUONSACH (MaSach, MaMuonSach , MaChiNhanh, MaTheMuonSach, NgayHetHan , NgayDaoHan)
INSERT INTO BANSAO ( MaSach MaChiNhanh, SoBanSao , )
SET IDENTITY_INSERT TACGIA ON
INSERT INTO TACGIA ( MaTacGia, MaSach TenTacGia , )
VALUES ('1', '11', 'Patrick Rothfuss'), ('2', '12', 'Stephen King'), ('3', '13', 'Stephen King'), ('4', '14', 'Frank Herbert'), ('5', '15', 'J.R.R Tolkien'), ('6', '16', 'Christopher Paolini'), ('7', '17', 'Patrick Rothfuss'), ('8', '18', 'J.K Rowling'), ('9', '19', 'Haruki Murakami'), ('10', '20', 'Shel Silverstein')
s 2.2 Từ điển dữ liệu
Một số truy vấn SQL
1 Procedure này cho ta bi t th vi n ế ở ư ệ ‘A’ có t t c ấ ả bao nhiêu s sách có t a đ ố ự ề ‘B’.
2 Procedure cho bi t m i th vi n có bao nhiêu sách có ế ở ỗ ư ệ t a đ là ự ề ‘A’.
3 Procedure này cho bi t tên c a nh ng ngế ủ ữ ười ch a mư ượn b t kì cu n sách nào ấ ố
4 Truy v n tên sách, tên ngấ ười mượn và đ a ch c a nh ngị ỉ ủ ữ người đã mượn sách quá h n tr sách.ạ ả
5 Đ i v i m i th vi n, truy v n tên th vi n và ố ớ ỗ ư ệ ấ ư ệ t ng sổ ố người đã mượn sách t th vi n đó.ừ ư ệ
6 Truy v n tên, đ a ch và s lấ ị ỉ ố ượng đã mượn c a nh ng ủ ữ người mượn trên 2 cu n sách.ốố
7 Truy v n tên sách c a tác gi ấ ủ ả ‘A’ và s lố ượng sách c aủ tác gi đó th vi n ả ở ư ệ ‘B’.
V n đ 1: Trigger này dùng đ ki m soát s l ấ ề ể ể ố ượ ng sách khi có ng ườ i m ượ n sách, thì khi có ng ườ i m ượ n
D li u c a b ng ữ ệ ủ ả BANSAO khi ch a c p nh p d li u.ư ậ ậ ữ ệ
D li u b ngữ ệ ả MUONSACH khi th c hi n chèn d li u.ự ệ ữ ệ
D li u trong b ng ữ ệ ả BANSAO khi có d li u trong b ng ữ ệ ả NGUOIMUONSACH ch y,ạ thì h thồấng seẽ t đ ng c p nh p l iệ ự ộ ậ ậ ạ SoBanSao gi m t 5 -> 4ả ừ
gt; Nh v y ta đã gi i quy t đ ư ậ ả ế ượ c v n đ khi có ấ ề ng ườ i m ượ n sách thì h th ng s t đ ng c p nh p ệốẽựộậậ
V n đ 2: Trigger này dùng đ ki m soát s l ấ ề ể ể ố ượ ng sách khi ta thêm sách vào b ng SACH và s l ả ố ượ ng b n sao s t đ ng đăng và đ c bi t không cho phép ả ẽ ự ộ ặ ệ tăng s l ố ượ ng sách quá 10 cu n ố
D li u c a b ng ữ ệ ủ ả SACH khi ch a đư ược c p nh p d li u.ậ ậ ữ ệ
D li u c a b ng ữ ệ ủ ả BANSAO khi ch a đư ược c p nh p d li u ậ ậ ữ ệ
Và khi b ngả SACH khi th c hi n chèn d li u.ự ệ ữ ệ
D li u trong b ng ữ ệ ả BANSAO khi có d li u trong b ng ữ ệ ả SACH ch y, thì t đ ng ạ ự ộ
Và đ c bi t s có ặ ệ ẽ thông báo n u thêm s l ế ố ượ ng sách quá 10 cu n !!! ố