Đề tài Xây dựng cơ sở dữ liệu quản lý thư viện

docx27 trang | Chia sẻ: frankloveabc | Lượt xem: 15528 | Lượt tải: 2download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây dựng cơ sở dữ liệu quản lý thư viện, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
 
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN
 MÔN HỌC CƠ SỞ DỮ LIỆU
---------o0o---------

BÁO CÁO BÀI TẬP LỚN
QUẢN LÝ THƯ VIỆN
	
 
 
 Sinh viên thực hiện: 
 Trần Thanh Hải (MSV: 1203999)
 Lớp: Công nghệ phần mềm K53
 Giáo viên hướng dẫn : 
 Giảng viên : Đặng Thị Thu Hiền
 Bộ môn: mạng máy tính và hệ thống thông tin
	


Hà Nội, ngày tháng năm 

LỜI NÓI ĐẦU

 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.

MỤC LỤC

LỜI NÓI ĐẦU2
Chương I: Thiết kế CSDL và mô hình thực thể liên kết4
 1.1 Giới thiệu sơ lược về CSDL quản lý thư viện4
 1.2 Các thực thể và thuộc tính4
 1.3 Xác định ràng buộc toàn vẹn6
 1.4 Xác định phụ thuộc hàm9
 1.5 Xây dựng mô hình thực thể liên kết10
 Chương II: Chuyển từ mô hình thực thể liên kết sang mô hình quan hệ13
 2.1 Cách chuyển đổi13
 2.2 Xác định bảng và các thuộc tính của bảng13
 2.3 Xây dựng kết nối giữa các bảng từ các lien kết14
 2.4 Mô hình dữ liệu quan hệ quản lý thư viện16
 2.5 Chuyển các thực thể và liên kết thực sang lược đồ quan hệ16
Chương III: Xác định khóa17
 3.1 Thuật toán xác định khóa 17
 3.2 Xác định khóa cho các quan hệ trong CSDL quản lý thư viện17
 Chương IV: Chuẩn hóa lược đồ quan hệ19
 4.1 Các dạng chuẩn và thuật toán chuẩn hóa 19
 4.2 Cách thức chuẩn hóa thực tế 20
 4.3 Chuẩn hóa CSDL quan hệ quản lý thư viện 21
 Chương V: Các câu lệnh SQL23
 5.1 Các câu lệnh tạo bảng 23
 5.2 Các câu lệnh truy vấn dữ liệu SQL 24
 Kết luận26
 Tài liệu tham khảo














CHƯƠNG I: THIẾT KẾ CƠ SỞ DỮ LIỆU
VÀ MÔ HÌNH THỰC THỂ LIÊN KẾT

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” 
Tên sách
Mã 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.


 NXB
Tên tác giả

Sách


Năm xuất bản
Mã NCC
Số trang




Hình 1.1: thực thể “Sách”

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.

 
Mã nhà cung cấp
Mã sách


NCC



	
Số bản

Ngày cung cấp
Tên nhà 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ị.
Tên độc giả
Ngày sinh
Mã độc giả




Độc giả

Địa chỉ
Đơn vị







Hình 1.3: thực thể “độc giả”



d) Thực thể “mượn sách”
Thực trạng sách cho biết tình trạng hiện tại của sách như độc giả mượn sách như thế nào? Ngày mượn, ngày hẹn trả và ngày trả như thế nào?
.Mã độc giả

 Ngày mượn
Mã sách




Ngày hẹn trả
Ngày trả

Mượn sách

	t

Số ngày quá hạn 
Quá hạn trả






Hình 1.4: thực thể “tình trạng sách”


1.3 Xác định RBTV 
 1.3.1 Định nghĩa:
 Ràng buộc toàn vẹn(RBTV) là một điều kiện bất biến không được vi phạm trong một CSDL.
 Trong CSDL luôn tồn tại rất nhiều mối liên kết ảnh hưởng qua lại lẫn nhau giữa các thuộc tính, giữa các bộ giá trị trong một quan hệ và nhiều quan hệ.
 Khi xác định một RBTV cần chỉ rõ:
điều kiện của RBTV, từ đó xác định cách biễu diễn
bối cảnh xảy ra RBTV trên một hay nhiều quan hệ
tầm ảnh hưởng của RBTV , khả năng tính toàn vẹn bị vi phạm
hành động cần phải có khi RBTV bị vi phạm.
 Các loại RBTV
