Hệ thống nàykhông chỉ giúp cửa hàng theo dõi tình trạng sản phẩm, khách hàng và đơnhàng mà còn hỗ trợ bảo hành, quản lý nhân viên, và cung cấp các báo cáocần thiết để đánh giá tình hình
GIỚI THIỆU ĐỀ TÀI QUẢN LÝ LAPTOP
Mô tả đề tài
Ngày nay, laptop là một thiết bị công nghệ không thể thiếu trong công việc, học tập và giải trí Với sự phát triển mạnh mẽ của thương mại điện tử, việc mua sắm laptop trực tuyến trở nên phổ biến và tiện lợi hơn bao giờ hết
Chính vì vậy, nhóm chúng tôi quyết định thực hiện đề tài "Thiết kế và xây dựng website bán laptop", nhằm cung cấp một nền tảng giúp người dùng dễ dàng tìm kiếm, lựa chọn và mua sản phẩm một cách nhanh chóng.Phân tích đề tài Đề tài "Quản lý laptop" trong SQL Server được xây dựng với mục tiêu tạo ra một hệ thống quản lý toàn diện cho việc bán hàng laptop Hệ thống này không chỉ giúp cửa hàng theo dõi tình trạng sản phẩm, khách hàng và đơn hàng mà còn hỗ trợ bảo hành, quản lý nhân viên, và cung cấp các báo cáo cần thiết để đánh giá tình hình kinh doanh Mục tiêu cụ thể bao gồm:
Quản lý thông tin sản phẩm laptop và các thuộc tính liên quan như giá cả, loại sản phẩm, số lượng tồn kho.
Quản lý thông tin khách hàng và các đơn đặt hàng từ khách hàng.
Quản lý quá trình bán hàng, bảo hành, và theo dõi nhân viên bán hàng.
Thực hiện các truy vấn để lấy thông tin cần thiết phục vụ cho việc bán hàng và bảo hành.
1.2 Các đối tượng tham gia
Hệ thống quản lý laptop bao gồm các đối tượng chính sau:
Khách hàng (KHACHHANG): Lưu trữ thông tin khách hàng như mã khách hàng, tên khách hàng, địa chỉ, số điện thoại và email.
Đơn hàng (DONHANG): Ghi nhận thông tin về các đơn đặt hàng bao gồm mã đơn hàng, ngày đặt hàng, ngày giao hàng, mã khách hàng và mã nhân viên phụ trách.
Chi tiết đơn hàng (CTDONHANG): Lưu trữ thông tin chi tiết của mỗi đơn hàng, bao gồm mã đơn hàng, mã laptop, số lượng và giá bán.
Laptop (LAPTOP): Chứa thông tin về các sản phẩm laptop bao gồm mã laptop, tên laptop, giá bán, cấu hình, số lượng tồn kho, mã hãng sản xuất và mã loại laptop.
Loại laptop (LOAILAPTOP): Xác định loại laptop dựa trên mã loại, ví dụ như Gaming, Ultrabook,
Hãng sản xuất (HANGSANXUAT): Lưu trữ thông tin về các hãng sản xuất, bao gồm mã hãng và tên hãng.
Bảo hành (BAOHANH): Ghi nhận thông tin bảo hành cho các laptop, bao gồm mã bảo hành, thời hạn bảo hành, mã laptop và mã khách hàng.
Nhân viên (NHANVIEN): Lưu trữ thông tin nhân viên bao gồm mã nhân viên, tên nhân viên, chức vụ, số điện thoại, địa chỉ và email.
Các đối tượng tham gia
2.1 Mối quang hệ giữa các bản như sau:
Mô tả: Lưu trữ thông tin khách hàng.
Cấu trúc: o MaKH (PK): Mã khách hàng. o TenKH: Tên khách hàng. o DiaChi: Địa chỉ khách hàng.
THIẾT KẾ CƠ SỞ DỮ LIỆU
Mối quang hệ giữa các bản như sau
Mô tả: Lưu trữ thông tin khách hàng.
Cấu trúc: o MaKH (PK): Mã khách hàng. o TenKH: Tên khách hàng. o DiaChi: Địa chỉ khách hàng. o SoDienThoai: Số điện thoại của khách hàng. o Email: Email liên lạc của khách hàng.
Mô tả: Ghi nhận thông tin về các đơn hàng.
Cấu trúc: o MaDonHang (PK): Mã đơn hàng. o NgayDatHang: Ngày khách hàng đặt hàng. o NgayGiaoHang: Ngày dự kiến giao hàng. o MaKH (FK): Mã khách hàng (liên kết với bảng KHACHHANG). o MaNhanVien (FK): Mã nhân viên phụ trách đơn hàng (liên kết với bảng NHANVIEN).
3 Bảng CTDONHANG (Chi tiết đơn hàng)
Mô tả: Ghi nhận chi tiết từng sản phẩm trong mỗi đơn hàng.
Cấu trúc: o MaDonHang (PK, FK): Mã đơn hàng (liên kết với bảng DONHANG). o MaLaptop (PK, FK): Mã laptop (liên kết với bảng LAPTOP). o SoLuong: Số lượng laptop đặt mua. o GiaBan: Giá bán laptop.
Mô tả: Lưu trữ thông tin các laptop trong hệ thống.
Cấu trúc: o MaLaptop (PK): Mã laptop. o TenLaptop: Tên laptop. o GiaBan: Giá bán laptop. o CauHinh: Cấu hình chi tiết của laptop. o SoLuongTon: Số lượng tồn kho của laptop. o MaHang (FK): Mã hãng sản xuất (liên kết với bảng HANGSANXUAT). o MaLoai (FK): Mã loại laptop (liên kết với bảng LOAILAPTOP).
Mô tả: Lưu trữ thông tin về các loại laptop.
Cấu trúc: o MaLoai (PK): Mã loại laptop. o TenLoai: Tên loại laptop (ví dụ: Gaming, Ultrabook).
6 Bảng HANGSANXUAT (Hãng sản xuất)
Mô tả: Lưu trữ thông tin các hãng sản xuất laptop.
Cấu trúc: o MaHang (PK): Mã hãng sản xuất. o TenHang: Tên hãng sản xuất.
Mô tả: Quản lý thông tin bảo hành cho các sản phẩm.
Cấu trúc: o MaBH (PK): Mã bảo hành. o ThoiHanBaoHanh: Thời hạn bảo hành của laptop. o MaLaptop (FK): Mã laptop (liên kết với bảng LAPTOP). o MaKH (FK): Mã khách hàng (liên kết với bảngKHACHHANG).
Mô tả: Lưu trữ thông tin về nhân viên bán hàng.
Cấu trúc: o MaNhanVien (PK): Mã nhân viên. o TenNhanVien: Tên nhân viên. o ChucVu: Chức vụ của nhân viên. o SoDienThoai: Số điện thoại của nhân viên. o DiaChi: Địa chỉ của nhân viên. o Email: Email liên lạc của nhân viên.
Tạo bảng bằng câu lệnh SQL
MaKH INT PRIMARY KEY IDENTITY(1,1),
MaHang INT PRIMARY KEY IDENTITY(1,1),
MaLoai INT PRIMARY KEY IDENTITY(1,1),
MaLaptop INT PRIMARY KEY IDENTITY(1,1),
FOREIGN KEY (MaHang) REFERENCES HANGSANXUAT(MaHang), FOREIGN KEY (MaLoai) REFERENCES LOAILAPTOP(MaLoai)
MaDonHang INT PRIMARY KEY IDENTITY(1,1),
FOREIGN KEY (MaKH) REFERENCES KHACHHANG(MaKH)
Bảng Chi tiết đơn hàng
FOREIGN KEY (MaLaptop) REFERENCES LAPTOP(MaLaptop)
MaBH INT PRIMARY KEY IDENTITY(1,1),
FOREIGN KEY (MaLaptop) REFERENCES LAPTOP(MaLaptop),
FOREIGN KEY (MaKH) REFERENCES KHACHHANG(MaKH)
MaNhanVien INT PRIMARY KEY IDENTITY(1,1),
Nhập dữ liệu cho các bảng
INSERT INTO KHACHHANG (TenKH, DiaChi, SoDienThoai, Email) VALUES
('Nguyen Van A', '123 Đường ABC, Hà Nội', '0912345678',
('Le Thi B', '456 Đường XYZ, TP.HCM', '0918765432',
('Tran Van C', '789 Đường DEF, Đà Nẵng', '0932123456',
('Pham Van D', '101 Đường GHI, Hải Phòng', '0913456789',
('Nguyen Thi E', '234 Đường JKL, Cần Thơ', '0923456789',
('Hoang Van F', '567 Đường MNO, Huế', '0934567890',
('Le Van G', '890 Đường PQR, Nha Trang', '0912340000',
('Tran Thi H', '111 Đường STU, Đà Lạt', '0919876543',
('Nguyen Van I', '999 Đường VWX, Vũng Tàu', '0911234567',
('Pham Thi K', '222 Đường YZ, Biên Hòa', '0910987654',
INSERT INTO LAPTOP (TenLaptop, GiaBan, CauHinh, SoLuongTon, MaHang, MaLoai)
('Dell XPS 15', 35000000, 'Core i7, 16GB RAM, 512GB SSD', 10, 1, 4), ('HP Omen 15', 32000000, 'Core i7, 16GB RAM, 1TB SSD', 5, 2, 1),
('MacBook Pro 14', 60000000, 'M1 Pro, 16GB RAM, 512GB SSD', 8, 3, 4), ('Asus ROG Strix', 40000000, 'Ryzen 9, 32GB RAM, 1TB SSD', 7, 4, 1), ('Acer Nitro 5', 25000000, 'Core i5, 8GB RAM, 512GB SSD', 12, 5, 1),
('Lenovo Legion 5', 27000000, 'Ryzen 7, 16GB RAM, 1TB SSD', 9, 6, 1), ('MSI GE76 Raider', 50000000, 'Core i9, 32GB RAM, 2TB SSD', 4, 7, 1),
('Dell Latitude 7420', 28000000, 'Core i5, 16GB RAM, 512GB SSD', 6, 1, 2),
('HP EliteBook 840', 29000000, 'Core i7, 16GB RAM, 1TB SSD', 3, 2, 2), ('MacBook Air M2', 28000000, 'M2, 8GB RAM, 256GB SSD', 15, 3, 4);
INSERT INTO DONHANG (NgayDatHang, NgayGiaoHang, MaKH)
INSERT INTO CTDONHANG (MaDonHang, MaLaptop, SoLuong,
INSERT INTO BAOHANH (ThoiHanBaoHanh, MaLaptop, MaKH)
INSERT INTO NHANVIEN (TenNhanVien, ChucVu, SoDienThoai,
('Nguyen Van A', 'Quản lý', '0123456789', '123 Đường A, Quận B',
('Le Thi B', 'Bán hàng', '0987654321', '456 Đường C, Quận D',
('Tran Van C', 'Bán hàng', '0909090909', '789 Đường E, Quận F',
('Nguyen Van D', 'Bán hàng', '0123456780', '789 Đường G, Quận H',
('Pham Thi E', 'Bán hàng', '0987654320', '123 Đường H, Quận I',
('Hoang Van F', 'Quản lý', '0909090910', '456 Đường I, Quận J',
('Pham Van G', 'Bán hàng', '0912345678', '123 Đường K, Quận L',
('Le Van H', 'Bán hàng', '0923456789', '456 Đường M, Quận N',
('Do Thi I', 'Quản lý', '0934567890', '789 Đường N, Quận O',
('Tran Thi J', 'Bán hàng', '0945678901', '321 Đường P, Quận Q',
SỬ DỤNG CÂU LỆNH SQL
truy vấn dữ liệu
1 Lấy tất cả thông tin từ bảng Khách hàng
3 Lấy tất cả các loại laptop
SELECT CT.MaLaptop, SUM(CT.SoLuong) AS SoLuongBan
) AS BanRa ON L.MaLaptop = BanRa.MaLaptop
WHERE SoLuongTon > ISNULL(SoLuongBan, 0); Xử lý laptop chưa bán ra
4 danh sách nhân viên và đơn hàng mà họ quản lý
SELECT NV.TenNhanVien, NV.ChucVu, DH.MaDonHang,
DH.NgayDatHang FROM NHANVIEN NV JOIN DONHANG DH ON NV.MaNhanVien = DH.MaNhanVien;
5 Lấy thông tin chi tiết của laptop có giá lớn hơn 30 triệu
SELECT * FROM LAPTOP WHERE GiaBan > 30000000;
6 Lấy thông tin của các laptop thuộc loại Gaming
SELECT * FROM LAPTOP WHERE MaLoai = (SELECT MaLoai FROM LOAILAPTOP WHERE TenLoai = 'Gaming');
7 Lấy danh sách khách hàng đã đặt hàng
JOIN DONHANG DH ON KH.MaKH = DH.MaKH;
8 Lấy tổng số lượng laptop còn trong kho
SELECT SUM(SoLuongTon) AS TongSoLuongTon FROM LAPTOP;
9 Lấy danh sách các đơn hàng và thông tin khách hàng
SELECT DH.MaDonHang, KH.TenKH, DH.NgayDatHang
JOIN KHACHHANG KH ON DH.MaKH = KH.MaKH;
11 Lấy danh sách bảo hành cho từng laptop
JOIN LAPTOP L ON BH.MaLaptop = L.MaLaptop;
12 Lấy danh sách laptop và hãng sản xuất tương ứng
JOIN HANGSANXUAT H ON L.MaHang = H.MaHang;
Tạo khung nhìn
1 Khung nhìn cho danh sách laptop và thông tin hãng sản xuất
CREATE VIEW vw_LaptopHangSX AS
SELECT L.MaLaptop, L.TenLaptop, H.TenHang, L.GiaBan
JOIN HANGSANXUAT H ON L.MaHang = H.MaHang;
2 Khung nhìn cho danh sách đơn hàng và khách hàng
CREATE VIEW vw_DonHangKhach AS
SELECT DH.MaDonHang, KH.TenKH, DH.NgayDatHang
JOIN KHACHHANG KH ON DH.MaKH = KH.MaKH;
3 Khung nhìn cho thông tin chi tiết đơn hàng
CREATE VIEW vw_ChiTietDonHang AS
SELECT CT.MaDonHang, L.TenLaptop, CT.SoLuong, CT.GiaBan,
(CT.SoLuong * CT.GiaBan) AS ThanhTien
JOIN LAPTOP L ON CT.MaLaptop = L.MaLaptop;
4 Khung nhìn cho số lượng laptop theo từng loại
CREATE VIEW vw_SoLuongLaptopTheoLoai AS
SELECT L.MaLoai, LO.TenLoai, SUM(L.SoLuongTon) AS TongSoLuong FROM LAPTOP L
JOIN LOAILAPTOP LO ON L.MaLoai = LO.MaLoai
GROUP BY L.MaLoai, LO.TenLoai;
5 Khung nhìn thông tin laptop
CREATE VIEW vw_ThongTinLaptop AS
Thủ tục, hàm, trigger
Tạo hàm tìm kiếm laptop
SELECT * FROM fn_TimKiemLaptop('Dell');
Thủ tục thêm dữ liệu
INSERT INTO KHACHHANG (TenKH, DiaChi, SoDienThoai, Email) VALUES (@TenKH, @DiaChi, @SoDienThoai, @Email);
EXEC ThemKhachHang 'Nguyen Van X', '123 Đường XYZ, Hà Nội',
Thủ tục sửa dữ liệu
EXEC SuaKhachHang 1, 'Nguyen Van A', '123 Đường ABC, Hà Nội',
Trigger kiểm tra trước khi xóa
CREATE TRIGGER Trg_KhachHang_Xoa
IF EXISTS (SELECT * FROM BAOHANH WHERE MaKH IN
PRINT 'Không thể xóa khách hàng vì vẫn còn bảo hành.'
WHERE MaKH IN (SELECT MaKH FROM deleted);
Bảo mật, tạo người dung
Phân quyền cho phép User1 đọc và thêm dữ liệu vào bảng LAPTOP
GRANT SELECT, INSERT ON LAPTOP TO User1;
Phân quyền cho phép User2 cập nhật và xóa dữ liệu từ bảng
KHACHHANG GRANT UPDATE, DELETE ON KHACHHANG TO User2;
Phân quyền cho phép User3 chỉ đọc dữ liệu từ bảng DONHANG
GRANT SELECT ON DONHANG TO User3;
Phân quyền cho phép User4 toàn quyền trên cơ sở dữ liệu QL_laptop
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::dbo TO User4; password123