QUẢN LÝ BÁN HÀNGPHẦN I: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ SỞ DỮ LIỆU:I.Mô tả bài toán :Mỗi khách hàng có một mã khách hàng MAKH duy nhất, mỗi MAKH xác định được các thông tin về k
Trang 1TRƯỜNG ĐẠI HỌC DUY TÂN
ĐỒ ÁN NHÓM
Học phần : Cở sở dữ liệu
Mã học phần : IS 301
ĐỀ TÀI
Quản lí bán hàng
Họ và tên : Nguyễn Tiến Minh MSV: 4136
Đàm Quốc Vĩ MSV: 5439
Phạm Lê Minh Thi MSV: 7604
Lớp: IS 301 CA GVHD : Nguyễn Dũng
Trang 2MỤC LỤC
PHẦN I: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH
PHẦN II: BIỂU THỨC ĐẠI SỐ QUAN HỆ 4 PHẦN III: CÂU LỆNH CHỈNH SỬA CẤU TRÚC BẢNG 5
Trang 3QUẢN LÝ BÁN HÀNG PHẦN I: PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ SỞ DỮ LIỆU:
I Mô tả bài toán :
Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như : họ tên khách hàng (HOTEN), địa chỉ (ĐIACHI), số điện thoại
(ĐIENTHOAI) Các mặt hàng được phân loại theo từng nhóm hàng, mỗi nhóm hàng có một mã nhóm (MANHOM) duy nhất, mỗi mã nhóm hàng xác định tên nhóm hàng (TENNHOM), tất nhiên một nhóm hàng có thể có nhiều mặt hàng Mỗi mặt hàng được đánh một mã số (MAHANG) duy nhất, mỗi mã số này xác định các thông tin về mặt hàng đó như : tên hàng (TENHANG), đơn giá bán (ĐONGIA), đơn vị tính (ĐVT) Mỗi hóa đơn bán hàng có một số hóa đơn (SOHĐ) duy nhất, mỗi hóa đơn xác định được khách hàng và ngày lập hóa đơn (NGAYLAPHĐ), ngày giao hàng (NGAYGIAO) Với mỗi mặt hàng trong một hóa đơn cho biết số lượng bán (SLBAN) của mặt hàng đó
Trang 4II Vẽ mô hình thực thể :
2
III Vẽ mô hình quan hệ:
Trang 5IV Cho dữ liệu bảng:
Trang 6PHẦN II: BIỂU THỨC ĐẠI SỐ QUAN HỆ
1 Hiển thị tất cả các nhà cung cấp có địa chỉ tại Đà Nẵng gồm Mã nhà CC, tên nhà cung cấp và địa chỉ ( π_{MãNhàCC, TênNhàCungCấp, ĐịaChỉ}(σ_{ĐịaChỉ=‘Đà Nẵng’}(NhàCungCấp)) )
2 Hiển thị tất cả các sản phẩm do nhà cung cấp có tên là Cty Hoa Sen Gồm mã sản phẩn tên sản phẩm và số lượng
( π _{MãSảnPhẩm, TênSảnPhẩm, SốLượng}(σ_{TênNhàCungCấp=‘Cty Hoa Sen’}(SảnPhẩm ⨝ NhàCungCấp)) )
3.Hiển thị các sản phẩm do nhà cung cấp có số điện thoại là 0905222507:
( π _{TênNhàCungCấp, MãSảnPhẩm, TênSảnPhẩm, SốLượng}(σ_{ĐiệnThoại=‘0905222507’} (SảnPhẩm NhàCungCấp)) )⨝
4.Tính tổng số lượng tồn kho theo từng nhà cung cấp:
( G_{MãNhàCungCấp, TênNhàCungCấp; Tổng(SốLượng)}(SảnPhẩm NhàCungCấp) )⨝
5.Sản phẩm có số lượng tồn kho nhiều nhất:
( π _{MãNhàCungCấp, TênNhàCungCấp, SốLượng}(σ_{SốLượng= \max(SốLượng)}(SảnPhẩm ⨝ NhàCungCấp)) )
6.Tính tổng số tiền của hóa đơn có mã là HD01:
( G_{MãHóaĐơn; Tổng(SLBán \times ĐơnGiáBán)}(σ_{MãHóaĐơn=‘HD01’}(HóaĐơnBán ⨝ ChiTiếtHóaĐơn)) )
7.Thống kê tổng số tiền theo từng hóa đơn:
( G_{MãHóaĐơn, NgàyBán; Tổng(SLBán \times ĐơnGiáBán)}(HóaĐơnBán ChiTiếtHóaĐơn) )⨝
8.Hóa đơn mua nhiều tiền nhất trong ngày hiện tại:
( π_{MãHóaĐơn, NgàyBán, TổngTiền}(σ_{NgàyBán=‘NgàyHiệnTại’ \land TổngTiền= \
max(TổngTiền)}(G_{MãHóaĐơn, NgàyBán; Tổng(SLBán \times ĐơnGiáBán)}(HóaĐơnBán ⨝ ChiTiếtHóaĐơn))) )
9.Tổng số tiền mà khách hàng có mã là KH01 đã mua:
( G_{MãKháchHàng; Tổng(SLBán \times ĐơnGiáBán)}(σ_{MãKháchHàng=‘KH01’}(KháchHàng ⨝ HóaĐơnBán ChiTiếtHóaĐơn)) )⨝
10.Xóa những sản phẩm chưa bán lần nào:
( SảnPhẩm - π_{MãSảnPhẩm}(ChiTiếtHóaĐơn) )
11.Tăng giá của những sản phẩm do nhà cung cấp có mã là CC01 lên 100.000 cho mỗi sản phẩm:
( π_{MãSảnPhẩm, TênSảnPhẩm, ĐơnGiáBán+100000}(σ_{MãNhàCungCấp=‘CC01’}(SảnPhẩm)) )
12.Thống kê số tiền đã bán được trên từng sản phẩm:
( G_{MãSảnPhẩm, TênSảnPhẩm; Tổng(SLBán \times ĐơnGiáBán)}(SảnPhẩm ChiTiếtHóaĐơn) )⨝
13.Liệt kê các sản phẩm mà khách hàng có số điện thoại 0905222507 đã mua:
( π_{MãSảnPhẩm, TênSảnPhẩm, SLBán, ĐơnGiáBán, SLBán \times ĐơnGiáBán}
Trang 7(σ_{ĐiệnThoại=‘0905222507’}(KháchHàng HóaĐơnBán ChiTiếtHóaĐơn)) )⨝ ⨝
14.Thống kê các đơn hàng của khách hàng ở Quảng Nam:
( G_{MãHóaĐơn, NgàyBán; Tổng(SLBán \times ĐơnGiáBán)}(σ_{ĐịaChỉ=‘Quảng Nam’}(KháchHàng
⨝ HóaĐơnBán ChiTiếtHóaĐơn)) )⨝
15.Thống kê tổng tiền theo từng khách hàng:
( G_{MãKháchHàng, TênKháchHàng; Tổng(TổngTiền)}(HóaĐơn) )
16.Đếm số lần giao dịch của khách hàng:
( G_{MãKháchHàng, TênKháchHàng; Đếm(SốHóaĐơn)}(HóaĐơn) )
17.Thống kê số tiền bán được theo ngày:
( G_{NgàyBán; Tổng(TổngTiền)}(HóaĐơn) )
18.Ngày bán được nhiều sản phẩm nhất:
( π_{NgàyBán}(G_{NgàyBán; Tổng(SốLượng)}(ChiTiếtHóaĐơn)) )
19.Hiển thị hóa đơn đã bán trong vòng một tuần từ ngày hiện tại:
( π_{MãHóaĐơn, NgàyHóaĐơn, TổngTiền}(σ_{NgàyHóaĐơn \geq (NgàyHiệnTại - 7)}(HóaĐơn)) )
20.Thống kê tổng số tiền mua theo giới tính:
( G_{GiớiTính; Tổng(TổngTiền)}(HóaĐơn KháchHàng) )⨝
21.Cập nhật đơn giá tăng 10% cho mặt hàng MH01:
( π_{MãHàng, TênHàng, ĐơnGiá \times 1.1}(σ_{MãHàng=‘MH01’}(MặtHàng)) )
Trang 8PHẦN III: CÂU LỆNH CHỈNH SỬA CẤU TRÚC BẢNG
4.1 Cài đặt mô hình quan hệ ở câu 2 vào hệ quản trị CSDL SQL Server:
CopyCREATE TABLE NhomHang (
MaNhom NVARCHAR(10) PRIMARY KEY,
TenNhom NVARCHAR(50) NOT NULL,
MoTa NVARCHAR(200)
);
CREATE TABLE MatHang (
MaMatHang NVARCHAR(10) PRIMARY KEY,
TenMatHang NVARCHAR(50) NOT NULL,
MaNhom NVARCHAR(10) NOT NULL,
SoLuongTon INT,
DonGia DECIMAL(18,2),
FOREIGN KEY (MaNhom) REFERENCES NhomHang(MaNhom)
);
CREATE TABLE DonHang (
Trang 9MaDonHang NVARCHAR(10) PRIMARY KEY,
TenDonHang NVARCHAR(50) NOT NULL,
MaKhachHang NVARCHAR(10) NOT NULL,
TongTien DECIMAL(18,2),
FOREIGN KEY (MaKhachHang) REFERENCES KhachHang(MaKhachHang) );
CREATE TABLE KhachHang (
MaKhachHang NVARCHAR(10) PRIMARY KEY,
TenKhachHang NVARCHAR(50) NOT NULL,
SoTienMuaHang DECIMAL(18,2),
DiaChi NVARCHAR(200)
);
4.2 Nhập dữ liệu cho các bảng, mỗi bảng ít nhất 10 dòng:
Copy Nhập dữ liệu cho bảng NhomHang
INSERT INTO NhomHang (MaNhom, TenNhom, MoTa)
VALUES
('01', 'Nhóm 01', 'Mô tả nhóm hàng 01'),
('02', 'Nhóm 02', 'Mô tả nhóm hàng 02'),
('03', 'Nhóm 03', 'Mô tả nhóm hàng 03');
Nhập dữ liệu cho bảng MatHang
INSERT INTO MatHang (MaMatHang, TenMatHang, MaNhom, SoLuongTon, DonGia) VALUES
('MH001', 'Mặt hàng 01', '01', 20, 50.00),
('MH002', 'Mặt hàng 02', '01', 15, 100.00),
Trang 10('MH003', 'Mặt hàng 03', '02', 10, 200.00),
('MH004', 'Mặt hàng 04', '02', 5, 150.00),
('MH005', 'Mặt hàng 05', '03', 30, 80.00);
Nhập dữ liệu cho bảng DonHang
INSERT INTO DonHang (MaDonHang, TenDonHang, MaKhachHang, TongTien) VALUES
('DH001', 'Đơn hàng 01', 'KH001', 300.00),
('DH002', 'Đơn hàng 02', 'KH001', 500.00),
('DH003', 'Đơn hàng 03', 'KH002', 150.00),
('DH004', 'Đơn hàng 04', 'KH003', 120.00),
('DH005', 'Đơn hàng 05', 'KH004', 250.00);
Nhập dữ liệu cho bảng KhachHang
INSERT INTO KhachHang (MaKhachHang, TenKhachHang, SoTienMuaHang, DiaChi) VALUES
('KH001', 'Nguyễn Dũng', 800.00, 'Đà Nẵng'),
('KH002', 'Trần Thanh', 150.00, 'Quảng Nam'),
('KH003', 'Lê Hương', 120.00, 'Quảng Nam'),
('KH004', 'Nguyễn Tâm', 250.00, 'Đà Nẵng'),
('KH005', 'Trần Quốc', 350.00, 'Quảng Nam');
4.3 Hiển thị các nhóm hàng có những mặt hàng chưa bán lần nào:
CopySELECT nh.MaNhom, nh.TenNhom
FROM NhomHang nh
LEFT JOIN MatHang mh ON nh.MaNhom = mh.MaNhom
WHERE mh.MaMatHang IS NULL;
4.4 Hiển thị hai đơn hàng có số tiền nhiều nhất:
Trang 11CopySELECT TOP 2 MaDonHang, TenDonHang, TongTien
FROM DonHang
ORDER BY TongTien DESC;
4.5 Hiển thị tất cả các khách hàng có số tiền mua hàng bằng với khách hàng có tên là Nguyễn Dũng: CopySELECT kh.MaKhachHang, kh.TenKhachHang, kh.SoTienMuaHang
FROM KhachHang kh
WHERE kh.SoTienMuaHang = (SELECT SoTienMuaHang FROM KhachHang WHERE
TenKhachHang = 'Nguyễn Dũng');
4.6 Hiển thị thông tin gồm mã hàng, tên hàng và ghi chú Trong đó cột ghi chú dựa vào số tiền được của mặt hàng Nếu mặt hàng có tiền bán được lớn hơn hoặc bằng 100 thì ghi là thấp, từ 101 đến 1000 là trung bình còn lại là cao:
CopySELECT mh.MaMatHang, mh.TenMatHang,
CASE
WHEN mh.DonGia >= 100 THEN 'Thấp'
WHEN mh.DonGia BETWEEN 101 AND 1000 THEN 'Trung bình'
ELSE 'Cao'
END AS GhiChu
FROM MatHang mh;
4.7 Hiển thị những khách hàng ở Đà Nẵng và Quảng Nam có tổng số tiền mua hàng lớn hơn 1.000.000 đồng:
CopySELECT kh.MaKhachHang, kh.TenKhachHang, kh.SoTienMuaHang, kh.DiaChi
FROM KhachHang kh
WHERE kh.DiaChi IN ('Đà Nẵng', 'Quảng Nam') AND kh.SoTienMuaHang > 1000000;
4.8 Xóa những khách hàng chưa mua hàng lần nào:
CopyDELETE FROM KhachHang
WHERE SoTienMuaHang IS NULL OR SoTienMuaHang = 0;
4.9 Cập nhật đơn giá cho những mặt hàng của nhóm 01 lên 10%:
CopyUPDATE MatHang
SET DonGia = DonGia * 1.1
WHERE MaNhom = '01';
4.10 Biểu diễn một cách chặt chẽ các ràng buộc toàn vẹn đã được mô tả trong lược đồ cơ sở dữ liệu trên: Ràng buộc toàn vẹn về khóa chính:
NhomHang (MaNhom): PRIMARY KEY
Trang 12MatHang (MaMatHang): PRIMARY KEY
DonHang (MaDonHang): PRIMARY KEY
KhachHang (MaKhachHang): PRIMARY KEY
Ràng buộc toàn vẹn về khóa ngoại:
MatHang (MaNhom): FOREIGN KEY REFERENCES NhomHang(MaNhom)
DonHang (MaKhachHang): FOREIGN KEY REFERENCES KhachHang(MaKhachHang)