Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hướng dẫn thiết kế cơ sở dữ liệu cho hệ thống quản lý nhân viên trong MySQL

Hướng dẫn này cung cấp các bước hoàn chỉnh để thiết kế giản đồ cơ sở dữ liệu của Hệ thống quản lý nhân viên để quản lý người dùng, vai trò, quyền, tổ chức và nhân viên.

Sơ đồ mối quan hệ thực thể hoặc thiết kế cơ sở dữ liệu trực quan được hiển thị bên dưới.

Cơ sở dữ liệu quản lý nhân viên

Bạn cũng có thể xem các hướng dẫn phổ biến bao gồm Cách cài đặt MySQL 8 trên Ubuntu 20.04 LTS, Cách cài đặt MySQL 8 trên Windows, Cách cài đặt MySQL Workbench trên Ubuntu, Cách cài đặt MySQL 8 với Workbench trên Windows 10, Cơ sở dữ liệu RBAC trong MySql, Cơ sở dữ liệu blog trong MySql, Cơ sở dữ liệu câu hỏi trong MySQL, Cơ sở dữ liệu thăm dò và khảo sát trong MySQL, Cơ sở dữ liệu giỏ hàng trực tuyến trong MySQL, Cơ sở dữ liệu hàng tồn kho trong MySQL và Tìm hiểu các truy vấn SQL cơ bản trong MySQL.

Ghi chú :Bạn cũng có thể làm theo giản đồ Cơ sở dữ liệu tùy chỉnh của Hệ thống quản lý nhân viên để nhận các giải pháp tùy chỉnh dựa trên yêu cầu của bạn.

Cơ sở dữ liệu tổ chức

Bước đầu tiên là tạo Cơ sở dữ liệu về Tổ chức. Nó có thể được tạo bằng cách sử dụng truy vấn như hình dưới đây.

 TẠO SCHEMA `tổ chức` BỘ NHÂN VẬT ĐỊNH MỨC utf8mb4 COLLATE utf8mb4_unicode_ci; 

Tôi đã sử dụng bộ ký tự utf8mb4 để hỗ trợ nhiều loại ký tự.

Bảng vai trò

Trong phần này, chúng tôi sẽ thiết kế Bảng vai trò để lưu trữ các vai trò của hệ thống và tổ chức. Loại cột có thể được sử dụng để xác định xem vai trò dành cho người dùng ứng dụng hay nhân viên của tổ chức. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng vai trò.

Id Id duy nhất để xác định vai trò.
Tiêu đề Chức danh.
Slug Sên duy nhất để tìm kiếm vai trò.
Mô tả Mô tả đề cập đến vai trò.
Loại Loại vai trò để phân biệt giữa các vai trò của hệ thống và tổ chức.
Đang hoạt động Cờ để kiểm tra xem vai trò hiện đang hoạt động hay không.
Được tạo lúc Nó lưu trữ ngày và giờ mà vai trò được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà vai trò được cập nhật.
Nội dung Chi tiết đầy đủ về vai trò.

Bảng Vai trò với các ràng buộc thích hợp được hiển thị bên dưới.

 CREATE TABLE `organization`.`role` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR (75) NOT NULL,
