Họ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
1.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
-Đị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
Nhâ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
Ch
ucvu
TenKH
PhoneNumb
er
MaKH
Gi
oiTinh
Bán cho
MaSP
TenSP
Gia
SanphamNS
X
TenNSX
SoluongSP
TenSP
NumberNSX
TenKHHD
TenSPHD
MaHD
la
m
Ghi
Mua
has
N
amSinh
SoLuo
ngHD
4.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
Mã sản phẩm Tên sản phẩm Giá cả Tên nhà sản xuất
Quan hệ Nhà sản xuất
Số Điện thoại Tên mặt hàng Địa chỉ Tên nhà sản xuất
Quan hệ Nhân viên
Chức vụ Địa chỉ Tên Mã nhân viên
Quan hệ Hoá đơn
Mã hoá đơn Tên khách mua Tên sản phẩm
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
Chức vụ Địa chỉ Tên Mã nhân viên
Nhà sản xuất
Số điện thoai Tên mặt hàng Địa chỉ Tên nhà sản xuất
Sản phẩm
Mã sản phẩm Tên sản phẩm Giá cả Tên nhà sản xuất
Nhà sản xuất
Số điện thoại Tên mặt hàng Địa chỉ Tên nhà sản xuất
Ánh xạ quan hệ nhiều chiều
Nhân viên
Chức vụ Địa chỉ Tên Mã nhân viên
Khách hàng
Họ tên Số điện thoại Số dư tài khoản Địa chỉ
Nhà sản xuất
Số điện thoại Tên mặt hàng Địa chỉ Tên nhà sản xuất
Khách hàng
Họ tên Số điện thoại Số dư tài khoản Địa chỉ
Ánh xạ quan hệ 1-1
Khách hàng
Họ tên Số điện thoại Số dư tìa khoản Địa chỉ
Hoá đơn
Tổng giá thành Tên khách mua Tên sản phẩm
Bướ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
Tổng giá thành Tên khách mua Tên sản phẩm
Bước 5: Ánh xạ các quan hệ 1 ngôi
Ánh xạ đệ quy loại 1 nhiều
Nhân viên
Chức vụ Địa chỉ Tên Mã nhân viên
Sản phẩm
Mã sản phẩm Tên sản phẩm Giá cả Tên nhà sản xuất
Nhà sản xuất
Số điện thoại Tên mặt hàng Địa chỉ Tên nhà sản xuất
Ánh xạ quan hệ nhiều nhiều
Sản phẩm
Mã sản phẩm Tên sản phẩm Giá cả Tên nhà sản xuất
Hoá đơn-tên sản phẩm Nhà sản xuất-tên sản phẩm
Bướ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ệ
(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
Nhâ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)
7. 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
4.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
FROM Hoá đơn
WHERE SoLuong.TenSPHD>2 AND SoLuong.NSXHD>2