在設計一個通用的用戶、權限和菜單管理系統時,我們通常需要創建幾個核心的數據庫表來管理用戶信息、角色信息、權限信息以及菜單信息。下面是一個基于SQL的示例,展示了如何建立這些基礎表格。
數據庫表設計
1. 用戶表 (users)
Sql
1CREATE TABLE users (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 username VARCHAR(255) NOT NULL UNIQUE,
4 password VARCHAR(255) NOT NULL,
5 email VARCHAR(255),
6 first_name VARCHAR(255),
7 last_name VARCHAR(255),
8 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
9 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
10);
2. 角色表 (roles)
Sql
1CREATE TABLE roles (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 name VARCHAR(255) NOT NULL UNIQUE,
4 description TEXT,
5 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
6 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
7);
3. 權限表 (permissions)
Sql
1CREATE TABLE permissions (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 name VARCHAR(255) NOT NULL UNIQUE,
4 description TEXT,
5 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
6 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
7);
4. 菜單表 (menus)
Sql
1CREATE TABLE menus (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 name VARCHAR(255) NOT NULL,
4 url VARCHAR(255),
5 parent_id INT,
6 FOREIGN KEY (parent_id) REFERENCES menus(id),
7 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
8 updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
9);
5. 用戶-角色關聯表 (user_roles)
Sql
1CREATE TABLE user_roles (
2 user_id INT,
3 role_id INT,
4 PRIMARY KEY (user_id, role_id),
5 FOREIGN KEY (user_id) REFERENCES users(id),
6 FOREIGN KEY (role_id) REFERENCES roles(id)
7);
6. 角色-權限關聯表 (role_permissions)
Sql
1CREATE TABLE role_permissions (
2 role_id INT,
3 permission_id INT,
4 PRIMARY KEY (role_id, permission_id),
5 FOREIGN KEY (role_id) REFERENCES roles(id),
6 FOREIGN KEY (permission_id) REFERENCES permissions(id)
7);
7. 菜單-權限關聯表 (menu_permissions)
Sql
1CREATE TABLE menu_permissions (
2 menu_id INT,
3 permission_id INT,
4 PRIMARY KEY (menu_id, permission_id),
5 FOREIGN KEY (menu_id) REFERENCES menus(id),
6 FOREIGN KEY (permission_id) REFERENCES permissions(id)
7);
使用說明
- 用戶表存儲用戶的基本信息。
- 角色表存儲角色信息,角色用于授予一組權限。
- 權限表存儲具體的權限,如“創建文章”、“刪除評論”等。
- 菜單表存儲系統菜單項,每個菜單項可以關聯一個或多個權限。
- 用戶-角色關聯表用來連接用戶和角色,實現多對多的關系。
- 角色-權限關聯表和菜單-權限關聯表分別用于角色和菜單與權限之間的多對多關系。
這種設計允許靈活的權限管理和用戶角色分配,同時也支持構建復雜的菜單結構。