` slug` VARCHAR (100) NOT NULL,
`description` TINYTEXT NULL,
` type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX` uq_slug` (`slug` ASC ));

Bảng Quyền

Trong phần này, chúng tôi sẽ thiết kế Bảng quyền để lưu trữ các quyền của hệ thống và tổ chức. Loại cột có thể được sử dụng để xác định xem quyền dành cho người dùng ứng dụng hay nhân viên của tổ chức. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Quyền.

Id Id duy nhất để xác định quyền.
Tiêu đề Tiêu đề quyền.
Slug Con sên duy nhất để tìm kiếm quyền.
Mô tả Mô tả đề cập đến quyền.
Loại Loại quyền để phân biệt giữa các quyền của hệ thống và tổ chức.
Đang hoạt động Cờ để kiểm tra xem quyền hiện đang hoạt động hay không.
Được tạo lúc Nó lưu trữ ngày và giờ tại đó quyền được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó quyền được cập nhật.
Nội dung Chi tiết đầy đủ về quyền.

Bảng Quyền với các ràng buộc thích hợp được hiển thị bên dưới.

 CREATE TABLE `organization`.`permission` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR (75) NOT NULL,
` slug` VARCHAR (100) NOT NULL,
`description` TINYTEXT NULL,
` type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
` content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX` uq_slug` (`slug` ASC ));

Bảng cho phép vai trò

Bảng quyền của vai trò có thể được sử dụng để lưu trữ ánh xạ của các quyền đối với các vai trò. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Quyền của Vai trò.

Id vai trò Id vai trò để xác định vai trò.
Id Quyền Id quyền để xác định quyền.
Được tạo lúc Nó lưu trữ ngày và giờ mà ánh xạ được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà bản đồ được cập nhật.

Bảng Quyền của Vai trò với các ràng buộc thích hợp được hiển thị bên dưới.

 CREATE TABLE `organization`.`role_permission` (
` roleId` BIGINT NOT NULL,
`allowId` BIGINT NOT NULL,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL,
PRIMARY KEY (` roleId`, `allowId`),
INDEX` idx_rp_role` (`roleId` ASC),
INDEX` idx_rp_permission` (`allowId` ASC ),
CONSTRAINT `fk_rp_role`
NGOẠI KHÓA (` roleId`)
TÀI LIỆU THAM KHẢO `tổ chức`.`role` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG,
CONSTRAINT `fk_rp_permission`
NGOẠI KHÓA (` allowId`)
TÀI LIỆU THAM KHẢO `tổ chức`.`permission` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHÔNG CÓ HÀNH ĐỘNG CẬP NHẬT);

Bảng Người dùng

Trong phần này, chúng tôi sẽ thiết kế Bảng người dùng để lưu trữ thông tin người dùng. Người dùng có thể quản lý hồ sơ của riêng họ. Ngoài ra, người dùng có thể sử dụng ứng dụng theo các vai trò hệ thống được giao cho họ. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Người dùng.

Id Id duy nhất để xác định người dùng.
Id vai trò Vai trò của người dùng. Đó có thể là Quản trị viên hoặc Người dùng.
Tên Tên của người dùng.
Tên đệm Tên đệm của người dùng.
Họ Họ của người dùng.
Di động Số điện thoại di động của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký.
Email Email của người dùng. Nó có thể được sử dụng cho mục đích đăng nhập và đăng ký.
Băm mật khẩu Mật khẩu băm được tạo bởi thuật toán thích hợp. Chúng tôi phải tránh lưu trữ mật khẩu đơn giản hoặc mật khẩu được mã hóa.
Đã đăng ký tại Cột này có thể được sử dụng để tính toán tuổi thọ của người dùng với ứng dụng.
Lần Đăng nhập Cuối cùng Nó có thể được sử dụng để xác định thông tin đăng nhập cuối cùng của người dùng.
Giới thiệu Phần giới thiệu ngắn gọn về Người dùng.
Hồ sơ Chi tiết người dùng.

Bảng Người dùng với các ràng buộc thích hợp được hiển thị bên dưới.

 CREATE TABLE `organization`.`user` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` BIGINT NOT NULL,
` firstName` VARCHAR (50) NULL DEFAULT NULL ,
`middleName` VARCHAR (50) NULL DEFAULT NULL,
` lastName` VARCHAR (50) NULL DEFAULT NULL,
`tên người dùng` VARCHAR (50) NULL DEFAULT NULL,
`mobile` VARCHAR (15) NULL,
` email` VARCHAR (50) NULL,
`passwordHash` VARCHAR (32) NOT NULL,
` registerAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
` intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
UNIQUE INDEX `uq_username` (` tên người dùng` ASC),
CHỈ SỐ DUY NHẤT `uq_mobile` (` di động` ASC),
CHỈ SỐ DUY NHẤT `uq_email` (` email` ASC),
INDEX `idx_user_role `(` roleId` ASC),
CONSTRAINT `fk_user_role`
NGOẠI KHÓA (` roleId`)
TÀI LIỆU THAM KHẢO về `tổ chức`.`role` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);

