Bước 1:Phân tích bài toán: I, Mô tả bài toán: Bài toán đặt ra là quản lý sinh viên nội trú của ký túc xá B5-HV Công nghệ bưu chính viễn thông.KTX B5 là một ký túc xá được trang bị đầy
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÁO CÁO
MÔN:CƠ SỞ DỮ LIỆU
SV:Nguyễn Thị Trà Mi
MSV:1021040034
Lớp:D10CN1
Đề tài:Cơ sở dữ liệu Quản lý danh sách SV nội trú KTX B5-Học viện CNBCVT
Trang 2Bước 1:Phân tích bài toán:
I, Mô tả bài toán:
Bài toán đặt ra là quản lý sinh viên nội trú của ký túc xá B5-HV Công nghệ bưu chính viễn thông.KTX B5 là một ký túc xá được trang bị đầy đủ các trang thiết bị giúp cho sinh viên có thể học tập một cách tốt nhất.Vì là một ký túc xá lớn nên cần
có một Cơ sở dữ liệu để lưu trữ giúp cho ban lãnh đạo trường có thể quản lý sinh viên một cách dễ dàng,nhanh chóng và tiện lợi
Khảo sát thực tế cho thấy:
-Sinh viên muốn vào ở ký túc xá phải đăng ký ở ban quản lý ký túc xá
-Sau khi đăng ký,nếu phòng còn trống,sinh viên sẽ được xét:đối tượng ưu tiên,lựa chọn theo khoa,…
-Sinh viên sẽ phải chịu trách nhiệm về tài sản trong phòng của mình
-Sinh viên sẽ phải đóng đầy đủ lệ phí trong quá trình ở ký túc xá theo quy định -Mỗi phòng sẽ có mã số để ban quản lý có thể quản lý được họ
Các thông tin cần lưu trữ:
a)Yêu cầu chức năng lưu trữ:
-Danh sách các sinh viên ở ký túc xá
-Danh sách các ban quản lý ký túc xá
-Danh sách các tài sản trong mỗi phòng
b)Yêu cầu chức năng tính toán:
-Lệ phí phòng ở SV/tháng
-Tiền điện và một số vấn đề cần bồi thường như tài sản chung bị hư hỏng
c)Yêu cầu chức năng xử ly:
-Thêm(bớt) sinh viên trong phòng khi chuyển ra(vào) và cập nhật đối tượng sinh viên đó
Trang 3-Cập nhật danh sách vị trí còn trống và bổ sung -Thêm/sửa/xóa sổ quản lý theo từng tháng
II,Xác định các đối tượng thực thể:
Các thực thể:
*phòng:bao gồm các thuộc tính:
-MS phòng
-MS tòa nhà
-SLSV
*đối tượng:bao gồm các thuộc tính:
-MS đối tượng
-Tên đối tượng
*SV:bao gồm các thuộc tính:
-MSV
-Tên SV
-Lớp
-Khoa
-Ngày sinh
-Giới tính
-Quê quán
-Ngày đăng ký
*tài sản:bao gồm các thuộc tính:
-MS tài sản
-Tên
Trang 4-SL
*thanh toán:bao gồm các thuộc tính:
-MSV
-Ngày ở
-Ngày thanh toán
Bước 2:Thiết kế cơ sở dữ liệu mức khái niệm:
* Mô hình E-R:
Dưới đây là mô hình E-R:
SV
phòng
Tài sản
Đối tượng
Thanh toán
MS tòa
phòng
SLSV
MS đối tượng Tên đối
tượng
MS tài sản
Tên
Số lượng
Mã SV Ngày ở
Ngày thanh toán
Tên SV Lớp
Khoa
Ngày sinh
Ngày đăng ký
MSV
Giới
tính
Quê
quán
contain
in
in
supply
Trang 5*Thực hiện lược đồ quan hệ bằng MySQL:
Trang 6*Trên cơ sở dữ liệu của mình,viết 10 câu truy vấn đến cơ sở dữ liệu dưới dạng biểu thức đại số quan hệ:
Truy vấn 1:Tìm tên của tất cả các sinh viên học chuyên ngành công nghệ thông tin
result =π(tên)(σ(chuyên ngành =”cntt”)(SV))
Truy vấn 2:Tìm tên của tất cả các sinh viên có quê là Hà Nội hoặc Hà Nội 2:
result=π(tên)(σ((quê=Hà Nội)) hoặc (quê=Hà Nội 2))(SV))
Truy vấn 3:Tìm số hiệu sinh viên s# và tên của tất cả các sinh viên thuộc khóa
D10:
result=π(s#,tên)(σ=(khóa học=D10)(SV))
Truy vấn 4:Tìm tên của các khóa học mà SV được đăng ký ở nội trú là cao đẳng
(C) và đại học(D):
result=π(tên)(σ((khóa học=C và (khóa học=D))(TG))
Trang 7Truy vấn 5:Tìm tên của tất cả các sinh viên hoàn thành lệ phí đầy đủ trong thời
gian dưới 30 ngày và là sinh viên khóa D10:
result=π(tên)(σ((thờigian<30 ngày)và(khóa học=D10)(SV))
Truy vấn 6:Tìm tên của tất cả các sinh viên đăng ký ở vào mùa thu 2010:
result=π(tên)(σ(thời gian=thu 2010)(SV))
Truy vấn 7:Tìm mã hiệu của các sinh viên chỉ đăng ký ở vào mùa thu 2010:
result=[π(s#)(σ(TG=thu 2010)(TG))]-[π(s#)(σ(TG≠thu 2010)(TG))]
Truy vấn 8:Tìm tên cá nhân hoặc phòng có nhu cầu sửa chữa tài sản chung:
result=[π(tên)(σ(tài sản=sinh viên)(SV))]ᴗ[π(tên)(σ(tài sản=phòng)(P))]
Truy vấn 9:Tìm tên các phòng còn trống hoặc có ít hơn 8 sinh viên:
result=[π(tên)(σ(phòng=Ø)(P))]ᴗ[π(tên)(σ(phòng <8)(P))]
Truy vấn 10:Tìm tên tất cả các sinh viên đăng ký ở sau mùa thu 2010 và chỉ ở dưới
30 ngày rồi chuyển đi:
result=π(tên)(σ((thời gian=thu 2010)và(thời gian< 30 ngày))(TG))
*Xác định các phụ thuộc hàm F trên từng lược đồ quan hệ và đưa về dạng
chuẩn 3:
a)Xét quan hệ Phòng=(MS phòng(A),MS tòa nhà(B), SLSV(C) , MSV(D) ) với tập các phụ thuộc hàm F1={A →BCD} và tập khóa K1={A}
Ta thấy không có thuộc tính không khóa nào (B,C,D) phụ thuộc hàm bắc cầu vào
1 khóa của quan hệ này.Vậy Phòng ở dạng chuẩn 3
b)Xét quan hệ Tài sản=(MS phòng(A) , MS tài sản(B) , Tên (C) , Số lượng (D) , Ngày đăng ký ( E) ) với tập các phụ thuộc hàm F2={BCD→AE} và tập khóa
K2={BCD}
Ta thấy không có thuộc tính không khóa nào (A,E) phụ thuộc hàm bắc cầu vào 1 khóa của quan hệ này.Vậy Tài sản ở dạng chuẩn 3
Trang 8c)Xét quan hệ Sinh viên=(Tên SV(A) , Ngày sinh(B) , Lớp (C) , Khoa(D) , Giới tính(E) , Quê quán (F) , Ngày đăng ký(G) , MSV(H) ) với tập các phụ thuộc hàm F3={A→BCDEFGH , H→ABCDEFG} và tập khóa K3={AH}
Ta thấy không có thuộc tính không khóa nào (B ,C, D, E,F,G) phụ thuộc hàm bắc cầu vào 1 khóa của quan hệ này.Vậy Sinh viên ở dạng chuẩn 3
d)Xét quan hệ Đối tượng=(Tên SV(A) , MS đối tượng(B) , Tên đối tượng(C) , MSV(D) ) với tập các phụ thuộc hàm F4={AB→CD} và tập khóa K4={ABD}
Ta thấy không có thuộc tính không khóa nào (C) phụ thuộc hàm bắc cầu vào 1 khóa của quan hệ này.Vậy Đối tượng ở dạng chuẩn 3
e)Xét quan hệ Thanh toán=(Ngày ở (A) , MSV(B) , Ngày thanh toán(C) ) với tập các phụ thuộc hàm F5={AC→B} và tập khóa K5={AC}
Ta thấy không có thuộc tính không khóa nào (B) phụ thuộc hàm bắc cầu vào 1 khóa của quan hệ này.Vậy Thanh toán ở dạng chuẩn 3
*Dịch các câu trên đại số quan hệ sang ngôn ngữ SQL:
Truy vấn 1:Tìm tên của tất cả các sinh viên học chuyên ngành công nghệ thông
tin:
result =π(tên)(σ(chuyên ngành =”cntt”)(SV))
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM SV
WHERE chuyên ngành=”cntt”
Truy vấn 2:Tìm tên của tất cả các sinh viên có quê là Hà Nội hoặc Hà Nội 2:
result=π(tên)(σ((quê=Hà Nội)) hoặc (quê=Hà Nội 2))(SV))
→TRUY VẤN TRÊN SQL:
SELECT tên
Trang 9FROM SV
WHERE quê=Hà Nội OR quê=Hà Nội 2
Truy vấn 3:Tìm số hiệu sinh viên s# và tên của tất cả các sinh viên thuộc khóa
D10:
result=π(s#,tên)(σ=(khóa học=D10)(SV))
→TRUY VẤN TRÊN SQL:
SELECT s#,tên
FROM SV
WHERE khóa học=D10
Truy vấn 4:Tìm tên của các khóa học mà SV được đăng ký ở nội trú là cao đẳng
(C) và đại học(D):
result=π(tên)(σ((khóa học=C và (khóa học=D))(TG))
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM TG
WHERE khóa học=C AND khóa học=D
Truy vấn 5:Tìm tên của tất cả các sinh viên hoàn thành lệ phí đầy đủ trong thời
gian dưới 30 ngày và là sinh viên khóa D10:
result=π(tên)(σ((thời gian<30 ngày) và (khóa học=D10)(SV))
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM SV
WHERE thời gian<30 ngày AND khóa học=D10
Truy vấn 6:Tìm tên của tất cả các sinh viên đăng ký ở vào mùa thu 2010:
Trang 10result=π(tên)(σ(thời gian=thu 2010)(SV))
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM SV
WHERE thời gian=thu 2010
Truy vấn 7:Tìm mã hiệu của các sinh viên chỉ đăng ký ở vào mùa thu 2010:
result=[π(s#)(σ(TG=thu 2010)(TG))]-[π(s#)(σ(TG≠thu 2010)(TG))]
→TRUY VẤN TRÊN SQL:
SELECT s#
FROM TG
WHERE (TG=thu 2010) – (TG≠thu 2010)
Truy vấn 8:Tìm tên cá nhân hoặc phòng có nhu cầu sửa chữa tài sản chung:
result=[π(tên)(σ(tài sản=sinh viên)(SV))]ᴗ[π(tên)(σ(tài sản=phòng)(P))]
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM SV,P
WHERE (tài sản=sinh viên) ᴗ (tài sản=phòng)
Truy vấn 9:Tìm tên các phòng còn trống hoặc có ít hơn 8 sinh viên:
result=[π(tên)(σ(phòng=Ø)(P))]ᴗ[π(tên)(σ(phòng <8)(P))]
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM P
WHERE (phòng=Ø) ᴗ (phòng<8)
Trang 11Truy vấn 10:Tìm tên tất cả các sinh viên đăng ký ở sau mùa thu 2010 và chỉ ở dưới
30 ngày rồi chuyển đi:
result=π(tên)(σ((thời gian=thu 2010) và(thời gian< 30 ngày))(TG))
→TRUY VẤN TRÊN SQL:
SELECT tên
FROM TG
WHERE thời gian=thu 2010 AND thời gian <30 ngày