Professional Documents
Culture Documents
ĐỀ TÀI:
CƠ SỞ DỮ LIỆU QUẢN LÝ NHÀ HÀNG ĂN
ĐỀ TÀI:
CƠ SỞ DỮ LIỆU QUẢN LÝ NHÀ HÀNG ĂN
2
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ý nhà hàng nói riêng.
Trước đây, khi máy tính chưa được ứng dụng rộng rãi, các công việc quản lý nhà hàng đều được
làm rất thủ công nên mất rất nhiều thời gian, nhân lực cũng như tài chính. Ngày nay, cùng với
sự phát triển của CNTT máy tính đã được sử dụng rỗng rãi trong các cơ quan, nhà máy, trường,
siêu thị, … giúp cho công việc được tốt hơn. Việc sử dụng máy tính vào công tác quản lý là một
yêu cầu cấp thiết được cải tiến ngày nay. Vì vậy, em đã xây dựng một cơ sở dữ liệu “ Quản lý
nhà hàng ăn” với mong muốn có thể giúp cho việc xây dựng hệ thống quán lý một cách dễ dàng
hơn. Để từ đó có thể đưa ra được thực nghiệm ứng dụng vào thực tế.
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ác
doanh 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ướng
dẫ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.
3
MỤC LỤC
MỤC LỤC 4
10
11
12
13
4
III.3 Chuẩn hóa lược đồ quan hệ thành dạng 3NF hoặc BCNF
14
16
18
Kết Luận 21
2. Nhân viên :
+ Ma_NV
+ Ten_NV
+ Dia_Chi
+ Dien_Th
+ Chuc-Vu
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).
5
4. Lương:
+ MaL
+ T_Toan
Mỗi lương có mã lương (MaL) duy nhất và thanh toán (T_Toan).
5. Hóa đơn:
+ Ma_HD
+ Ma_K
+ Ngay
+ T_Tien
+ K_Tra
+ C_Du
+ Ma_NV
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).
7. Thực phẩm:
+ 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).
8. MENU:
+ Ma_MN
+ Ma_M
6
+ Ten_M
+ Don_G
7
2.2 Mô hình thực thể ban đầu
8
2.3 Tách đa trị
9
2.4 Mô hình liên kết mở rộng
10
2.5 Chuyển Mô Hình Quan Hệ
1. KHACH( Ma_K, Ten_K, Dia_C, Dien_T)
11
Mỗ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).
13
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
Q7 = {ABC}
Phụ thuộc hàm:
F7 = {A → B, A → C}
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.
Tính được Fc= {A → B, A → C, A → D, D → E, A → F}
Phân rã thành:
Q31 = AB
Q32 = AC
Q33 = AD
Q34 = DE
Q35 = AF
Kết quả đạt được:
Q31 (AB), F31 = {A → B}, đạt 3NF
Q32 (AC), F32 = {A → C}, đạt 3NF
Q33 (AD), F33 = {A → D}, đạt 3NF
Q34 (DE), F34 = {D → E}, đạt 3NF
Q35 (AF), F35 = {A → F}, đạt 3NF
Q4 = (ABCD)
Phụ thuộc hàm:
15
F4 = {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.
Phân rã thành:
Q41 = AB
Q42 = AC
Q43 = AD
Kết quả đạt được:
Q41 (AB), F41 = {A→B}, đạt 3NF
Q42 (AC), F41 = {A→C}, đạt 3NF
Q43 (AB), F43 = {A→D}, đạt 3NF
Q4 đạt BCNF.
Q5 = (ABCDE)
Phụ thuộc hàm:
F5 = {A→ BC, EA → D, AC🡪E}. Khóa 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
2 NF.
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.
Q6 = (ABCD)
Phụ thuộc hàm:
F6 = {A🡪 BC, B🡪D}
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
2 NF.
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.
Q7 = {ABC}
Phụ thuộc hàm:
F7 = {A → B, A → C}. Khóa 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à BC phụ thuộc đầy đủ vào khóa nên Q5 đạt 2
NF.
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.
--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
(KHACH.Ma_K =HOADON.Ma_K);
--3. Cho biết 3 nhân viên có lương thanh toán cao nhất.
select *
from NHANVIEN
where (select count(*) from LUONG L where T_Toan>L.T_Toan)<3;
19
--4. 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');
--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 2017
select *
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
='NC1');
20
--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.
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');
KẾT LUẬN
21
Sau 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ôn
họ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ệu
hữ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ướng
dẫ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.
23