Bảng tổ chức

Trong phần này, chúng tôi sẽ thiết kế Bảng tổ chức để lưu trữ dữ liệu của tổ chức. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Tổ chức.

Id Id duy nhất để xác định tổ chức.
Tạo bởi Id người dùng để xác định người dùng đã đăng ký tổ chức.
Được cập nhật bởi Id người dùng để xác định người dùng đã cập nhật tổ chức.
Tiêu đề Chức danh tổ chức.
Tiêu đề meta Tiêu đề meta được sử dụng cho tiêu đề trình duyệt và mục đích SEO.
Slug Nút để tạo URL duy nhất.
Tóm tắt Bản tóm tắt để đề cập đến những điểm nổi bật chính.
Trạng thái Trạng thái của tổ chức có thể là Mới, Được chấp thuận, Đang hoạt động hoặc Bị chặn.
Được tạo lúc Nó lưu trữ ngày và giờ mà tổ chức được thành lập.
Cập nhật lúc Nó lưu trữ ngày và giờ tại đó tổ chức được cập nhật.
Hồ sơ Cột được sử dụng để lưu trữ chi tiết hồ sơ của tổ chức.
Nội dung Cột được sử dụng để lưu trữ các chi tiết bổ sung của tổ chức.

Nó sử dụng trạng thái cột để theo dõi trạng thái của tổ chức. Trạng thái có thể là Mới, Đã phê duyệt, Đang hoạt động hoặc Bị chặn. Bảng Tổ chức với các ràng buộc thích hợp được hiển thị bên dưới.

 TẠO BẢNG `tổ chức`.> `title` VARCHAR (75) NOT NULL, 
` metaTitle` VARCHAR (100) NULL,
`slug` VARCHAR (100) NOT NULL,
` Summary` TINYTEXT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
` profile` TEXT NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
CHỈ SỐ DUY NHẤT `uq_slug` (` slug` ASC),
INDEX `idx_organization_creator` (` createdBy` ASC) ,
CONSTRAINT `fk_organization_creator`
NGOẠI KHÓA (` createdBy`)
TÀI LIỆU THAM KHẢO `tổ chức`.` người dùng` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);

