


















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
Bài tập lớn môn cơ sở dữ liệu quản lý thư viện
Typology: Study Guides, Projects, Research
1 / 26
This page cannot be seen from the preview
Don't miss anything!
BÁO CÁO BÀI TẬP LỚN
TH
Trong nhiều năm gần đây, thuật ngữ Cơ sở dữ liệu - Database đã trở nên quen
thuộc trong nhiều lĩnh vực. Các ứng dụng tin học vào quản lý ngày càng nhiều và đa
dạng, hầu hết các lĩnh vực kinh tế, xã hội… đều đã ứng dụng các thành tựu mới của
tin học vào phục vụ công tác chuyên môn của mình. Chính vì lẽ đó mà ngày càng
nhiều người quan tâm đến thiết kế, xây dựng và ứng dụng cơ sở dữ liệu (CSDL).
CSDL và công nghệ CSDL đã có những tác động to lớn trong việc phát triển sử
dụng máy tính. Có thể nói rằng CSDL ảnh hưởng đến tất cả các nơi có sử dụng máy
tính:
Kinh doanh (thông tin về sản phẩm, khách hàng,…)
Giáo dục (thông tin về sinh viên, giáo viên, điểm,…)
Y tế (thông tin về bệnh nhân, thuốc,…)….
và rất rất nhiều lĩnh vực khác.
CSDL là một hệ thống các thông tin có cấu trúc được lưu trữ trên các thiết bị
thông tin thứ cấp (như băng từ, đĩa từ…), để thỏa mãn yêu cầu khai thác thông tin
đồng thời của nhiều người sử dụng / nhiều chương trình ứng dụng với những mục
đích khác nhau.
Từ khái niệm trên chúng ta thấy rõ ưu điểm nổi bật của CSDL:
Giảm sự trùng lắp thông tin xuống mức thấp nhất và do đó đảm bảo được
tính nhất quán và toàn vẹn dữ liệu.
Đảm bảo dữ liệu có thể được truy xuất theo nhiều cách khác nhau.
Khả năng chia sẻ thông tin cho nhiều người sử dụng và nhiều ứng dụng
khác nhau…
Do vậy việc tìm hiểu về CSDL là rất cần thiết.
Để tìm hiểu các vấn đề trên, em đã chọn đề tài “xây dựng cơ sở dũ liệu quản
lý thư viện”.
Nội dung báo cáo gồm các phần chính sau đây:
Chương I: Thiết kế cơ sở dữ liệu và mô hình thực thể liên kết
Chương II: Chuyển đổi sang mô hình dữ liệu quan hệ.
Chương III: Xác định khóa
Chương IV: Chuẩn hóa lược đồ quan hệ
Chương V: Câu lệnh SQL
Trong quá trình làm bài, em đã rất cố gắng đựa vào những kiến thức đã học và
tìm hiểu thực tế của việc quản lý thư viện để hoàn thiện bài hơn song không thể
tránh khỏi những sai sót. Do vậy em rất mong nhận được những ý kiến đóng góp để
bài được hoàn thiện hơn.
1.1 Giới thiệu sơ lược về cơ sở dữ liệu quản lý thư viện
Hiện nay, các thư viện phải quản lý một khối lượng rất lớn các sách, độc giả
và nhac cung cấp sách. Đây là kho dữ liệu rất lớn, không thể lưu trữ và xử lý một
cách thủ công như trước đây mà cần phải tin học hoá, cụ thể là xây dựng một
chương trình tin học để quản lý thống nhất và toàn diện hoạt động cho mượn sách,
nhập sách từ nhà cung cấp…
Do vậy nên em đã chọn đề tài quản lý thư viện. Em đã làm đề tài trên phần
mềm Microsoft SQL sever 2005
1.2 Các thực thể và các thuộc tính của chúng
1.2.1 Các khái niệm cơ bản
Thực thể (Entity ): là khái niệm mô tả một lớp các đối tượng có đặc trưng mà
chúng ta cần quan tâm
Các thực thể là đối tượng cụ thể hoặc trừu tượng.
Trong sơ đồ thì thực thể thường được ký hiệu là hình chữ nhật.
Thuộc tính( Attribute): là các tính chất, đặc điểm chung của đối tượng. nó là
một giá trị dùng để mô tả một đặc trưng nào đó của một thực thể.
Thuộc tính có thể là đơn trị, đa trị (lặp), hoặc phức hợp. Ký hiệu là hình thoi.
1.2.2 Các thực thể của cơ sở dữ liệu quản lý thư viện
a) Thực thể “Sách”
Lưu trữ các thông tin cơ bản về sách :mã sách, tên sách, tên tác giả, NXB, năm XB
và số trang.
Hình 1.1: thực thể “Sách”
Tên
sách
Mã
sách
Tên tác
giả
Sách
Số
trang
Mã NCC Năm xuất
bản
b) Thực thể “ Nhà cung cấp sách ”
Mỗi nhà cung cấp sẽ có một mã riêng, tên nhà cung cấp, những sách sẽ cung cấp và
số bản sách cung cấp.
Hình 1.2: thực thể “nhà cung cấp sách”
c) Thực thể ”độc giả”
Mỗi độc giả sẽ có những thông tin nhất định như mã số, tên, ngày sinh, địa chỉ và
đơn vị.
Hình 1.3: thực thể “độc giả”
d) Thực thể “mượn sách”
Mã sách Mã nhà
cung cấp
Tên nhà
cung cấp Số
bản
Ngày
cung cấp
Mã độc
giả
Tên độc
giả
Ngày
sinh
Độc giả
Đơn
vị
Địa
chỉ
1.3.2 Xác định RBTV
Gồm các điều kiện của RBTV và biểu diễ của chúng, đồng thời ta lập bảng tầm
ảnh hưởng của mỗi RBTV.
Dấu (+): RBTV cần được kiểm tra nguy cơ dẫn tới vi phạm
Dấu (-): RBTV không có nguy cơ bị vi phạm.
Dấu (-(*)): RBTV không bị vi phạm vì không được phép sửa đổi
a) R1: Mỗi sách có 1 mã sách riêng không trùng với bất kì sách nào.
∀ masach1, masach2 ∈ sach, masach1 ≠ masach2=>masach1.sach ≠ masach2.sach
Quan hệ Thêm Sửa Xóa
masach +(masach) -(*) +
b ) R2: Mỗi độc giả có 1 mã riêng không trùng với độc giả khác.
∀ madg1, madg
∈ docgia, madg
≠ madg2=>madg1.docgia
≠ madg2.docgia
Quan hệ Thêm Sửa Xóa
madg +(madg) -(*) +
c) R3: Mỗi nhà cung cấp có 1 mã riêng không trùng với nhà cung cấp khác.
∀ mancc1, mancc
∈ ncc, mancc
≠ mancc2=>mancc1.ncc
≠ mancc2.ncc
Quan hệ Thêm Sửa Xóa
mancc +(mancc) -(*) +
d) R4: Tất cả ngày tháng trong csdl phải hợp lệ.
∀ ngaycc
∈ ncc =>
≤ ncc.ngaycc.date()
≤ 30 và 1
≤ ncc.ngaycc.month()
≤ 30
∀ ngaymuon
∈ muonsach =>
≤ muonsach.ngaymuon.date()
≤ 30
và 1
≤ muonsach.ngaymuon.month()
≤ 30
∀ ngaytra
∈ muonsach =>
≤ muonsach.ngaytra.date()
≤ 30
và 1
≤ muonsach.ngaytra.month()
≤ 30
∀ ngayhentra ∈ muonsach =>1 ≤ muonsach.ngayhentra.date() ≤ 30
và 1 ≤ muonsach.ngayhentra.month() ≤ 30
Quan hệ Thêm Sửa Xóa
ncc + + +
muonsach + + +
e) R5: Mỗi độc giả không được mượn quá 5 cuốn sách.
∀ tinhtrang
∈ muonsach → 0 < tinhtrang.muonsach < 5
Quan hệ Thêm Sửa Xóa
muonsach + -(*) +
f) R6: Số ngày quán hạn không vượt quá 10 ngày.
∀ ngayquahan
∈ muonsach → 0 < ngayquahan.muonsach < 10
Quan hệ Thêm Sửa Xóa
muonsach + -(*) +
g) R7: Mỗi độc giả mượn sách phải ít nhất 10 tuổi trở lên( tính ở thời điểm
hiện tại).
∀ madg
∈ docgia sao cho ((2014-docgia.ngaysinh)/
≥
Quan hệ Thêm Sửa Xóa
docgia +(ngaysinh) -(*) +
h) R8: Xét trên quan hệ muonsach:ngày mượn thì sẽ phải trước ngày trả.
∀ ngaymuon, ngaytra
∈ muonsach /(muonsach.ngaymuon befor
muonsach.ngaytra)
Quan hệ Thêm Sửa Xóa
muonsach +(ngaymuon, ngaytra) + +
i) R9: Mỗi sách phải do 1 nhà cung cấp cung cấp.
Quan hệ Thêm Sửa Xóa
sach
+(masach)
ncc - -(*) +
k) R10: Ngày cung cấp của sách phải trước ngày độc giả mượn sách.
∀ masach
∈ ncc,
∀ masach
∈ muonsach sao cho
(ncc.ngaycc befor muonsach.ngaymuon)
Quan hệ Thêm Sửa Xóa
ncc
+(ngaycc)
muonsach
+(ngaymuon)
l) R11: Một cuốn sách chỉ được mượn bởi một độc giả duy nhất.
f6: madg, masach xác định tinhtrang nên AB → H
=>Từ đó ta có tập PTH F5={ AB →C, AB →D, AB →E, AB →F, AB →G, AB
1.5 Xây dựng mô hình thực thể liên kết.
1.5.1 Các khái niệm:
Mối liên hệ (Entity Relationship): mối liên hệ giữa các thực thể thường được
biểu diễn bằng hình thoi. Trong sơ đồ thực thể liên kết có các loại kiên kết sau:
Quan hệ 1-1: là mối quan hệ mà mỗi bản thể trong thực thể E1 chỉ có nhiều
nhất một bản thể được liên kết trong thực thể E2.
Quan hệ 1-n: là mối quan hệ mà mỗi bản thể trong thực thể E1 có thể không
liên kết hoặc liên kết với một hay nhiều bản thể trong thực thể E2.
Quan hệ n-n: là mối quan hệ mà mỗi bản thể trong thực thể có thể liên kết
với nhiều bản thể trong thực thể khác và ngược lại.
Thuộc tính của mối liên hệ (Relationship Attribute): mỗi mối liên hệ cũng có thể
có những thuộc tính riêng của chúng.
Chú ý: để đơn giản, đôi khi trình bày các thuộc tính nằm luôn trong các thực thể.
1.5.2 Xác đinh các quan hệ trong CSDL quản lý thư viện
Hình 1.5: sơ đồ quan hệ giữa thực thể độc giả và sách.
Hình 1.6: sơ đồ quan hệ giữa thực thể nhà cung cấp và sách.
mượn-
trả
Sách
Độc giả
cung cấp
Sách
Nhà cung
cấp
Các thực thể → các bảng.
Các thuộc tính của thực thể → các thuộc tính / cột của bảng.
Các loại liên kết:
Nếu là liên kết 1-1: khóa của bảng bên 1 bất kỳ trở thành một thuộc tính kết
nối (khóa ngoại) của bảng bên kia.
Nếu là liên kết 1-n: khóa của bảng bên 1 trở thành một thuộc tính kết nối
(khóa ngoại) của bảng bên nhiều
Nếu là n-n: thì phải thêm một bảng trung gian, bảng trung gian này sẽ chứa
hai thuộc tính khóa của cảu hai bảng và cả hai thuộc tính khóa này sẽ là
khóa chính của cho bảng trung gian, ngoài ra bảng trugn gian có thể them
một số thuộc tính khác của mối liên kết.
2.2 Xác định các bảng và thuộc tính của bảng
Theo cách chuyển đổi thỉ ta xác định được các bảng và các cột của chúng như sau:
a) bảng sach ( masach, tensach, tentg, namxb,sotrang, nxb, ncc)
sach
masach
tensach
tentg
namxb
sotrang
nxb
mancc
b) bảng ncc ( mancc, tenncc, soban, ngaycc)
ncc
mancc
masach
tenncc
soban
ngaycc
c) bảng docgia (madg, tendg, ngaysinh,diachi, donvi)
docgia
madg
tendg
ngaysinh
diachi
donvi
d) bảng muonsach (madg, masach, ngaymuon, ngayhentra, ngaytra, quahan,
ngayquahan, tinhtrang)
muonsach
madg
masach
ngaymuon
ngayhentra
ngaytra
quahan
ngayquahan
tinhtrang
2.3 Xây dựng kết nối giữa các bảng từ các liên kết
Mối quan hệ giữa thực thể sach và thực thể ncc là quan hệ 1-n.
Thuộc tính mancc của bảng sach sẽ là khóa ngoại của bảng ncc.
Mối quan hệ giữa thực thể sach và thực thể muonsach là quan hệ 1-n.
Thuộc tính masach cuả bảng sach sẽ là khóa ngoại của bảng muonsach.
Mối quan hệ giữa thực thể docgia và thực thể muonsach là quan hệ 1-n.
Thuộc tính madg cuả bảng docgia sẽ là khóa ngoại của bảng muonsach.
Mối quan hệ giữa thực thể sach và thực thể docgia là quan hệ n-n.
a. Chuyển các thực thể
ĐỘCGIẢ(Mã ĐG, Tên ĐG, Ng.sinh,
Đơn vị, Địa chỉ)
SÁCH(Mã sách, Tên sách, Tên TG, NXB,
Năm XB, Số trang, )
NCC(Mã NCC, Tên NCC) 3
b. Chuyển các liên kết thực thể
MƯỢN_S(Mã ĐG, Mã sách, Ng.mượn,
Ng.hẹn trả, )
TRẢ_S(Mã sách, Mã ĐG, Ng.trả,
Tình trạng)
C.CẤP_S(Mã NCC, Mã sách, Ng.nhập, Số bản) 6
3.1 Thuật toán xác định khóa của lược đồ quan hệ.
3.1.1) Định nghĩa về khóa
Khóa được định nghĩa lại bằng phụ thuộc hàm như sau:
R(U), U= {A1, A2, ….An}, F= {f1, f2, …., fm} xác định trên R, K U là khóa của
R nếu thoả mãn hai điều kiện sau:
(i) K → U.
(ii)! Ǝ K’ K mà K’ → U.
Biểu diễn lược đồ quan hệ R(U) bằng đồ thị có hướng như sau:
Mỗi nút của đồ thị là tên một thuộc tính của R.
Cung nối 2 thuộc tính A và B thể hiện phụ thuộc hàm A → B.
Thuộc tính mà chỉ có các mũi tên đi ra gọi là gốc.
Thuộc tính mà chỉ có các cung đi tới gọi là nút lá.
Như vậy khóa phải là bào phủ tập hợp các nút gốc, đồng thời không chứa bất kỳ nút
lá nào của đồ thị.
3.1.2) Thuật toán xác định khóa của lược đồ quan hệ
xuất phát từ tập các nút gốc (X), dựa trên tập các phụ thuộc hàm F, tìm bao đóng
nếu X+ = U thì X là khóa.
Ngược lại thì bổ sung thuộc tính khồng thuôc nút lá vào X rồi tìm bao đóng.
Cứ như thế cho tới khi tìm được bao đóng của X bằng U.
Cuối cùng khóa chính là X.
3.2 Xác định khóa cho các quan hệ trong CSDL quản lý thư viện.
a) quan hệ sach ( masach, tensach, tentg, namxb, sotrang, nxb, mancc )
ký hiệu Q1(U) = Q1(A, B, C, D, E ,F,G)
ta có tập PTH F1={ A →B, A →C, A →D, A →E, A →F, A→G }
Xét: X = {A}
Vậy khóa của quan hệ sach là A (masach)
b) quan hệ ncc ( mancc, masach, tenncc, soban, ngaycc )
ký hiệu Q2(U) = Q1(A, B, C, D, E )
ta có tập PTH F2={ AB →C, AB →D, AB →E }
Xét X = {AB}
Vậy khóa của quan hệ ncc là A(mancc), B(masach).
c) quan hệ docgia (madg, tendg, ngaysinh, diachi, donvi)
ký hiệu Q3(U) = Q3(A, B, C, D, E)
4.1 Các dạng chuẩn và thuật toán chuẩn hóa.
4.1.1) Các dạng chuẩn.
Dạng chuẩn 1(1NF): lược đồ quan hệ Q ở dạng !NF nếu tất cả các thuộc tính
của Q đều là thuộc tính đơn.
Dạng chuẩn 2 (2NF): lược đồ quan hệ Q ở dạng chuẩn 2NF nếu ở 1NF và tất
cả các thuộc tính không khóa đều phụ thuộc đầy đủ vào khóa.
Dạng chuẩn 3 (3NF):
ĐN1: lược đồ quan hệ Q ở dạng chuẩn 3NF nếu ở 2NF và tất cả các thuộc
tính không khóa đều không phụ thuộc bắc cầu vào khóa.
ĐN2: lược đồ quan hệ Q ở dạng chuẩn 3NF nếu ở 1NF và tất cả phụ thuộc
hàm không hiển nhiên X→Y của F thỏa một trong hai điều kiên sau:
(i) X là một siêu khóa (X chứa một khóa nào đó)
(ii) mỗi thuộc tính trong tập (Y - X) nằm trong một khóa nào đó.
Dạng chuẩn Boyce – codd (BCNF): lược đồ quan hệ Q ở dạng chuẩn BCNF
nếu ở 1NF và tất cả phụ thuộc hàm không hiển nhiên X→Y của F thì X là
một siêu khóa (X chứa một khóa nào đó).
4.1.2) Thuật toán chuẩn hóa
Thuật toán phân rã
Dựa vào điều kiện phan rã bảo toàn thông tin Q thành Q1 và Q2 thỏa Q1 Q2 →
Q1\ Q2 hay Q1 Q2→ Q2\ Q1.
Thuật toán phân rã thành các lược đồ ở dạng chuẩn BCNF như sau :
Cho Q và tập F xác định trên Q
Phân_rã :={Q} ;
done:= false;
Tính F+;
while (not done) do
if (có một Qi trong Phân_rã không ở dạng BCNF) then
Begin
X→Y là phụ thuộc hàm không hiển nhiên trên Qi thỏa:
X→Qi F+và X Y= thì
Phân_rã := (Phân_rã - Qi) U (XY) U (Qi-Y)
End
else done := true;
Kết quả ta được tập Phân_rã gồm các lược đồ ở dạng BCNF
Thuật toán tổng hợp
Thuật toán sau cho phân rã đạt tối thiểu ở dạng 3NF.
Cho Q và tập PTH F xác địnhtrên Q.
Tính Fc là một phủ tối tiểu của F+;
Xác định các khóa của Q;
i:= 0;
for (mỗi phụ thuộc hàm X→Y trong Fc) do
if (không có Qj, j=1,2,…I chứa XY) then
begin
i:= i+1;
Qi:= XY;
end;
if(không có Qj, j= 1, 2….i chứa khóa của Q) then
begin
i:= i+ 1;
Qi := bất kỳ khóa nào của Q;
end;
return(Q1, Q2,…Qi);
4.2 Cách thức chuẩn hóa thực tế
Trong thực thế khi chuẩn hóa lược đồ CSDL thường được thực hiện theo các bước:
Bước 1 : kiểm tra xem quan hệ đã đạt dạng chuẩn 1NF chưa?. Nếu chưa ở
1NF có nghĩa là có các thuộc tính chưa nguyên tố / lặp. Tiến hành tách các
thuộc tính đó.
Bước 2 : kiểm tra xem chúng có ở dạng 2NF không ?. Nghĩa là kiểm tra xem
các thuộc tính không khóa có phụ thuộc hoàn toàn vào khóa chính khôn g?.
Tiến hành tách những PTH bộ phận đó thành các bảng con để giảm bớt sự
trùng lặp thông tin.
Bước 3 : kiểm tra xem chúng đã đạt dạng chuẩn 3NF chưa ?. Nghĩa là các
thuộc tính không khóa thì phụ thuộc trực tiếp vào khóa chính. Tiến hành tách
những PTH bắc cầu thành bảng con.
Bước 4 : kiểm tra xem chúng đã đạt dạng chuẩn BCNF chưa ?.Nghĩa là tất cả
các phụ thuộc hàm đều có vế trái là siêu khóa. Tiến hành tách PTH có vế trái
chưa phải là siêu khóa.