1. SƠ ĐỒ ERD (Entity Relationship Diagram)
Nhấn chuột phải → Open image in new tab để xem rõ nhất
Nhấn chuột phải → Open image in new tab để xem rõ nhất
2. GIẢI THÍCH CHI TIẾT TỪNG THÀNH PHẦN TRONG ERD
- Users: Lưu thông tin người dùng. Khóa chính:
user_id
- ProductGroups: Các nhóm sản phẩm (Điện thoại, Laptop, Phụ kiện...). Khóa chính:
group_id
- Products: Sản phẩm cụ thể. Mỗi sản phẩm thuộc 1 nhóm → quan hệ 1-N với ProductGroups
- Permissions: Bảng trung gian để giải quyết quan hệ M:N giữa Users và ProductGroups
Quan hệ M:N: Một người dùng có thể có quyền trên nhiều nhóm, một nhóm có thể được nhiều người dùng truy cập → cần bảng trung gian Permissions
→ Trong Permissions lưu: "Người dùng A với nhóm B có quyền Xem = 1, Sửa = 0, Xóa = 1"
3. CÁC TRƯỜNG QUYỀN TRONG BẢNG PERMISSIONS
- can_view: Được phép xem danh sách sản phẩm trong nhóm
- can_edit: Được phép sửa thông tin sản phẩm
- can_delete: Được phép xóa sản phẩm
4. SCRIPT SQL TẠO TOÀN BỘ CSDL (Copy-paste chạy được 100%)
CREATE DATABASE shop_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE shop_management;
CREATE TABLE Users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
role ENUM('Admin','Kế toán','Nhân viên bán hàng','Quản lý kho') DEFAULT 'Nhân viên bán hàng',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE ProductGroups (
group_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT
);
CREATE TABLE Products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(15,2) NOT NULL,
group_id INT NOT NULL,
FOREIGN KEY (group_id) REFERENCES ProductGroups(group_id) ON DELETE RESTRICT
);
CREATE TABLE Permissions (
permission_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
group_id INT NOT NULL,
can_view TINYINT(1) DEFAULT 1,
can_edit TINYINT(1) DEFAULT 0,
can_delete TINYINT(1) DEFAULT 0,
UNIQUE KEY uniq_user_group (user_id, group_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id) ON DELETE CASCADE,
FOREIGN KEY (group_id) REFERENCES ProductGroups(group_id) ON DELETE CASCADE
);
-- DỮ LIỆU MẪU
INSERT INTO Users (name,email,role) VALUES
('Nguyễn Văn Admin','admin@shop.com','Admin'),
('Trần Thị Kế Toán','ketoan@shop.com','Kế toán'),
('Lê Văn Sale','sale@shop.com','Nhân viên bán hàng');
INSERT INTO ProductGroups (name,description) VALUES
('Điện thoại','Smartphone các hãng'),
('Laptop','Máy tính xách tay'),
('Phụ kiện','Ốp lưng, sạc, tai nghe...');
INSERT INTO Products (name,price,group_id) VALUES
('iPhone 15 Pro',28990000,1),
('MacBook Air M2',27990000,2),
('AirPods Pro 2',6490000,3);
INSERT INTO Permissions (user_id,group_id,can_view,can_edit,can_delete) VALUES
(1,1,1,1,1),(1,2,1,1,1),(1,3,1,1,1), -- Admin toàn quyền
(3,1,1,0,0); -- Sale chỉ được XEM nhóm Điện thoại
MẸO VẼ ERD ĐẸP NHẤT TRONG 30 GIÂY:
→ Vào
dbdiagram.io
→ Dán đoạn code DBML → Tự động sinh ERD đẹp lung linh → In ra nộp kèm báo cáo!
Giáo viên sẽ WOW ngay lập tức!