BẢNG ALTER `tổ chức`. 'Tổ chức`
THÊM CHỈ SỐ` idx_organization_modifier` (`cập nhật n`
ADD CONSTRAINT `fk_organization_modifier`
NGOẠI KHÓA (` updatedBy`)
TÀI LIỆU THAM KHẢO `tổ chức`.` người dùng` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
BẬT CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;

Meta tổ chức

Bảng Meta Tổ chức có thể được sử dụng để lưu trữ thông tin bổ sung về các tổ chức bao gồm URL biểu ngữ của tổ chức, v.v. Dưới đây là mô tả của tất cả các cột của Bảng Meta Tổ chức.

Id Id duy nhất để xác định meta tổ chức.
Id tổ chức Id tổ chức để xác định tổ chức mẹ.
Phím Chìa khóa xác định meta.
Nội dung Cột được sử dụng để lưu trữ siêu dữ liệu của tổ chức.

Bảng Meta Tổ chức với các ràng buộc thích hợp được hiển thị bên dưới.

 CREATE TABLE `organization`.`organization_meta` (
` id` BIGINT NOT NULL AUTO_INCREMENT,
`organizationId` BIGINT NOT NULL,
` key` VARCHAR (50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
INDEX `idx_meta_organization` (` organizationId` ASC),
CHỈ SỐ DUY NHẤT `uq_meta_organization` (` OrganizationId` ASC, `key` ASC),
CONSTRAINT` fk_meta_organization`
FOREIGN KEY (`organizationId`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG)
ENGINE =InnoDB;

Bảng nhân viên

Trong phần này, chúng tôi sẽ thiết kế Bảng nhân viên để lưu trữ dữ liệu nhân viên. Dưới đây được đề cập là mô tả của tất cả các cột của Bảng Nhân viên.

Id Id duy nhất để xác định nhân viên.
Id Người dùng Id người dùng để xác định người dùng được liên kết với Nhân viên.
Id vai trò Id vai trò cụ thể của tổ chức được chỉ định cho Nhân viên.
Tạo bởi Id người dùng để xác định người dùng đã thêm nhân viên.
Được cập nhật bởi Id người dùng để xác định người dùng đã cập nhật nhân viên.
Mã được tổ chức sử dụng để xác định nhân viên.
Trạng thái Trạng thái của nhân viên có thể là Mới, Được chấp thuận, Đang hoạt động, Bị chặn hoặc Chấm dứt.
Được tạo lúc Nó lưu trữ ngày và giờ mà nhân viên được tạo.
Cập nhật lúc Nó lưu trữ ngày và giờ mà nhân viên được cập nhật.
Bắt đầu lúc Nó lưu trữ ngày và giờ bắt đầu việc làm.
Kết thúc lúc Nó lưu trữ ngày và giờ kết thúc việc làm.
Ghi chú Cột được sử dụng để lưu trữ các ghi chú cụ thể cho việc làm.

Nó sử dụng trạng thái cột để theo dõi trạng thái của nhân viên. Trạng thái có thể là Mới, Đã phê duyệt, Đang hoạt động, Bị chặn hoặc Đã chấm dứt. Bảng Nhân viên với các ràng buộc thích hợp được hiển thị bên dưới.

 TẠO BẢNG `tổ chức`.> `roleId` BIGINT NOT NULL, 
` createBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
` code` VARCHAR (100) NOT NULL,
`status `SMALLINT NOT NULL DEFAULT 0,
` createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
` startedAt` DATETIME NULL DEFAULT NULL,
`endAt` DATETIME NULL DEFAULT NULL,
`ghi chú` TEXT NULL DEFAULT NULL,
PRIMARY KEY (` id`),
INDEX `idx_employee_user` (` userId` ASC),
CONSTRAINT `fk_employee_user `
NGOẠI KHÓA (` userId`)
TÀI LIỆU THAM KHẢO `tổ chức`.` người dùng` (` id`)
KHI XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG);

BẢNG BÁO CÁO `tổ chức`. `fk_employee_organization`
NGOẠI KHÓA (` OrganizationId`)
TÀI LIỆU THAM KHẢO về `tổ chức`. />
BẢNG BÁO CÁO `tổ chức`. `fk_employee_role`
NGOẠI KHÓA (` roleId`)
TÀI LIỆU THAM KHẢO `tổ chức`.`role` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;

BẢNG BÁO CÁO `tổ chức`. `fk_employee_creator`
NGOẠI KHÓA (` createBy`)
TÀI LIỆU THAM KHẢO `tổ chức`.` người dùng` (` id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG;

BẢNG BÁO CÁO `tổ chức`. `fk_emplo yee_modifier`
NGOẠI KHÓA (`updatedBy`)
TÀI LIỆU THAM KHẢO` tổ chức`.` người dùng` (`id`)
BẬT XÓA KHÔNG CÓ HÀNH ĐỘNG
KHI CẬP NHẬT KHÔNG CÓ HÀNH ĐỘNG>

Tóm tắt

Trong hướng dẫn này, chúng ta đã thảo luận về thiết kế cơ sở dữ liệu của Hệ thống quản lý nhân viên để lưu trữ các vai trò, quyền, người dùng, tổ chức và quản lý nhân viên của tổ chức.

Bạn có thể gửi bình luận của mình để tham gia thảo luận. Bạn cũng có thể quan tâm đến việc thiết kế cơ sở dữ liệu của các ứng dụng Blog, Giỏ hàng và Cuộc thăm dò ý kiến ​​&Khảo sát. Lược đồ cơ sở dữ liệu hoàn chỉnh cũng có sẵn trên GitHub.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mối quan hệ giữa danh mục, lược đồ, người dùng và phiên bản cơ sở dữ liệu

  2. Cách kiểm tra xem một bảng đã tồn tại chưa trước khi tạo nó trong MySQL

  3. Làm thế nào để tìm các kết quả tương tự và sắp xếp theo độ tương tự?

  4. Mysql - xóa khỏi nhiều bảng với một truy vấn

  5. Nguồn dữ liệu MySQL không xuất hiện trong Visual Studio