Thông tin về khách hàng bao gồm họ tên, địa chỉ, số điện thoại và số dư tài khoản Thông tin về nhà sản xuất bao gồm các thuộc tính như tên nhà cung cấp, địa chỉ, số điện thoại, tình trạn
Trang 1Học Công Nghệ Bưu Chính Viễn Thông
Báo cáo thực hành
Môn: Cơ sở dữ liệu
Họ và tên:Nguỵ Đình Huy
Lớp D10CN1
Mã sinh viên:1021040029
Trang 21.Mô tả bài toán:
Vấn đề đặt ra là quản lý bán hàng trong siêu thị điện máy Phạm vi quản lý bao gồm nhân viên, khách hàng, nhà sản xuất, mặt hàng, hoá đơn bán hàng
Thông tin về nhân viên bao gồm họ tên, địa chỉ, mức lương, mã nhân viên, vị trí công tác Quản lý họ có 1 người trưởng bộ phận bán hàng(manager), và họ cũng là nhân viên Thông tin về khách hàng bao gồm họ tên, địa chỉ, số điện thoại và số dư tài khoản Thông tin về nhà sản xuất bao gồm các thuộc tính như tên nhà cung cấp, địa chỉ, số điện thoại, tình trạng sản xuất, các mặt hàng cung cấp(có thể ko có mặt hàng nào) Thông tin về mặt hàng bao gồm mã mặt hàng, tên mặt hàng, giá cả, tên nhà cung cấp, tình trạng hàng trong kho(còn hay đã hết) Một mặ hàng có thể có nhiều nhà cung cấp
và một nhà cung cấp có thể có nhiều mặt hàng
Thông tin về hoá đơn bán hàng tên khách mua, tên các sản phẩm mua, tổng giá thành
2.Xác định các đối tượng thực thể
Bài toán quản lý bán hàng trong siêu thị điện máy bao gồm các thực thể
*Khách hàng:
Các thuộc tính:
-Tên
-Địa chỉ
-Số điện thoại
-Giới tính
-Năm sinh
*Nhân viên:
Các thuộc tính:
-Tên
Trang 3-Địa chỉ
-Mã nhân viên
-Chức vụ
*Nhà sản xuất
Các thuộc tính:
-Tên nhà sản xuất
-Số lượng sản phẩm
-Số điện thoại
-Tên mặt hàng
*Sản phẩm
Các thuộc tính:
-Mã sản phẩm
-Tên sản phẩm
-Giá cả
-Tên nhà sản xuất
*Hoá đơn
Các thuộc tính:
-Tên khách mua
-Tên sản phẩm mua
-Mã hoá đơn
-Số lượng sản phẩm mua
Trang 4Nhân viên
3.Mô hình quan hệ E-R
Khách hàng
Nhà sản xuất
Sản phẩm Hoá đơn
TenNV
DC
MaNV
Chucvu
TenKH PhoneNumb
er
MaKH
GioiTinh
Bán cho
MaSP
TenSP
Gia
SanphamNS
X
TenNSX SoluongSP
TenSP NumberNSX
TenKHHD
TenSPHD MaHD
la
m
Ghi
Mua
has
NamSinh
SoLuo ngHD
Trang 54.Chuyển đổi mô hình thực thể liên kết sang mô hình quan hệ
Bước 1: Ánh xạ các thực thể thông thường
Quan hệ Khách hàng:
Họ tên Số điện thoại Số dư tài khoản Địa chỉ
Quan hệ Sản phẩm
Quan hệ Nhà sản xuất
Quan hệ Nhân viên
Quan hệ Hoá đơn
Bước 2: Ánh xạ thực thể yếu
Bước 3:Ánh xạ các quan hệ 2 ngôi
-Ánh xạ quan hệ 1 chiều
Nhân viên
Nhà sản xuất
Trang 7Sản phẩm
Nhà sản xuất
Ánh xạ quan hệ nhiều chiều
Nhân viên
Khách hàng
Nhà sản xuất
Khách hàng
Ánh xạ quan hệ 1-1
Khách hàng
Hoá đơn
Trang 8Bước 4: Ánh xạ các thực thể liên kết
Trường hợp ko được gắn định danh
Nhà sản xuất
Số điện thoai Tên mặt hàng Tên địa chỉ Tên nhà sản xuất
Hoá đơn
Bước 5: Ánh xạ các quan hệ 1 ngôi
Ánh xạ đệ quy loại 1 nhiều
Nhân viên
Sản phẩm
Nhà sản xuất
Ánh xạ quan hệ nhiều nhiều
Sản phẩm
Trang 10Bước 6: Ánh xạ các quan hệ nhiều ngôi
Hoá đơn
Nhà sản xuất
Sản phẩm
Thực hiện trên SQL
Xác định các phụ thuộc hàm F và đưa về dạng chuẩn 3NF
1 Xét quan hệ
Khách hàng(MaKH(A),TenKH(B),DC(C),NumberKH(D),Namsinh(E),
Gioitinh(F))
Với tập các phụ thuộc hàm F1={ABCDEF} và tập khóa K1={A}
Không có thuộc tính không khóa nào (B,C,D,E,F) phụ thuộc bắc cầu vào
khóa A
Quan hệ Khachhang ở dạng 3NF
2 Xét quan hệ
Trang 11(MaSP(A),TenSP(B),Gia(C),TenSPNSX(D))
Với tập phụ thuộc hàm F2={AB,BC} và tập khóa K2={A,B} Thuộc tính không khóa C phụ thuộc bắc cầu vào thuộc tính khóa A
Do đó, quan hệ Sản phẩm không ở dạng 3NF
Đưa về dạng 3NF
Quan hệ Phong được tách thành 2 quan hệ con
Sản phẩm_a(AB) khóa A , phụ thuộc hàm Fa={AB}
Sản phẩm_b(CD) khóa B , phụ thuộc hàm Fb={BC}
3 Xét quan hệ
Nhà sản xuất(NumberNSX(A),TenNSX(B), TenSP(C), SoluongSP(D) Với tập phụ thuộc hàm F3={ABCD} và tập khóa K3={A,B}
Không có phụ thuộc hàm bắc cầu trong quan hệ này
Do đó, quan hệ Nhà sản xuất ở dạng 3NF
4 Xét quan hệ
Nhân viên(MaNV(A), TenNV(B), DC(C), Chucvu(D))
Với tập phụ thuộc hàm F4={AB,BCD} và tập khóa K4={A,B} Thuộc tính không khóa C,D phụ thuộc bắc cầu vào khóa
Do đó, quan hệ Thue không ở dạng chuẩn 3(3NF)
Đưa về dạng 3NF
Quan hệ Nhân viên được tách thành 2 quan hệ con
Trang 12Nhân viên_e(AB) khóa A, phụ thuộc hàm Fe={AB}
Nhân viên_f(BCD) khóa B, phụ thuộc hàm Ff={BCD}
5 Xét quan hệ
HoaDon(MaHD(A), TenSPHD(B), SoluongSPHD(C), TenKHHD(D))
Với tập phụ thuộc hàm F5={AB,BC, C->D} và tập khóa K5={A,B,C,D}
Không có phụ thuộc hàm bắc cầu trong quan hệ này
Do đó, quan hệ Hoá đơn ở dạng chuẩn 3(3NF)
10 câu truy vấn đại số quan hệ
1.Tìm tên tất cả khách hàng có số dư tài khoản >1000000
Kết quả=π(Tên)(Ϭ(sodu)>1000000)(khách Hàng)
2.Tìm tến sản phẩm có giá >1000000
Kết quả=π(Tên sản phẩm)(Ϭ(Giaca)>1000000)(Sản phẩm)
3.Tìm tên nhân viên có mã lớn hơn 10
Kết quả=π(Tên)(Ϭ(manhanvien)>10)(Nhân viên)
4.Tìm mã hoá đơn có hơn 1 sản phẩm
Kết quả=π(MaHD)(Ϭ(Soluong)>1)(Hoá Đơn)
5 Tìm tên khách hàng mua trên 2 sản phẩm ghi trong hoá đơn
Kết quả=π(Tên.Khách hàng#,Soluong.Hoá đơn)(Ϭ(Tên.Khách hàng#=Soluong.Hoá đơn) AND(Soluong.Hoá đơn>2) 6.Tìm mã sản phẩm có giá thành là 1000000
Kết quả=π(id)(Ϭ(id.Sản phẩm)=1000000)(Sản phẩm)
Trang 137 Lập danh sách các sản phẩm có giá trên 1000000
Sản phẩm: Giá cả=”1000000”[MaSP, TenNSX];
8.Tìm tên nhà sản xuất có số lượng mặt hàng lớn hơn 10
Kết quả=π(Tên.Nhà sản xuất)(Ϭ((tên.Nhà sản xuất)>10)(Nhà sản xuất)
9.Tìm mã hóa đơn và mã khách hàng của khách hàng mua hàng của nhân viên có
mã xác đinh
Biểu thức truy vấn:
Kết quả=π(HoaDon.MaHD#,Khachhang.MaKH#) (σ((Khachhang.MaKH#=HoaDon.MaKH#) AND
(Khachhang.MaKH#=SuDung.MaKH#) AND (SuDung.MaDV#=DichVu.MaDV#) AND
(DichVu.TenDV=Thuê taxi))
(HoaDon×Khachhang×SuDung×DichVu))
10 câu truy vấn SQL áp dụng cho các thực thể trên
1: Tìm tên của tất cả các khách hàng là nữ sinh từ năm 1970-1990
SELECT TenKH
FROMKhachhang
WHEREGioitinh = 0 AND
YEAR(Namsinh) BETWEEN 1970 AND 1990
2: Tìm tên của tất cả các khách hàng là nam sinh trước năm 1970
SELECT TenKH
FROM Khachhang
WHERE Gioitinh = 1 AND YEAR(Ngaysinh) < 1970
3.: Tìm tên của tất cả nhân viên có mã lớn hơn 10
SELECT MaNV
FROM Nhân viên
WHERE MaNV>10
Trang 144.lập danh sách khách hàng mua trên 2 sản phẩm
SELECT TenKH, MaKH, MaHD,
FROM Khách hàng, Hoá đơn
WHERE SoLuong>2
5.Lập danh sách các mặt hàng có giá trên 1000000
SELECT *
FROM Sản phẩm
WHERE Gia>1000000
6.Lập danh sách nhà sản xuất có số mặt hàng >10
SELECT *
FROM Sản phẩm, Nhà sản xuất
WHERE SoLuong.Nhà sản xuất>10
7.Lập danh sách các khách hàng là nam mua trên 2 món hàng và sinh năm 1992 SELECT GioiTinh.Khách Hàng, SoLuong.Hoá Đơn, NamSinh.Khách Hàng
FROM Khách hàng, Hoá đơn
WHERE GioiTinh.Khách hàng=1 AND SoLuong.Hoá Đơn>2 AND NamSinh.Khách hàng=”1991”
8.Tìm khách hàng thông qua mã hoá đơn và mã nhân viên
SELECT *
FROM Khách hàng, Hoá Đơn, Nhân viên
WHERE MaNV=MaKH AND MaHD=MaKH AND MaNV=MaHD
9.Tìm hoá đơn có trên 2 mặt hàng và 2 nhà sản xuất
SELECT TenSPHD NSXHD
Trang 15FROM Hoá đơn
WHERE SoLuong.TenSPHD>2 AND SoLuong.NSXHD>2