RBTV về miền gía trị của thuộc tính
RBTV liên thuộc tính
RBTV liên bộ, liên thuộc tính
RBTV về phụ thuộc tồn tại
RBTV tổng hợp (liên bộ - liên quan hệ)
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, madg2 ∈ docgia, madg1≠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, mancc2 ∈ ncc, mancc1≠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 =>1≤ ncc.ngaycc.date() ≤ 30 và 1 ≤ ncc.ngaycc.month() ≤30
 ∀ ngaymuon ∈ muonsach =>1≤ muonsach.ngaymuon.date() ≤ 30
	 và 1≤ muonsach.ngaymuon.month()≤30
 ∀ ngaytra ∈ muonsach =>1≤ 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)/365 ≥ 10)
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.
 ∀ masach ∈ sach => ∃ ! muonsach.madg

Quan hệ
Thêm
Sửa
Xóa
sach
-
-(*)
+
muonsach
+(madg)
-(*)
+



1.4 Xác định phụ thuộc hàm.
a) Quan hệ sach (masach, tensach, tentg, namxb, sotrang, nxb, mancc).
 ký hiệu: Q1(A, B, C, D, E, F, G) 
f1: masach xác định tensach nên A →B
f2: masach xác định tentg nên A →C
f3: masach xác định namxb nên A →D
f4: masach xác định sotrang nên A →E
f5: masach xác định nxb nên A → F
f6 : masach xác định mancc nên A → G
 =>Từ đó ta có tập PTH F1={ A →B, A →C, A →D, A →E, A → F, A→G}
b) Quan hệ ncc( mancc, masach, tenncc, soban, ngaycc)
 ký hiệu: Q2(A, B, C, D, E) 
 f1: mancc,masach xác định tensach nên AB →C
 f2: mancc,masach xác định soban nên AB →D
 f3: mancc,masach xác định ngayCC nên AB →E
 =>Từ đó ta có tập PTH F2={ AB →C, AB →D, AB →E}
c) Quan hệ docgia(madg, tendg, ngaysinh, diachi, donvi)
 ký hiệu: Q3(A, B, C, D, E) 
f1: madg xác định tenDG nên A →B
f2: madg xác định ngaysinh nên A →C
f3: madg xác định diachi nên A →D
f4: madg xác định donvi nên A →E
 =>Từ đó ta có tập PTH F3={ A →B, A →C, A →D, A →E}
d) Quan hệ muonsach( madg, masach, ngaymuon, ngayhentra, ngaytra, quahan, ngayquahan, tinhtrang).
 ký hiệu: Q1(A, B, C, D, E, F, G, H) 
 f1: madg, masach xác định ngaymuon nên AB →C
 f2: madg, masach xác định ngayhentra nên AB →D
 f3: madg, masach xác định ngaytra nên AB →E
 f4: madg, masach xác định quahan nên AB →F
 f5: madg, masach xác định ngayquahan nên AB →G
 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 →H}
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
mượn-trả
 
Sách
Độc giả
	




 Hình 1.5: sơ đồ quan hệ giữa thực thể độc giả và sách.
 
cung cấp
Sách
Nhà cung cấp
	



 Hình 1.6: sơ đồ quan hệ giữa thực thể nhà cung cấp và sách.

1.5.3 mô hình dữ liệu thực thể liên kết.

Ngày hẹn trả
Tên ĐG
Đơn vị
Mã ĐG
Tên sách

Số trang

Sách

Mã sách

Độc giả
 
Mượn

Ngày mượn
Ngày sinh


Địa chỉ

NXB

Tình trạng

Trả


Ngày trả
Năm XB


Số ngày quá hạn

Tên tác giả
Quá hạn trả sách



Số bản cung cấp
Mã NCC
Cung cấp
Nhà cung cấp



Tên NCC

Ngày cung cấp



Hình 1.7: Mô hình dữ liệu thực thể liên kết của CSDL quản lý thư viện.
CHƯƠNG II: CHUYỂN TỪ MÔ HÌNH THỰC THỂ LIÊN KẾT SANG MÔ HÌNH QUAN HỆ

2.1 Cách chuyển đổi 
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.


2.4 Mô hình dữ liệu quan hệ quản lý thư viện

muonsach
madg
masach
ngaymuon
ngayhentra
ngaytra
quahan
ngayquahan
tinhtrang

docgia

madg

tendg

ngaysinh

diachi

donvi
sach
masach
tensach
tentg
namxb
sotrang
nxb
mancc





ncc

mancc

masach

tenncc

soban


ngaycc





 Hình 2.1 : Lược đồ mô hình dữ liệu quan hệ quản lý thư viện.









2.5 Chuyển các thực thể và liên kết thực thể sang lược đồ quan hệ
 a. Chuyển các thực thể


ĐỘC GIẢ


ĐỘCGIẢ(Mã ĐG, Tên ĐG, Ng.sinh,
 Đơn vị, Địa chỉ)
1

SÁCH

SÁCH(Mã sách, Tên sách, Tên TG, NXB, 
 Năm XB, Số trang, )
