Code cùng Khánh

Chia sẻ kiến thức code Khánh đang học và đang dùng

Thiết kế tính năng và dữ liệu cho hệ thống

Thiết kế tính năng và dữ liệu cho hệ thống

Trong bài này mình sẽ hướng dẫn các bạn cách thiết kế tính năng và cơ sở dữ liệu cho hệ thống lịch họp.

Các tính năng của hệ thống cần có

  • Quản lý lịch họp ở các phòng họp của công ty
  • Nhân viên được tạo tài khoản để truy cập
  • Khi tạo lịch họp nếu trùng giờ thì được thông báo trùng và không tạo được
  • Tạo thành công thì gửi thông báo đến người được mời họp
  • Người được mời họp có thể tương tác với nút bấm để xác nhận tham gia hoặc không tham gia.

Các nhóm quyền

Ngoài các tính năng kể trên, hệ thống cũng cần phân quyền theo 3 nhóm để phù hợp với các nhu cầu thực tế tại các công ty hơn. Các quyền sẽ bao gồm:

  • Quyền nhân viên – user thông thường, có quyền tạo và xem lịch họp do bản thân tạo ra hoặc được mời tham gia
  • Quyền quản lý – user có quyền xem nội dung lịch họp của các user khác
  • Quyền quản trị hệ thống – user có quyền thêm cập nhật các phòng họp, cập nhật quyền, tạo user khác
Use case mô tả tính năng của hệ thống đặt lịch họp
Các tính năng của hệ thống

Tình huống và luồng hoạt động chính của hệ thống

  • Tình huống: Nhân viên A đặt phòng họp tầng 1 vào lúc 10 giờ sáng. Cuộc họp gồm nhân viên B và C
  • Luồng dữ liệu:
    • Nhân viên A đăng nhập hệ thống => Truy cập danh sách phòng họp => chọn phòng tầng 1 => tạo lịch họp và mời nhân viên B và C tham dự.
    • Nhân viên B và C nhận được lời mời họp qua email. Nhân viên B đồng ý họp còn C thì từ chối
    • Nhân viên A nhận được email thông báo chấp nhận lời mời của B và từ chối lời mời của C

Thiết kế dữ liệu cho hệ thống

Để đáp ứng cho các tính năng kể trên, mình sẽ thiết kế các bảng tương ứng để sử dụng cho hệ thống của chúng ta

  • Bảng phòng họp gồm id và tên phòng: Bảng này dùng để lưu thông tin các phòng họp có tại công ty
  • Bảng lịch họp gồm id, id phòng họp, tên cuộc họp, thời gian bắt đầu, kết thúc, người tạo lịch: Bảng này dùng để lưu thông tin các cuộc họp tại một phòng họp cụ thể (có khóa ngoại là id phòng họp)
  • Bảng người tham gia họp gồm id, id lịch họp, id người tham dự, trạng thái xác nhận: Dùng để lưu thông tin nhân sự được mời tham dự cuộc họp, trạng thái dùng để lưu thông tin người được mời họp đồng ý hay từ chối tham dự
  • Bảng nhân viên gồm thông tin cá nhân của nhân viên: lưu thông tin nhân viên làm việc tại công ty, có lưu id user làm khóa ngoại để liên kết với thông tin tài khoản người dùng
  • Bảng user – bảng được tạo sẵn từ hệ thống, dùng để xác thực quyền truy cập hệ thống của các nhân viên. Bảng này sẽ được tạo thêm 1 cột đơn giản để lưu nhóm quyền vì mình không muốn phân quyền phức tạp

Vậy là mình đã làm xong bước đầu tiên để xây dựng hệ thống, chúng ta đã phân tích xong các tính năng cần có, các quyền cơ bản, giải thích cách hoạt động của hệ thống và xây dựng xong phần cơ sở dữ liệu cho hệ thống. Dưới đây là thiết kế hoàn chỉnh bao gồm mối quan hệ của các bảng trong hệ thống.

Sơ đồ lớp thiết kế theo tính năng hệ thống
Sơ đồ lớp thiết kế theo tính năng hệ thống

Ở bài tiếp theo, mình sẽ hướng dẫn chi tiết cách khởi tạo project Laravel, cài đặt các gói cần thiết, và thiết lập các biến môi trường để sẵn sàng cho quá trình phát triển hệ thống.

Hẹn gặp lại các bạn ở bài tiếp theo!

Sơ đồ trong bài viết được vẽ bằng Draw.io, các bạn có thể tham khảo thêm các công cụ khác mình sử dụng ở trang Công cụ

Thumbnail bài viết được lấy từ Kelly Sikkema tại unsplash.com

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *