Các thuộc tính không khóa đều phụ thuộc đầy đủ vào các khóa.. Các thuộc tính không khóa là BCDE đều phụ thuộc đầy đủ vào khóa A nên Q1 đạt 2NF.Tất cả các thuộc tính không khóa không phụ
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
CƠ SỞ DỮ LIỆU
ĐỀ TÀI:
CƠ SỞ DỮ LIỆU QUẢN LÝ NHÀ HÀNG ĂN
Giảng viên: TS.Trần Hồng DiệpSinh viên: Dương Văn Thành
Lớp: 61TH6
Trang 2Hà Nội, 4/2021
TRƯỜNG ĐẠI HỌC THỦY LỢI
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
CƠ SỞ DỮ LIỆU
ĐỀ TÀI:
CƠ SỞ DỮ LIỆU QUẢN LÝ NHÀ HÀNG ĂN
Giảng viên: TS.Trần Hồng DiệpSinh viên: Dương Văn Thành
Lớp: 61TH6MSV: 1951061022
Trang 3
HÀ NỘI, 4/2021
LỜI NÓI ĐẦU Trong thời đại ngày nay, công nghệ thông tin đang được phát triển mạnh mẽ, nhanh chóng và
xâm nhập vào nhiều lĩnh vực khoa học, kỹ thuật, cũng như trong cuộc sống Nó trở thành công
cụ hữu ích để quản lý , xây dựng , thiết kế … đặc biệt trong công tác quản lý nói chung và quản
Là một sinh viên công nghệ thông tin, nhận được tầm quan trọng của tin học hóa và cácdoanh nghiệp tin học trong cơ chế thị trường như hiện nay ở Việt Nam, sau một thời gian tìm
hiểu và học tập, em đã quyết định chọn đề tài “Quản lý nhà hàng ăn” nhằm ứng dụng những
kiến thức đã học được và kết hợp chúng với kiến thức về kinh tế
Em xin chân thành cảm ơn cô giáo TS Trần Hồng Diệp giảng viên đã tận tình hướngdẫn, giảng dạy em bộ môn Cơ Sở Dữ Liệu để hoàn thành được bài tập này
Trang 4MỤC LỤC
LỜI NÓI ĐẦU 3
MỤC LỤC 4
I Khảo Sát Thực Tế 5
II Phân Tích Và Thiết Kế Dữ Liệu 7
II.1 Các kiểu liên kết 7 II.2 Mô hình thực thể ban đầu 8 II.3 Tách đa trị 9 II.4 Mô hình liên kết mở rộng 10 II.5 Chuyển mô hình quan hệ 11 III Xác định khóa 12 III.1 Xác định phụ thuộc hàm khóa
12
III.2 Tìm khóa cho các quan hệ
13
Trang 5III.3 Chuẩn hóa lược đồ quan hệ thành dạng 3NF hoặc BCNF 14
IV Câu lệnh truy vấn dữ liệu SQL 16 IV.1 Tạo bảng 16
IV.2 Các câu hỏi truy vẫn và ngôn ngữ SQL 18
Kết Luận 21 Tài Liệu Tham Khảo 22
Trang 82.2 Mô hình thực thể ban đầu
Trang 92.3 Tách đa trị
Trang 102.4 Mô hình liên kết mở rộng
Trang 112.5 Chuyển Mô Hình Quan Hệ
1 KHACH( Ma_K, Ten_K, Dia_C, Dien_T)
Trang 12Mỗi khách có mã (Ma_K) duy nhất, tên khách (Ten_K), địa chỉ (Dia_C) và số điện thoại (SDT).
2 NHANVIEN( Ma_NV, Ten_NV, Dia_C, Dien_T, ChucV)
Mỗi nhấn viên có mã nhân viên (Ma_NV) duy nhất, tên nhân viên (Ten_NV), địa chỉ (Dia_C),
số điện thoại (Dien_T), chức vụ ở trong nhà hàng (ChucV)
3 LUONG( MaL, T_Toan)
Mỗi lương có mã lương (MaL) duy nhất và thanh toán (T_Toan)
4 HOADON( Ma_HD, Ngay).
Mỗi hóa đợn có mã hóa đơn (Ma_HD) duy nhất, ngày hóa đơn (Ngay), tổng tiền trên hóa đơn (T_Tien), không trả (K_Tra) và còn dư (C_Du)
5.CHITIETHOADON ( Ma_HD , Ma_K, T_Tien, K_Tra, C_Du, Ma_NV)
Mỗi hóa đợn có mã hóa đơn (Ma_HD), Mỗi khách có mã (Ma_K) duy nhất, tổng tiền trên hóa đơn (T_Tien), không trả (K_Tra) và còn dư (C_Du)
6 NHACC( MaNC, Ten_NC, Dia_C, Dien_T, Ngay_HT)
Mỗi nhà cung cấp có mã nhà cung cấp (MaNC), tên nhà cung cấp (Ten_NC), địa chỉ (Dia_C), điện thoại (Dien_T), ngày hợp tác (Ngay_HT)
6 THUCPHAM(Ma_TP, Ten_TP, D_Vi, Ngay_N, Ngay_HH)
Mỗi thực phẩm có mã thực phẩm (Ma_TP), tên thực phẩm (Ten_TP), đơn vị tính (D_Vi), ngày nhập (Ngay_N) và ngày hết hạn (Ngay_HH)
7 MENU( Ma_MN, Ma_M, Ten_M, Don_G, DV_T).
III Xác định khóa
Trang 133.1 Xác định phụ thuộc hàm.
Bảng quan hệ NHANVIEN:
Q1 = (MaNV, Ten_NV, Dia_C, Dien_T, Chuc_Vu, Ma_L)
_ Đặt MaNV = A, Ten_NV = B, Dia_C = C, Dien_T = D, Chuc_Vu = E, Ma_L=F;
Q3 = (Ma_TP, Ten_TP, DV_T, Ngay_N, Ngay_HH, Ma_NCC)
_ Đặt Ma_TP= A, Ten_TP= B, DV_T=C, Ngay_N=D, Ngay_HH= E, Ma_NCC= F
Q3 = (ABCDEF)
Phụ thuộc hàm:
F3 = {A → BCD, D → E, AB →F}
Bảng quan hệ NHACC:
Q4 = (MaNC, Ten_NC, Dia_C, Dien_T)
_ Đặt MaNC = A, Ten_NC = B, Dia_C = C, Dien_T = D;
Q4 = (ABCD)
Phụ thuộc hàm:
F4 = {A → BC, AB → D}
Bảng quan hệ KHACH:
Q5 = (Ma_K, Ten_K, Dia_C, Dien_T, Ma_NV, Ma_MN)
_ Đặt Ma_K = A, Ten_K = B, Dia_C = C, Dien_T= D, Ma_NV = E, Ma_MN = F
Q5 = (ABCDEF)
Phụ thuộc hàm:
F5 = {A → BCD, A → EF}
Bảng quan hệ HOADON:
Q5 = (Ma_HD, T_Tien, Ngay, Ma_NV, Ma_K)
_ Đặt: Ma_HD = A, T_Tien = B, Ngay = C, Ma_NV =D, Ma_K= E
Q5 = (ABCDE)
Phụ thuộc hàm:
F5 = {A → BC, EA → D, AC🡪E}
Bảng quan hệ MENU:
Q6 = (Ma_MN, Ma_M, Ten_M, Don_G)
_ Đặt: Ma_MN = A, Ma_M = B, Ten_M = C, Don_G = D
Trang 14 Q6 = (ABCD)
Phụ thuộc hàm:
F6 = {A → BC, B→D}
Bảng quan hệ LUONG
Q7 = {MaL, T_Toan, Ma_NV}
_ Đặt MaL = A, Ma_NV = B, T_Toan = C
Ta có giao của các khóa là X = {ABCDE} – {BCDE} = {A}
Bao đóng của A =ABCDE = Q1 nên A là khóa duy nhấtcủa quan hệ Q1
Q2 = (AB)
Phụ thuộc hàm:
F2= {A🡪 B}
Ta có giao của các khóa là X = {ABC} – {B} = {A}
Bao đóng của A = ABCD = Q2 nên A là khóa duy nhất của quan hê Q2
Q3 = (ABCDEF)
Phụ thuộc hàm:
F3 = {A → BCD, D → E, AB → F}
Ta có giao của các khóa la X= {ABCDEF} – {BCDEF} = {A}
Bao đóng của A = ADBFCE = Q3 nên A là khóa duy nhất của quan hệ Q3
Q4 = (ABCD)
Phụ thuộc hàm:
F4 = {A → BC, AB → D}
Ta có giao của các khóa là X = {ABCD} – {BCD} = {A}
Bao đóng của A= ABCD= Q4 nên A là khóa duy nhất của quan hệ Q4
Q5 = (ABCDE)
Phụ thuộc hàm:
F5 = {A → BC, EA → D, AC → E}
Ta có giao của các khóa là X = {ABCDE} - {BCDE} = {A}
Bao đóng của A = ABCDE = Q6 nên A là khóa duy nhất của quan hệ Q5
Q6 = (ABCD)
Phụ thuộc hàm:
F6 = {A → BC, B → D}
Ta có giao của các khóa là X = {ABCD} – {BCD} = {A}
Bao đóng của A = ABCD = Q6 nên A là khóa duy nhất của quan hệ Q6
Trang 15 Q7 = {ABC}
Phụ thuộc hàm:
F7 = {A🡪 B, A🡪C}
Ta có giao của các khóa là X = {ABC} – {BC} = {A}
Bao đóng của A = ABC = Q7 nên A là khóa duy nhất của quan hệ Q6
3.3 Chuẩn hóa lược đồ quan hệ thành dạng 3NF hoặc BCNF
Chuẩn hóa mô hình về dạng 3NF:
Mô hình ở dạng 3NF nếu nó ở dạng 1 NF và 2NF Các thuộc tính không khóa đều phụ thuộc đầy đủ vào các khóa Không có phụ thuộc hàm bắc cầu vào khóa
Q1 = (ABCDE)
Phụ thuộc hàm:
F1 = {A → BC, A → DE Khóa là A
Q1 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Các thuộc tính không khóa là BCDE đều phụ thuộc đầy đủ vào khóa A nên Q1 đạt 2NF.Tất cả các thuộc tính không khóa không phụ thuộc bắc cầu vào khóa nên Q1 đạt 3NF
Q2 = (AB)
Phụ thuộc hàm:
F2= {A → B} Khóa của Q2 là A
Q2 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Các thuộc tính không khóa là B đều phụ thuộc đầy đủ vào khóa A nên Q2 đạt 2NF
Tất cả các thuộc tính không khóa không phụ thuộc bắc cầu vào khóa nên Q2 đạt 3NF
Q3 = (ABCDEF)
Phụ thuộc hàm:
F3 = {A → BCD, D → E, AB → F Khóa của Q3 là A
Q3 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Các thuộc tính không khóa là BCDE không phụ thuộc đầy đủ vào khóa nên Q2 chưa đạt 2NF
Trang 16F4 = {A → BC, AB → D}
Q4 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Tính được Fc = {A → B, A → C, A → D} Khóa của Q4 là A
Q5 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Thuộc tính khóa là A và thuộc tính không khóa là BCDE phụ thuộc đầy đủ vào khóa nên Q5 đạt
Q5 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Thuộc tính khóa là A và thuộc tính không khóa là BCDEphụ thuộc đầy đủ vào khóa nên Q5 đạt
Q5 không có thuộc tính suy diễn và thuộc tính lặp nên đạt 1NF
Thuộc tính khóa là A và thuộc tính không khóa là BC phụ thuộc đầy đủ vào khóa nên Q5 đạt 2NF
Các thuộc tính không khóa không phụ thuộc bắc cầu vào khóa nên Q5 đạt 3NF
IV Câu lệnh truy vấn dữ liệu SQL
Trang 17Ma_NV char (8) not null,
Ma_MN char (5) not null,
foreign key (Ma_NV) references NHANVIEN (Ma_NV),foreign key (Ma_MN) references MENU ( Ma_MN));
Tạo bảng HOADON
create table HOADON
Trang 18Ma_HD char (5) not null primary key,
Ma_NV char (8) not null,
Ma_K char (8) not null,
foreign key (Ma_NV) references NHANVIEN (Ma_NV),foreign key (Ma_K) references KHACH (Ma_K)
Ma_NV char (8) not null,
foreign key (Ma_NV) references NHANVIEN (Ma_NV));
Ma_NV char (8) not null,
foreign key (Ma_NV) references NHANVIEN (Ma_NV));
4.2 Các câu hỏi truy vấn và ngôn ngữ SQL.
Trang 191 Đưa ra danh sách tất cả các nhân viên có họ bắt đầu là 'Vu’.
2 Đưa ra thông tin khách hàng đã ăn trong nhà hàng ngày 2/2/2017
3 Cho biết 3 nhân viên có lương thanh toán cao nhất
4 Cho biết thông tin Ma_K, Ten_K đã thanh toán tiền với tổng tiền cao nhất trong ngày
‘2/2/2017’
5 Đưa ra thông tin khách hàng có địa chỉ ở Hà Nội
6 Hiện thị thông tin nhân viên sinh năm 1997 làm chức vụ phục vụ
7 Cho biết nhân viên “NV1” đã nhập thực phẩm gì trong tháng 9/3/2017
8 Đưa ra thông tin các món ăn cuả mã menu 'M1'
9 Sắp xếp nhân viên theo thứ tự giảm dần của tiền lương T_Toan Nếu lương bằng nhau thìsắp xế theo thứ tự giảm dần về ma_nv
10 Cho biết họ tên, địa chỉ của khách hàng đã ăn trong ‘2/3/2017’
11 Tăng lương thêm 5000000 cho những nhân viên có chức vụ là 'Quản lý'
12 Liệt kê Ma_M, Ten_M với đơn giá 20000
1 Đưa ra danh sách tất cả các nhân viên có họ bắt đầu là 'Vu’
select *
from NHANVIEN
where Ten_NV like 'Vu%';
2 Đưa ra thông tin khách hàng đã ăn trong nhà hàng ngày 2/2/2017
select *
from KHACH, HOADON
where( (DAY(Ngay)=2) and (MONTH(Ngay)=2 )and (YEAR(Ngay)=2017)) and
Trang 204 Cho biết Ma_K, Ten_K đã thanh toán tiền với tổng tiền cao nhất trong ngày '2- 3-2017’select *
from KHACH
where Ma_K in ( select Max(T_Tien) from HoaD where Ngay= '2/3/2017');
5 Đưa ra thông tin khách hàng có địa chỉ ở HN
select *
from KHACH
where Dia_C like 'HN';
6.Hiện thị thông tin các nhân viên sinh năm 1997, làm chức vụ phục vụ
select Ma_NV, Ten_NV, Ngay_S
from NHANVIEN
where ChucVu like 'Phuc vu'and (YEAR(Ngay_S)=1997);
7 Cho biết nhân viên “NV1” đã nhập thực phẩm gì từ nhà cung cấp 'NC1' năm 2017select *
from THUCPHAM
where Ma_TP in (select Ma_NCC from NHANVIEN, NHACC where
NHANVIEN.Ma_NV=NHACC.Ma_NV and NHANVIEN.Ma_NV= 'NV1' and Ma_NCC
Trang 219 Sắp xếp nhân viên theo thứ tự giảm dần của tiền lương T_Toan Nếu lương bằng nhau thì sắp xế theo thứ tự giảm dần về ma_nv.
select *
from LUONG
order by T_Toan desc, Ma_NV asc;
10 Cho biết họ tên, địa chỉ của khách hàng ăn trong trong ngày '2/2/2017'
select Ten_K, Dia_C
from KHACH KH, HOADON HD
where HD.Ma_K=KH.Ma_K and HD.Ngay= '2/3/2017' ;
11 Tăng lương thêm 5000000 cho những nhân viên có chức vụ là 'Quản lý'
update LUONG
set T_Toan=T_Toan+5000000
where Ma_NV in (select ChucVu from NHANVIEN where ChucVu like'Quan Ly');
12 Liệt kê các mã món, Ten_M với đơn giá 20000
select Ma_M, Ten_M
from MENU
where Don_G =200000;
Trang 22Sau khi hoàn thành bài tập lớn này, em đã thu được những kiến thức về môn học cơ sở dữ liệu cũng như áp dụng kiến thức đó vào phân tích các bài toán thực tế.
Bài tập đã làm được các nội dung sau đây:
Bài toán 1: Xác định được các mối liên kết và ràng buộc dữ liệu Xây dựng được mô hình thực thể liên kết ER Sau đó từ mô hình này thực hiển chuyển sang mô hình quan hệ
Bài toán 2: Từ mô hình quan hệ thu được từ bài toán 1 Tiến hành tìm các phụ thuộc hàm, tìm các khóa Sau đó chuẩn hóa mô hình về dang chuẩn 3NF hoặc BCNF
Bài toán 3: Từ các dữ liệu đã có Truy vấn cơ sở dữ liệu bằng ngôn ngữ SQL qua các câu lệnh
Từ đó kết luận được:
Cơ sở dữ liệu 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ị nhằm thỏa mãn nhu cầu khai thác thông tin từ thực tiễn đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng chạy cùng một lúc với những mục đích khác nhau Vì cậy để đảm bảo cơ
sở dữ liệu được chuẩn xác cần phải đi thực nghiệm thực thế các hệ thống quản lý tại nơi đó rồi
từ đó phân tích và thiết kế ra được cơ sở dữ liệu phù hợp Thực thể càng nhiều cơ sở dữ liệu càng được thể hiện hệ thống chặt chẽ Xác định các phụ thuộc hàm phải đảm bảm các yêu cầu
về dàng buộc dữ liệu để tránh bị vi phạm ràng buộc toàn vẹn trong thiết kế cơ dữ liệu
Việc sử dụng thông thạo các câu truy vấn SQL giúp cho việc truy vấn dữ liệu theo yêu cầu sẽ rất
dễ dàng
Kiến nghị:
Trên đây là những kết quả đầu tiên mà em học tập và làm dựa trên yêu cầu bài tập lớn môn Cơ
sở dữ liệu, nên còn nhiều sai sót mong cô chấp nhận bài làm của em Trong tương lai, từ mônhọc này kết hợp với môn học liên quan em sẽ phân tích rồi thiết kế được một số cơ sở dữ liệuhữu dụng cho thực tế Em xin chân thành cảm ơn cô giáo TS Trần Hồng Diệp đã tận tình hướngdẫn, giảng dạy em bộ môn Cơ Sở Dữ Liệu để hoàn thành được bài tập này
TÀI LIỆU THAM KHẢO
Trang 23[1] TS.Trần Hồng Diệp , 2009 , Bài giảng, Nhập Môn Cơ sở dữ liệu, Bộ môn tin học , TrườngĐại học Lâm Nghiệp
[2] TS Đặng Thị Thu Hiền, 2017, Bài giảng, Cơ sở dữ liệu, Bộ môn Hệ thống thông tin,Trường Đại học Thủy Lợi
[3] GV Phạm Thị Hồng Nhung, 2007, Phần I, Phần II, Cơ sở dữ liệu, Bộ môn Công nghệ phầnmềm, Trường Đại học Thủy Lợi
[4] Marcilina S Garcia, Jamie Reding, Edward Whalen, Steve Adrien DeLuca, SQL Server
2000 Administrator’s Companion, Microsoft Press, 2000