2

NCC

NCC(Mã NCC, Tên NCC)
3

 b. Chuyển các liên kết thực thể

MƯỢN

MƯỢN_S(Mã ĐG, Mã sách, Ng.mượn, 
 Ng.hẹn trả, )
4
TRẢ


TRẢ_S(Mã sách, Mã ĐG, Ng.trả, 
 Tình trạng)
5
C.CẤP


C.CẤP_S(Mã NCC, Mã sách, Ng.nhập, Số bản)
6






CHƯƠNG III: XÁC ĐỊNH KHÓA
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 X+.
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}
 X+ ={A,B,C,D,E,D,G} = U
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} 
 X+ = {A,B,C,D,E} = U
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)
ta có tập PTH F3={ A →B, A →C, A →D, A →E }
Xét X= {A}
 X+ = {A, B, C, D, E}=U
Vậy khóa của quan hệ docgia là A(madg).
d) quan hệ muonsach(madg, masach, ngaymuon, ngayhentra, ngaytra, quahan, ngayquahan, tinhtrang)
ký hiệu Q4(U) = Q4(A, B, C, D, E, F, G, H )
ta có tập PTH F4={ AB →C, AB →D, AB →E, AB →F, AB →G, AB →H }
Xét X= {AB} 
 X+ = { A, B, C, D, E, F, G, H }=U
Vậy khóa của quan hệ muonsach là A(madg) và B(masach).


CHƯƠNG IV: CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ
THÀNH DẠNG CHUẨN 3NF HOẶC BCNF

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.
4.3 Chuẩn hóa cơ sở dữ liệu quan hệ quản lý thư viện
CSDL quản lý thư viện có:
Quan hệ sach( masach, tensach, tentg, namxb, sotrang, nxb, mancc )
có tập PTH là F1 = {masach → tensach, masach → tentg, masach → namxb , masach → sotrang , masach → nxb, masach → mancc }
quan hệ ncc( mancc, masach, tenncc, soban, ngaycc )
có tập PTH là F2 = { (mancc,masach) → tenncc, (mancc,masach) → soban , (mancc,masach) → ngaycc}
quan hệ docgia(madg, tendg, ngaysinh, diachi, donvi)
có tập PTH là F3 = {madg → tendg, madg → ngaysinh, madg → diachi, madg →donvi}
quan hệ muonsach (madg, masach, ngaymuon, ngayhentra, ngaytra, quahan, ngayquahan, tinhtrang)
có tập PTH là F4 = { (madg,masach) → ngay muon, (madg,masach) → ngayhentra, (madg,masach) → ngaytra, (madg,masach) → quahan, (madg,masach) → ngayquahan, (madg,masach) → }

Bước 1: kiểm tra dạng chuẩn 1NF
Các thuộc tính của tất cả các quan hệ đều là nguyên tố.
CSDL đã đạt dạng chuẩn 1NF
Bước 2: kiểm tra dạng chuẩn 1NF
Xét các thuộc tính không khóa đều phụ thuộc hoàn toàn vào khóa chính.
CSDL đã đạt dạng chuẩn 2NF
Bước 3: kiểm tra dạng chuẩn 1NF
Các thuộc tính không khóa thì phụ thuộc trực tiếp vào khóa chính.
CSDL đã đạt dạng chuẩn 3NF



CHƯƠNG V: CÂU LỆNH SQL
5.1 Các câu lệnh tạo bảng.
a) tạo bảng sach( masach, tensach, tentg, namxb, sotrang, nxb, mancc )
CREATE TABLE [dbo].[sach](
	[masach] [char](10) NOT NULL, 
	[tensach] [char](20) ,
	[tentg] [char](20),
	[namxb] [numeric](18, 0),
	[sotrang] [numeric](18, 0),
	[nxb] [char](30),
	[mancc] [char](10) NOT NULL.
 primary key (masach));
b) tạo bảng ncc(mancc, masach, tenncc, soban, ngaycc )
CREATE TABLE [dbo].[ncc](
	[mancc] [char](10) NOT NULL,
	[masach] [char](10) NOT NULL,
	[tenncc] [char](30) NOT NULL,
	[soban] [numeric](18, 0) NOT NULL,
	[ngaycc] [datetime], 
 primary key (mancc)
 foreign key (mancc)) ;
c) tạo bảng docgia(madg, tendg, ngaysinh, diachi, donvi)
CREATE TABLE [dbo].[doc gia](
	[madg] [char](10) NOT NULL,
	[tendg] [char](20),
	[ngaysinh] [datetime] ,
	[diachi] [char](30) ,
	[donvi] [char](30);
 primary key (madg));
