Bài tập môn Cơ sở dữ liệu và giải thuật | Trường đại học kinh doanh và công nghệ Hà Nội
HoaDonDichVu( MaHDDV, NgaylapHD, HoDemKH, TenKH,DiaChiKH, DienThoaiKH, MaSoThueKH, TenPhong, NgayDen, NgayDi, SoDem, ChucVuThuNgan, TinhTrangThanhToan, TongTien, ThueVAT, HodemThuNgan, TenThuNgan, ChuKyThuNgan) ChiTietHoaDonDichVu(MaChiTietHDDV, NgaySuDung, TenDichVu, DonViTinh, SoLuong, DonGia, ThanhTien, MaHDDV). Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!
Môn: Cơ sở dữ liệu và giải thuật
Trường: Đại học Kinh Doanh và Công Nghệ Hà Nội
Thông tin:
Tác giả:
Preview text:
lOMoAR cPSD| 48541417
BƯỚC 1: CHỌN THÔNG TIN THIẾT KẾ CSDL.
HoaDonDichVu (MaHDDV, NgaylapHD, TenKH, DiaChiKH, DienThoaiKH,
MaSoThueKH, TenPhong, NgayDen, NgayDi, SoDem, ChucVuThuNgan,
TinhTrangThanhToan, NgaySuDung, DichVu, ThanhTien, TongTien, ThueVAT, HotenThuNgan, ChuKyThuNgan)
BƯỚC 2. CHUẨN HOÁ CƠ SỞ DỮ LIỆU.
2.1 . Chuẩn hoá 1NF?
2.1.1. Kiểm tra các cột trong bảng "HOADON" có ĐƠN?
Bảng HoaDonDichVu(MaHDDV, NgaylapHD, TenKH, DiaChiKH,
DienThoaiKH, MaSoThueKH, TenPhong, NgayDen, NgayDi, SoDem, lOMoAR cPSD| 48541417
ChucVuThuNgan, TinhTrangThanhToan, NgaySuDung, DichVu, ThanhTien,
TongTien, ThueVAT, HotenThuNgan, ChuKyThuNgan) Có các cột vi phạm tính
ĐƠN của 1NF:
+) TenKH => Tách thành 2 cột: HoDemKH, TenKH.
+) HotenThuNgan => Tách thành 2 cột : HoDemThuNgan, TenThuNgan.
+) DichVu => Tách thành 4 cột: TenDichVu, SoLuong, DonViTinh, DonGia.
=>> Bảng mới:
HoaDonDichVu (MaHDDV, NgaylapHD, HodemKH, TenKH,
DiaChiKH, DienThoaiKH, MaSoThueKH, TenPhong, NgayDen,
NgayDi, SoDem, ChucVuThuNgan, TinhTrangThanhToan,
NgaySuDung, TenDichVu, DonViTinh, SoLuong, DonGia,
ThanhTien, TongTien, ThueVAT, HodemThuNgan, TenThuNgan, ChuKyThuNgan)
2.1.2 . Kiểm tra các cột trong bảng "HOADON" có ĐƠN TRỊ?
+) Bảng HoaDonDichVu có các côt vi phạm tính ĐƠN TR䤃䤃 của ̣ 1NF:
NgaySuDung, TenDichVu, DonViTinh, SoLuong, DonGia, ThanhTien =>> Tách
bảng HoaDon thành 2 bảng:
HoaDonDichVu( MaHDDV, NgaylapHD, HoDemKH, TenKH, DiaChiKH,
DienThoaiKH, MaSoThueKH, TenPhong, NgayDen, NgayDi, SoDem,
ChucVuThuNgan, TinhTrangThanhToan, TongTien, ThueVAT, HodemThuNgan, TenThuNgan, ChuKyThuNgan)
ChiTietHoaDonDichVu(MaChiTietHDDV, NgaySuDung, TenDichVu,
DonViTinh, SoLuong, DonGia, ThanhTien, MaHDDV)
2.2 . CHUẨN HÓA 2NF.
- Do các bảng đã có khóa là một thuộc tính, đồng nghĩa với việc đảm bảo rằng
không có thuộc tính nào phụ thuộc vào một tập hợp con của khóa chính. Điều này thỏa mãn yêu cầu 2NF. lOMoAR cPSD| 48541417
2.3 . CHUẨN HÓA 3NF.
* ) HoaDonDichVu( MaHDDV, NgaylapHD, TenKH, DiaChiKH,
DienThoaiKH, MaSoThueKH, TenPhong, NgayDen, NgayDi, SoDem,
ChucVuThuNgan, TinhTrangThanhToan, TongTien, ThueVAT, HodemThuNgan, TenThuNgan, ChuKyThuNgan) F1= { MaHDDV => NgaylapHD. MaHDDV => HodemKH, TenKH.
HodemKH, TenKH => DiaChiKH, DienThoaiKH, MaSoThueKH.
MaHDDV => TenPhong, NgayDen, NgayDi, SoDem, TinhTrangThanhToan. TongTien => ThueVAT.
MaHDDV => HodemThuNgan, TenThuNgan.
HodemThuNgan, TenThuNgan => ChucVuThuNgan, ChuKyThuNgan.
=> Các thuộc tính vi phạm 3NF (phụ thuộc bắc cầu khoá 3NF ):
DiaChiKH, DienThoaiKH, MaSoThueKH ChucVuThuNgan, ChuKyThuNgan
ThueVAT = TongTien*10% => Thuộc tính “ThueVAT” không cần lưu.
TÁCH BẢNG “HoaDonDichVu” thành:
DmKhachHang( MaKhachHang, HoDemKhachHang, TenKhachHang,
DiaChiKH, DienThoaiKH, MaSoThueKH)
DmThuNgan( MaThuNgan, HoDemThuNgan, TenThuNgan, ChucVuThuNgan, ChuKyThuNgan)
HoaDonDichVu( MaHDDV, TenPhong, NgayDen, NgayDi, SoDem,
TinhTrangThanhToan, MaKhachHang, MaThuNgan) lOMoAR cPSD| 48541417
* ) ChiTietHoaDonDichVu(MaChiTietHDDV, NgaySuDung, TenDichVu,
DonViTinh, SoLuong, DonGia, ThanhTien, MaHDDV) F2 = {
MaChiTietHDDV => NgaySuDung.
MaChiTietHDDV => TenDichVu. TenDichVu => DonViTinh.
MaChiTietHDDV => TenDichVu. TenDichVu => DonGia
SoLuong, DonGia => ThanhTien.
MaChiTietHDDV => MaHDDV
=> Các thuộc tính vi phạm 3NF (phụ thuộc bắc cầu khoá 3NF ): DonViTinh, DonGia
ThanhTien = SoLuong * DonGia => Không cần lưu thuộc tính “ThanhTien”
TÁCH BẢNG ChiTietHoaDonDichVu thành:
DmDonViTinhDV( MaDonViTinhDV, TenDichVu, DonViTinh)
DmDonGiaDV( MaDonGiaDV, TenDichVu, DonGia)
ChiTietHoaDonDichVu( MaChiTietHDDV, NgaySuDung, SoLuong,
DonGia, MaDonViTinhDV, MaDonGiaDV, MaHDDV)
HoaDonDichVu.TongTien = SUM(ChiTietHoaDon.ThanhTien)
= SUM(ChiTietHoaDon.SoLuong * ChiTietHoaDon.DonGia)
Không cần lưu thuộc tính TongTien ở bảng “HoaDonDichVu”. lOMoAR cPSD| 48541417
VẬY, CSDL chuẩn 3NF gồm:
DmKhachHang( MaKhachHang, HoDemKhachHang, TenKhachHang,
DiaChiKH, DienThoaiKH, MaSoThueKH)
DmThuNgan( MaThuNgan, HoDemThuNgan, TenThuNgan, ChucVuThuNgan, ChuKyThuNgan)
HoaDonDichVu( MaHDDV, TenPhong, NgayDen, NgayDi, SoDem,
TinhTrangThanhToan, MaKhachHang, MaThuNgan)
DmDonViTinhDV( MaDonViTinhDV, TenDichVu, DonViTinh)
DmDonGiaDV( MaDonGiaDV, TenDichVu, DonGia)
ChiTietHoaDonDichVu( MaChiTietHDDV, NgaySuDung, SoLuong,
DonGia, MaDonViTinhDV, MaDonGiaDV, MaHDDV) 2.4 . CHUẨN BCNF. +) Bảng DmKhachHang:
Mọi thuộc tính đều thuộc về khóa chính MaKhachHang.
Không có phụ thuộc hàm không cần thiết.
=> Bảng DmKhachHang đã đạt chuẩn BCNF. +) Bảng DmThuNgan:
Mọi thuộc tính đều thuộc về khóa chính MaThuNgan.
Không có phụ thuộc hàm không cần thiết.
=> Bảng DmThuNgan đã đạt chuẩn BCNF.
+) Bảng HoaDonDichVu:
Mọi thuộc tính đều thuộc về khóa chính MaHDDV.
Không có phụ thuộc hàm không cần thiết.
=> Bảng HoaDonDichVu đã đạt chuẩn BCNF. lOMoAR cPSD| 48541417
+) Bảng DmDonViTinhDV:
Mọi thuộc tính đều thuộc về khóa chính MaDonViTinhDV.
Không có phụ thuộc hàm không cần thiết.
=> Bảng DmDonViTinhDV đã đạt chuẩn BCNF. +) Bảng DmDonGiaDV:
Mọi thuộc tính đều thuộc về khóa chính MaDonGiaDV.
Không có phụ thuộc hàm không cần thiết.
=> Bảng DmDonGiaDV đã đạt chuẩn BCNF.
+) Bảng ChiTietHoaDonDichVu:
Mọi thuộc tính đều thuộc về khóa chính MaChiTietHDDV.
Không có phụ thuộc hàm không cần thiết.
=> Bảng ChiTietHoaDonDichVu đã đạt chuẩn BCNF. lOMoAR cPSD| 48541417