




Preview text:
Để tạo cơ sở dữ liệu cho quản lý bán hàng cho siêu thị mini, bạn cần xác định các yếu tố chính của hệ thống và
thiết kế bảng dữ liệu phản ánh cấu trúc này. Dưới đây là một ví dụ đơn giản với một số bảng cơ bản: Bảng Sản Phẩm:
Lưu thông tin về các sản phẩm được bán. sql Copy code CREATE TABLE SanPham ( SanPhamID INT PRIMARY KEY,
TenSanPham NVARCHAR(100) NOT NULL,
GiaBan DECIMAL(10, 2) NOT NULL, SoLuongTon INT NOT NULL ); Bảng Khách Hàng:
Lưu thông tin về các khách hàng. sql Copy code CREATE TABLE KhachHang ( KhachHangID INT PRIMARY KEY, HoTen NVARCHAR(100) NOT NULL, SoDienThoai NVARCHAR(20), DiaChi NVARCHAR(255) ); Bảng Hóa Đơn:
Lưu thông tin về các hóa đơn bán hàng. sql Copy code CREATE TABLE HoaDon ( HoaDonID INT PRIMARY KEY, NgayBan DATE NOT NULL, KhachHangID INT,
FOREIGN KEY (KhachHangID) REFERENCES KhachHang(KhachHangID) ); Bảng Chi Tiết Hóa Đơn:
Lưu chi tiết về các sản phẩm trong mỗi hóa đơn. sql Copy code CREATE TABLE ChiTietHoaDon ( ChiTietID INT PRIMARY KEY, HoaDonID INT, SanPhamID INT, SoLuongMua INT NOT NULL,
GiaBanHienTai DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (HoaDonID) REFERENCES HoaDon(HoaDonID),
FOREIGN KEY (SanPhamID) REFERENCES SanPham(SanPhamID) ); Bảng Nhân Viên:
Lưu thông tin về nhân viên. sql Copy code CREATE TABLE NhanVien ( NhanVienID INT PRIMARY KEY, HoTen NVARCHAR(100) NOT NULL, ChucVu NVARCHAR(50), Luong DECIMAL(12, 2) ); Bảng Nhap Kho:
Lưu thông tin về việc nhập kho sản phẩm. sql Copy code CREATE TABLE NhapKho ( NhapKhoID INT PRIMARY KEY, NgayNhap DATE NOT NULL, NguoiNhapID INT,
FOREIGN KEY (NguoiNhapID) REFERENCES NhanVien(NhanVienID) ); Bảng Chi Tiết Nhập Kho:
Lưu chi tiết về sản phẩm trong mỗi lần nhập kho. sql Copy code CREATE TABLE ChiTietNhapKho ( ChiTietID INT PRIMARY KEY, NhapKhoID INT, SanPhamID INT, SoLuongNhap INT NOT NULL,
GiaNhap DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (NhapKhoID) REFERENCES NhapKho(NhapKhoID),
FOREIGN KEY (SanPhamID) REFERENCES SanPham(SanPhamID) );
Trong các ví dụ này, mỗi bảng đều có một trường ID làm khóa chính và một số trường khác để lưu trữ thông tin
liên quan. Các mối quan hệ giữa các bảng được thiết lập thông qua việc sử dụng khóa ngoại (FOREIGN KEY).
Hãy chắc chắn rằng thiết kế cơ sở dữ liệu phản ánh nhu cầu cụ thể của bạn và đáp ứng các yêu cầu kinh doanh của siêu thị mini.
Dưới đây là ví dụ về cách sử dụng các ràng buộc cần thiết trong cơ sở dữ liệu cho quản lý bán hàng cho siêu thị mini: Ràng buộc NOT NULL:
Đảm bảo các trường quan trọng không chứa giá trị null. sql Copy code
-- Trong bảng SanPham, không cho phép TenSanPham, GiaBan, SoLuongTon là null. ALTER TABLE SanPham
ALTER COLUMN TenSanPham NVARCHAR(100) NOT NULL; ALTER TABLE SanPham
ALTER COLUMN GiaBan DECIMAL(10, 2) NOT NULL; ALTER TABLE SanPham
ALTER COLUMN SoLuongTon INT NOT NULL; Ràng buộc UNIQUE:
Đảm bảo tính duy nhất của các giá trị trong các trường quan trọng. sql Copy code
-- Trong bảng SanPham, đảm bảo tính duy nhất của TenSanPham. ALTER TABLE SanPham
ADD CONSTRAINT UQ_TenSanPham UNIQUE (TenSanPham);
-- Trong bảng KhachHang, đảm bảo tính duy nhất của SoDienThoai. ALTER TABLE KhachHang
ADD CONSTRAINT UQ_SoDienThoai UNIQUE (SoDienThoai); Ràng buộc PRIMARY KEY:
Định nghĩa các khóa chính cho các bảng. sql Copy code
-- Trong bảng SanPham, đặt SanPhamID làm khóa chính. ALTER TABLE SanPham
ADD CONSTRAINT PK_SanPham PRIMARY KEY (SanPhamID);
-- Trong bảng KhachHang, đặt KhachHangID làm khóa chính. ALTER TABLE KhachHang
ADD CONSTRAINT PK_KhachHang PRIMARY KEY (KhachHangID);
-- Tương tự cho các bảng khác. Ràng buộc FOREIGN KEY:
Xác định mối quan hệ giữa các bảng thông qua khóa ngoại. sql Copy code
-- Trong bảng HoaDon, xác định mối quan hệ với bảng KhachHang thông qua KhachHangID. ALTER TABLE HoaDon
ADD CONSTRAINT FK_HoaDon_KhachHang
FOREIGN KEY (KhachHangID) REFERENCES KhachHang(KhachHangID);
-- Trong bảng ChiTietHoaDon, xác định mối quan hệ với bảng SanPham thông qua SanPhamID. ALTER TABLE ChiTietHoaDon
ADD CONSTRAINT FK_ChiTietHoaDon_SanPham
FOREIGN KEY (SanPhamID) REFERENCES SanPham(SanPhamID);
-- Tương tự cho các bảng khác. Ràng buộc CHECK:
Đặt các điều kiện kiểm tra trên các trường. sql Copy code
-- Trong bảng ChiTietHoaDon, đặt ràng buộc CHECK để đảm bảo SoLuongMua là số dương. ALTER TABLE ChiTietHoaDon
ADD CONSTRAINT CK_SoLuongMua CHECK (SoLuongMua > 0);
-- Trong bảng NhapKho, đặt ràng buộc CHECK để đảm bảo NgayNhap không sau thời điểm hiện tại. ALTER TABLE NhapKho
ADD CONSTRAINT CK_NgayNhap CHECK (NgayNhap <= GETDATE());
Những ràng buộc này giúp đảm bảo tính toàn vẹn của dữ liệu và đáp ứng các quy tắc kinh doanh cụ thể của siêu
thị mini. Hãy điều chỉnh chúng tùy thuộc vào yêu cầu cụ thể của bạn. Thêm Sản Phẩm mới:
Thêm một sản phẩm mới vào bảng SanPham. sql Copy code
INSERT INTO SanPham (TenSanPham, GiaBan, SoLuongTon, LoaiSanPhamID, NhaCungCapID)
VALUES ('Áo Polo', 29.99, 50, 1, 1); Thêm Khách Hàng mới:
Thêm một khách hàng mới vào bảng KhachHang. sql Copy code
INSERT INTO KhachHang (HoTen, SoDienThoai, DiaChi)
VALUES ('Nguyen Van A', '0123456789', '123 Đường ABC, Quận 1, TP.HCM'); Thêm Hóa Đơn mới:
Thêm một hóa đơn mới vào bảng HoaDon. sql Copy code
INSERT INTO HoaDon (NgayBan, KhachHangID)
VALUES (GETDATE(), 1); -- Giả sử có một khách hàng có KhachHangID là 1.
Cập Nhật Dữ Liệu (UPDATE):
Cập Nhật Giá Bán của Sản Phẩm:
Cập nhật giá bán của sản phẩm có SanPhamID là 1. sql Copy code UPDATE SanPham SET GiaBan = 34.99 WHERE SanPhamID = 1;
Cập Nhật Thông Tin Khách Hàng:
Cập nhật thông tin khách hàng có KhachHangID là 1. sql Copy code UPDATE KhachHang
SET SoDienThoai = '0987654321' WHERE KhachHangID = 1; Xóa Dữ Liệu (DELETE): Xóa Sản Phẩm:
Xóa sản phẩm có SanPhamID là 2. sql Copy code DELETE FROM SanPham WHERE SanPhamID = 2; Xóa Khách Hàng:
Xóa khách hàng có KhachHangID là 3. sql Copy code DELETE FROM KhachHang WHERE KhachHangID = 3;
Lưu ý rằng trước khi thực hiện các câu lệnh UPDATE hoặc DELETE, bạn nên xác nhận rằng dữ liệu cần cập
nhật hoặc xóa đã đúng và không gây ảnh hưởng đáng kể đến tính toàn vẹn của cơ sở dữ liệu. Sử dụng các điều
kiện WHERE chính xác để đảm bảo chỉ tác động đến dữ liệu cần thiết.
hêm trường NgayNhap cho Đơn Hàng:
Giả sử bạn muốn lưu thông tin về ngày giờ nhập của mỗi đơn hàng trong bảng HoaDon. sql Copy code ALTER TABLE HoaDon ADD NgayNhap DATETIME;
Thêm Dữ Liệu với Ngày Giờ Nhập:
Khi bạn thêm một đơn hàng mới, hãy cung cấp giá trị cho trường NgayNhap. sql Copy code
INSERT INTO HoaDon (NgayBan, KhachHangID, NgayNhap)
VALUES (GETDATE(), 1, GETDATE()); -- Giả sử có một khách hàng có KhachHangID là 1.
Trong ví dụ trên, GETDATE() được sử dụng để lấy thời điểm hiện tại của hệ thống và đặt giá trị cho trường
NgayNhap. Nếu bạn chỉ quan tâm đến ngày hoặc giờ, bạn có thể sử dụng các hàm như GETDATE(),
CURRENT_DATE(), CURRENT_TIME() tùy thuộc vào DBMS bạn đang sử dụng.
Nếu bạn muốn thêm ngày giờ nhập khi đã có sẵn một đơn hàng, bạn có thể sử dụng câu lệnh UPDATE: sql Copy code UPDATE HoaDon SET NgayNhap = GETDATE()
WHERE HoaDonID = 1; -- Giả sử đơn hàng có HoaDonID là 1.
Nhớ rằng đối với các DBMS khác nhau, có thể có cú pháp và hàm khác nhau, vì vậy điều chỉnh theo hệ thống
quản lý cơ sở dữ liệu bạn đang sử dụng.