d) tạo bảng muonsach(madg, masach, ngaymuon, ngayhentra, ngaytra, quahan, ngayquahan, tinhtang)
CREATE TABLE [dbo].[muon sach](
	[madg] [char](10) NOT NULL,
	[masach] [char](10) ,
	[ngaymuon] [datetime] ,
	[ngayhentra] [datetime] ,
	[ngaytra] [datetime] ,
	[quahan] [bit] ,
	[ngayquahan] [numeric](18, 0) ,
	[tinhtrang] [char](30) ,
 primary key (masach,madg),
 foreign key (madg, masach));
5.2 Các câu lệnh truy vấn dữ liệu SQL.
 
 1. Đưa ra danh sách các sách của thư viện:
 SELECT *
 FROM sach;
 
 2. Đưa ra danh sách độc giả:
 SELECT *
 FROM docgia;
 
 3. Đưa ra danh sách nhà cung cấp sách:
 SELECT *
 FROM ncc;

 4. Đưa ra thông tin độc giả có đơn vị là trường học:
 SELECT *
 FROM docgia
 WHERE donvi= “trường học”;
 
 5. Đưa ra tên sách được mượn trong ngày 2/2/2014:
 SELECT sach *
 FROM sach, muonsach
 Where (date(ngaymuon)=2) and (month(ngaymuon)=2) and year(ngaymuon)=2014) and ( sach.masach=muonsach.masach);
 
 6.Tính tổng số lượng độc giả mượn sách mỗi ngày:
 SELECT ngaymuon, count ( madg) as soluongdocgia 
 FROM muonsach
 GROUP BY ngaymuon;

 7. Đưa ra số lần mượn sách của mỗi độc giả trong 2/2014 chỉ hiện thị những độc giả mượn sách nhiều hơn 3 lần:
 SELECT madg count madg as solanmuon FROM muonsach
 WHERE (month(ngaymuon)=2) and (year(ngaymuon)=2014)
 GROUP BY madg HAVING count (madg) >3;

 8. Tìm những độc giả mượn sách quá hạn:
 SELECT docgia*
 FROM muonsach, docgia
 WHERE quahan = ”1”;
 
 

 9. Đưa ra danh sách các sách của nhà xuất bản Kim Đồng:
 SELECT tensach
 FROM ncc
 WHERE nxb=”Kim Đồng”;

 10. Đưa ra danh sách nhà cung cấp cung cấp sách nhiều hơn 1000 bản:
 SELECT tenncc
 FROM ncc
 WHERE soban > 1000;
 
 11. Đưa ra danh sách độc giả có số ngày quá hạn mượn sách > 4 ngày:
 SELECT docgia*
 FROM docgia, muonsach
 WHERE ngayquahan>4 and (docgia.madg=muonsach.madg);

 12. Đưa ra danh sách các sách có số trang nhiều hơn 1000 trang được xuất bản trong năm 2013:
 SELECT tensach
 FROM sach
 WHERE (sotrang > 1000) and (namxb=”2013”)
 
 13. Đưa ra các mã sách chưa từng được mượn:
 SELECT masach
 FROM sach
 WHERE masach Not in ( SELECT masach FROM muonsach);

 14. Đưa ra thông tin độc giả mượn tối đa 5 cuốn sách:
 SELECT docgia*
 FROM muonsach, docgia
 WHERE madg in ( SELECT madg FROM muonsach WHERE tinhtrang=”5”);
 
 15. In ra thong tin sách có số bản được cung cấp nhiều nhất:
 SELECT sach*
 FROM ncc, sach
 WHERE soban=( SELECT MAX(soban) FROM ncc)
 and ( sach.macc=ncc.mancc)
 
 


	
KẾT LUẬN

Trong quá trình hoàn thành bài báo cáo em đã rút ra được nhiều kinh nghiệm và nâng cao kỹ năng chuyên môn, phát hiện ra những thiếu sót trong kiến thức của mình.
Mặc dù đã cố gắng để xây dựng và chuẩn hóa theo lý thuyết nhưng trên thực tế gặp rất nhiều khó khăn, trong phạm vi kiến thức được học chắc chắn báo cáo của e sẽ có những thiếu sót. Vì vậy em rất mong nhận được sự góp ý và đánh giá của cô để em có thể hoàn thiện hơn nữa. Em xin chân thành cảm ơn!
TÀI LIỆU THAM KHẢO

Đặng Thị Thu hiền, Bài giảng cơ sở dữ liệu, Đại học GTVT, 2004
Lê Tiến Vương. Nhập môn cơ sở dũ liệu quan hệ, NXB Thống Kê, 2000. Tái bản lần 5
Bài tập cơ sở dữ

File đính kèm:

  • docxBai tap lon CSDL.docx
Đề thi liên quan