Professional Documents
Culture Documents
ĐỒ-ÁN-CUỐI-KỲ-CSDL
ĐỒ-ÁN-CUỐI-KỲ-CSDL
ĐỒ ÁN
HỌC PHẦN CƠ SỞ DỮ LIỆU
ĐỀ TÀI:
Lớp : 232_71SEDA30053_02_CSDL
Giảng viên hướng dẫn: Ths Huỳnh Phước Danh
Mục lục
Thời đại công nghệ số bùng nổ mang đến cho mọi ngành nghề, đặc biệt là lĩnh
vực quản lý hệ thống bán gà rán, cơ hội to lớn để nâng tầm hiệu quả và lợi
nhuận thông qua việc ứng dụng công nghệ dữ liệu tiên tiến.
KFC, thương hiệu gà rán nổi tiếng toàn cầu, trong việc áp dụng giải pháp
quản lý dữ liệu hiệu quả để tối ưu hóa hoạt động kinh doanh. Bài viết này sẽ
đi sâu vào phân tích và đề xuất các giải pháp quản lý hệ thống bán gà rán dựa
trên mô hình CSDL của KFC.
- Database quan hệ: Chúng là các dữ liệu khác nhau được lưu trữ trong các bảng dữ
liệu nhưng giữa chúng lại có mối liên hệ với nhau. Vì vậy, chúng mới có tên gọi là
“database quan hệ”. Một số hệ quản trị hỗ trợ database quan hệ hiện rất được ưa
chuộng bao gồm: MySQL, MS SQL server, Oracle,…
- Database hướng đối tượng: Điểm giống nhau giữa database hướng đối tượng và
database quan hệ chính là chúng đều được lưu trữ trong bảng dữ liệu. Còn điểm khác
biệt các bảng của database hướng đối tượng có thêm các tính năng hướng đối tượng,
ví dụ như lưu trữ thêm 1 số hành vi để thể hiện rõ hơn hành vi của đối tượng. Nhắc
đến tên các hệ quản trị hỗ trợ database hướng đối tượng, người ta sẽ nhớ ngay đến
những cái tên nổi bật như: MS SQL server, Postgres SQL, Oracle,…
- Database bán cấu trúc: Loại database này được lưu với định dạng XML, nó có thông
tin mô tả dữ liệu và đối tượng được trình bày trong các thẻ tag. Database bán cấu trúc
có ưu điểm vượt trội đó là lưu trữ được nhiều loại data khác nhau, chính vì vậy nó
đang dần khẳng định được vị trí và giá trị sử dụng của mình.
Ngoài ra còn có Phân loại Database theo hệ điều hành
- Database dùng hệ điều hành Windows, ví dụ như: SQL Server – MSSQL,...
So với mô hình mạng thì mô hình quan hệ thực thể có nhiều ưu điểm hơn và
nó thể hiện rõ hơn các thành phần trong thế giới thực. Nếu như mô hình mạng
chỉ biểu diễn các đối tượng chính chứ không mô tả được các đặc điểm trong đối
tượng đó thì trong mô hình quan hệ thực thể lại khắc phục được những điểm
yếu này. Chính vì vậy việc lựa chọn mô hình này luôn là quyết định của các
nhà phân tích thiết kế cơ sở dữ liệu
b.Thành phần của mô hình quan hệ
Thực thể và thuộc tính
Giá trị của thuộc tính có 2 loại là đơn trị và đa trị. Đơn trị là các thuộc tính như tên,
ngày sinh, giới tính… Đa trị là các thuộc tính như certificates, studied school (có thể
có nhiều hơn 1).
Kiểu dữ liệu của thuộc tính đơn trị có thể là string, float, integer, datetime… Các
thuộc tính đa trị có thể coi như 1 danh sách các giá trị thuộc các kiểu vừa nêu. Ví dụ
ngày sinh kiểu datetime, tên kiểu string, điểm trung bình kiểu float…
Thực thể (Entity) đơn giản là các đối tượng, sự vật, đồ vật. Nhiều thực thể thì được
gọi là một tập thực thể. Trong mô hình ER có thể có nhiều thực thể khác nhau, được
ký hiệu bằng hình chữ nhật và tên thực thể bên trong (xem hình kế tiếp trong mục
Thuộc tính, nhân viên là thực thể). Ví dụ thực thể (Nhà cửa, xe cộ, phòng ban, nhân
viên, sinh viên…).
Ngoài ra còn có 1 loại là thực thể yếu. Thực thể yếu là thực thể thêm vào để bổ sung
thông tin cho thực thể chính trong quan hệ và nó không quan trọng. Thông thường khi
thiết kế ER model, bạn sẽ hiếm khi thấy thực thể yếu xuất hiện trong mô hình.
Thực thể sẽ có các thuộc tính liên quan đến nó. Ví dụ như con người thì sẽ có họ tên,
ngày sinh, giới tính, địa chỉ, số CMND… Sinh viên thì có thêm MSSV, trường, lớp…
Thuộc tính trong mô hình ER được ký hiệu là hình bầu dục hoặc tròn cùng với tên
thuộc tính bên trong. Thuộc tính thuộc thực thể nào thì sẽ được nối đến thực thể đó.
Thuộc tính dùng để phân biệt giữa các thực thể với nhau gọi là thuộc tính khóa. Thuộc
tính khóa ký hiệu tương tự thuộc tính thường nhưng có thêm gạch chân dưới tên thuộc
tính.
c. Các loại quan hệ trong mô hình
Mối quan hệ giữa các thực thể có các kiểu sau:
Quan hệ 1 – 1: ví dụ như chức trưởng phòng chỉ có thể thuộc về 1 người và cũng chỉ
có 1 người có thể giữ chức trưởng phòng trong cùng 1 thời điểm.
Quan hệ 1 – n (hoặc n – 1): ví dụ như mỗi chiếc xe hơi được đứng tên bởi 1 người
nhưng 1 người có thể có nhiều chiếc xe hơi.
Quan hệ n – n: ví dụ như trên đại học, mỗi sinh viên sẽ được tham gia vào các lớp
thuộc các môn học khác nhau và mỗi lớp cũng có nhiều sinh viên khác nhau tham gia.
Mối quan hệ giữa thực thể còn được đánh bảng số để biểu thị số chiều của mối quan
hệ. Bảng số có dạng sau (min, max), trong đó min là số lượng thực thể tối thiểu tham
gia mối quan hệ và max là số thực thể tối đa trong mối quan hệ đó.
Ví dụ như mỗi phòng ban có thể có 1 hoặc nhiều nhân viên (ít nhất 1 và nhiều nhất n
nhân viên), mỗi nhân viên thì chỉ có thể thuộc về 1 và chỉ 1 phòng ban (ít nhất 1 và
nhiều nhất 1).
Phần in đậm - có gạch dưới là khoá chính, in nghiêng – có gạch dưới là khoá
ngoại.Hoặc với khoá ngoại bạn có thể nhận biết được bằng xét xem một thuộc tính
của bất kì một quan hệ nào là khoá chính của một quan hệ khác.
Khoá chính có thể bao gồm nhiều thuộc tính – cũng có thể bao gồm nhiều khoá ngoại
khác nhau.
3.2.Các loại ràng buộc trong mô hình quan hệ
a.Các loại ràng buộc
Ràng buộc ngầm định: Là các ràng buộc liên quan đến tính chất của một quan hệ như:
Giá trị các thuộc tính phải là nguyên tố
Không được phép có hai bộ giống nhau trong cùng một quan hệ
Thứ tự các bộ trong một quan hệ là không quan trọng,…
Ràng buộc dựa trên ứng dụng: Là ràng buộc liên quan đến ngữ nghĩa và hành vi
(behavior) của các thuộc tính. Loại ràng buộc này khó mô tả trong mô hình dữ liệu và
chỉ được kiểm tra trong quá trình cập nhật dữ liệu dựa trên nền tảng ứng dụng đã được
lập trình.
Ràng buộc dựa trên lược đồ: Là ràng buộc có thể mô tả trực tiếp trong lược đồ của
mô hình dữ liệu. Loại ràng buộc này được mô tả bằng ngôn ngữ DDL bao gồm các
ràng buộc về:
Miền giá trị (domain constraint)
Khoá (key constraint)
Các giá trị NULL
Toàn vẹn thực thể (entity integrity constraint)
Toàn vẹn tham chiếu (referential integrity constraint)
Ràng buộc miền giá trị: Là loại ràng buộc về giá trị của một thuộc tính xác định nào
đó trong một quan hệ cụ thể. Ràng buộc này có thể áp dụng lên một thuộc tính hoặc
một nhóm các thuộc tính tự ràng buộc lẫn nhau về giá trị.
Ví dụ: 0 <= điểm <= 10 hoặc 1 <= tháng <= 12
Hay một quan hệ TRASACH có thuộc tính ngayMuon và ngayTra: ngayMuon <=
ngayTra
Ràng buộc về khoá: Thường được biểu diễn bằng các phụ thuộc hàm, là một loại ràng
buộc liên bộ phổ biến xác lập sự tồn tại duy nhất của các bộ trong một quan hệ.
Ví dụ: Hai bộ phân biệt của cùng quan hệ không thể có thuộc tính khoá trùng nhau.
Mỗi sinh viên có mã số duy nhất, …
Ràng buộc về giá trị NULL: Ràng buộc này cho biết một thuộc tính có thể nhận giá trị
NULL hay không.
Ràng buộc toàn vẹn thực thể: Kiểm tra rằng khoá chính không thể mang giá trị NULL
hay nói cách khác – các khoá chính được sử dụng để xác định các bộ trong một quan
hệ. Nếu có bất cứ khoá chính nào mang giá trị NULL thì các bộ tương ứng đó sẽ
không thể xác định được.
Ví dụ: Nếu có hai hoặc nhiều bộ có khoá chính mang giá trị NULL => thể không thể
phân biệt chúng nếu tham khảo chúng từ các quan hệ khác.
b.Kết luận
Tóm lại, ràng buộc là thứ không thể thiếu trong việc thiết kế và vận hành một CSDL
trong thực tế. Ràng buộc là kiến thức tiên quyết để bắt đầu xây dựng một CSDL nhất
quán và logic để đáp ứng được các nhu cầu khách hàng trong xây dựng và phát triển
phần mềm.
Định nghĩa: Một bảng (quan hệ) được gọi là ở dạng chuẩn 1NF nếu và chỉ nếu toàn bộ
các miền giá trị của các cột có mặt trong bảng (quan hệ) đều chỉ chứa các giá trị
nguyên tử (nguyên tố)
Ví dụ :
Định nghĩa Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó:
Là 1NF
Các thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khoá chính
Ví dụ 1: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm F = {AB -> C,
AB -> D}là quan hệ đạt chuẩn 2NF.
Ví dụ 2: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, B -> DC} là quan hệ không đạt chuẩn 2NF vì có phụ
thuộc hàm
B -> DC là phụ thuộc hàm bộ phận (phụ thuộc hàm không đầy đủ) vào khoá.
Khi đó ta đưa về dạng chuẩn 2NF như sau:
Suy ra :
Một quan hệ ở dạng chuẩn 2NF nếu thoả mãn 1 trong các điều kiện sau: Khoá chính
chỉ gồm một thuộc tính Bảng không có các thuộc tính không khoá Tất cả các thuộc
tính không khoá phụ thuộc hoàn toàn vào tập các thuộc tính khoá chính
Dạng chuẩn 3 – 3NF
Định nghĩa Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó:
Là 2NF
Các thuộc tính không khoá phải phụ thuộc trực tiếp vào khoá chính
Ví dụ 1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F = {AB ->
C, AB -> D, AB -> GH} là quan hệ đạt chuẩn 3NF.
Ví dụ 2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, AB -> GH, G -> DH} là quan hệ không đạt chuẩn 3NF vì có
phụ thuộc hàm G ® DH là phụ thuộc hàm gián tiếp vào khoá. Khi đó ta đưa về dạng
chuẩn 3NF như sau:
. Khác với tutorial 1 ở trên dùng phương pháp làm phẳng, chúng em dùng phương
pháp tách nhóm lặp để đưa về dạng 1NF trước.
Yêu cầu: thiết kế CSDL quản lí cửa hàng thuốc cần các thông tin sau:
DB(Mã hóa đơn, Ngày bán, Tổng tiền Hóa đơn, Mã khách hàng, Tên Khách hàng, Số
ĐT Khách hàng, Mã Nhân viên, Số CMT của NV, Tên NV, Địa chỉ NV, Số ĐT Nhân
viên (Mã thuốc, Tên thuốc, Công dụng, Ngày SX, Hạn SD, Số lượng, Thành tiền)).
Các phụ thuộc hàm:
Mã hóa đơn, Mã khách hàng, Mã nhân viên, Mã thuốc, xác định duy nhất 1 hóa đơn, 1
khách hàng, 1 NV, 1 loại thuốc.
Một hóa đơn có thể có nhiều thuốc nhưng chỉ do một người mua và một nhân viên
bán.
Số CMT của NV-> Tên NV, Địa chỉ NV
1NF - Loại bỏ nhóm lặp và loại bỏ các thuộc tính tính toán.
Cần loại 2 thuộc tính tính toán sau: Tổng tiền hóa đơn và thành tiền. Vì đây chính là
dữ liệu dư thừa.
Hóa đơn(Mã hóa đơn, Ngày bán, Mã khách hàng, Tên Khách hàng, Số ĐT Khách
hàng, Mã Nhân viên, Số CMT của NV, Tên NV, Địa chỉ NV, Số ĐT NV)
Hóa đơn - Thuốc(Mã hóa đơn, Mã thuốc, Tên thuốc, Công dụng, Ngày SX, Hạn SD,
Số lượng)
2NF - Loại bỏ các phụ thuộc hàm không hoàn toàn vào khóa chính
Quan hệ Hóa đơn chỉ có khóa đơn nên quan hệ này đã ở 2NF.
Xét quan hệ Hóa đơn - Thuốc : Tên thuốc, Công dụng, Ngày SX, Hạn SD chỉ phụ
thuộc vào Mã thuốc mà không phụ thuộc vào toàn khóa nên quan hệ này được tách
làm 2 quan hệ sau:
Hóa đơn - Thuốc(Mã hóa đơn, Mã thuốc, Số lượng)
Thuốc(Mã thuốc, Tên thuốc, Công dụng, Ngày SX, Hạn SD)
Như vậy, ở dạng 2NF ta có 3 quan hệ:
Hóa đơn(Mã hóa đơn, Ngày bán, Mã khách hàng, Tên Khách hàng, Số ĐT Khách
hàng, Mã Nhân viên, Số CMT của NV, Tên NV, Địa chỉ NV, Số ĐT NV)
Hóa đơn - Thuốc(Mã hóa đơn, Mã thuốc, Số lượng)
Thuốc(Mã thuốc, Tên thuốc, Công dụng, Ngày SX, Hạn SD)
3NF - Loại bỏ các phụ thuộc hàm bắc cầu vào khóa chính
Ở quan hệ Hóa đơn, ta thấy Tên Khách hàng, Số ĐT Khách hàng chỉ phụ thuộc Mã
khách hàng. Số CMT của NV, Tên NV, Địa chỉ NV chỉ phụ thuộc mã nhân viên. Do
đó tách quan hệ này thành 3 quan hệ sau:
Hóa đơn(Mã hóa đơn, Ngày bán, Mã khách hàng, Mã Nhân viên)
Khách hàng(Mã khách hàng, Tên Khách hàng, Số ĐT Khách hàng)
Nhân viên(Mã Nhân viên, Số CMT của NV, Tên NV, Địa chỉ NV, Số ĐT NV)
Như vậy, ở 3NF, chúng ta có 5 quan hệ sau:
Hóa đơn(Mã hóa đơn, Ngày bán, Mã khách hàng, Mã Nhân viên)
Khách hàng(Mã khách hàng, Tên Khách hàng, Số ĐT Khách hàng)
Nhân viên(Mã Nhân viên, Số CMT của NV, Tên NV, Địa chỉ NV, Số ĐT NV)
Hóa đơn - Thuốc(Mã hóa đơn, Mã thuốc, Số lượng)
Thuốc(Mã thuốc, Tên thuốc, Công dụng, Ngày SX, Hạn SD)
Tutorial 3 - Chuẩn hóa về BCNF Ở đây có giáo trình CSDL (Bằng Tiếng Anh)đề cập
về chuẩn hóa rất dễ hiểu. Trình bày khá sâu về anomaly, các dạng chuẩn giải quyết
anomaly như thế nào.
Nói chung thì chuẩn hóa CSDL là việc nên biết trong khi học , Vì ngoài thực tế nếu
mà đạt được chuẩn càng cao thì CSDL càng bị dư thừa - Tùy theo mục đích sử dụng
mà chuẩn hóa hay không ).
b.Nguyên tắc chuẩn hóa
First Normal Form
Second Normal Form
Third Normal Form
BCNF
Fourth Normal Form Tuy nhiên, chúng ta chỉ tìm hiểu về 1NF, 2NF, 3NF, và
BCNF.
• Tạo ra báo cáo thống kê về doanh thu, số lượng khách đến, thức ăn và đồ uống
được bán nhiều nhất theo từng ngày, tháng, năm hoặc trong một khoảng thời gian nhất
định.
Yêu cầu kỹ thuật:
• Phần mềm cần được thiết kế để dễ sử dụng và hiệu quả trong việc quản lý và
thanh toán.
• Giao diện người dùng cần được thiết kế thân thiện và trực quan.
• Dữ liệu cần được lưu trữ một cách an toàn và có khả năng sao lưu để tránh mất
mát thông tin.
• Phải đảm bảo tính bảo mật của thông tin nhân viên và thanh toán của khách
hàng.
Admin
ID 0965467821221
Pass X45%TY
Hóa đơn:
Mã hóa đơn (MAHD)
Tổng tiền (TongTien)
Thời gian (ThoiGian)
Chi tiết hóa đơn (ChiTietHoaDon)
Thời gian (ThoiGian)
Thành tiền (ThanhTien)
Sản phẩm:
Mã sản phẩm (MASP)
Tên (Tên)
Giá bán (DonGia)
Mô tả (MoTa)
Chi tiết hóa đơn:
Số lượng (SoLuong)
Thành tiền (ThanhTien)
Nhân viên :
Mã nhân viên (MaNV)
Tên(Ten)
Số điện thoại (SDT)
Ngày Sinh(NgaySinh)
Giới Tính (GioiTinh)
ChucVu
Phòng ban :
Mã PB(MaPB)
Địa chỉ (DiaDiem)
Loại SP:
Mô tả (MoTa)
Mã loại SP(Mã)
Tên
b. Các mối quan hệ:
Mối quan hệ một-nhiều:
Một hóa đơn có thể có nhiều chi tiết hóa đơn.
Một sản phẩm có thể xuất hiện trong nhiều chi tiết hóa đơn.
Mối quan hệ nhiều-nhiều:
Một nhân viên có thể bán nhiều hóa đơn.
Một khách hàng có thể mua nhiều hóa đơn.
c. Các thuộc tính bổ sung:
Có: Thuộc tính này có thể có giá trị "Có" hoặc "Không".
Mô tả: Thuộc tính này mô tả thêm thông tin về đối tượng.
Ngày sinh: Thuộc tính này lưu trữ ngày sinh của khách hàng hoặc nhân viên.
Giới tính: Thuộc tính này lưu trữ giới tính của khách hàng hoặc nhân viên.
3.Mô tả mối quan hệ giữa tập thực thể
Hóa đơn có thể có nhiều Chi tiết hóa đơn.
Mỗi Chi tiết hóa đơn thuộc về một Hóa đơn.
Mỗi Chi tiết hóa đơn liên quan đến một Sản phẩm.
Sản phẩm có thể xuất hiện trong nhiều Chi tiết hóa đơn.
Hóa đơn được tạo bởi một Nhân viên.
Nhân viên có thể tạo nhiều Hóa đơn.
Nhân viên thuộc về một Phòng ban.
Phòng ban có thể có nhiều Nhân viên.
Ngoài ra:
Thuộc: Mối quan hệ giữa Phòng ban và Nhân viên thể hiện sự quản lý.
Có: Mối quan hệ giữa Sản phẩm và Loại sản phẩm thể hiện sự phân loại.
Có: Mối quan hệ giữa Nhân viên và Chức vụ thể hiện vị trí công việc.
IV. Mô hình quan hệ
NhanVien(maNV,NgaySinh,ChucVu,HoTen,GioiTinh,SDT)
SanPham(maSP,Ten,Dongia,MoTa)
LoaiSP(Mã,MoTa,Ten)
KhachHang(MaKH, HoTenKH, DiaChi, SoDT )
HoaDon(maHD,ThoiGian, TongTien)
ChiTietHoaDon(Mã,maSP,Soluong, ThanhTien)
V.Chuẩn hóa dữ liệu
1. Tìm khóa:
Q đạt 3NF.
3. Tìm phủ tối thiểu: F' = {MAHD → MaNV,MAHD → TongTien,MAHD →
ThoiGian,MASP → Ten,MASP → LoalSP,MASP → MoTa,MASP →
DonGia,MaNV → Ten,MaNV → ChucVu,MaNV → NgaySinh,MaNV →
GioiTinh,MaNV → SDT,MAKH → Ten,MAKH → DiaChi,MAKH → SDT,MALSP
→ Ten}
4. Phân rã:
Dựa vào phủ tối thiểu F':