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

Thêm các tính năng nâng cao khác như quản lý danh mục và bỏ phiếu cho chủ đề và bài đăng

Trong bài viết thứ hai của tôi về một diễn đàn trực tuyến, tôi đã đề cập rằng có thể có một số tính năng nâng cao hơn sẽ được thêm vào:

  • Diễn đàn danh mục và các danh mục phụ trong đó mỗi danh mục có một chủ đề, một số người kiểm duyệt và thông tin bổ sung như ngày tạo danh mục.
  • Một bài đăng có thể có chủ đề ngoài nội dung.
  • Chúng tôi có thể muốn cho phép người dùng bỏ phiếu bỏ phiếu trên chủ đề và bài đăng.

Để có thể nắm bắt mô hình dễ dàng hơn, chúng tôi đã chuẩn bị một ví dụ về một diễn đàn như vậy với các danh mục, chủ đề, bài đăng, v.v. Chúng tôi hy vọng rằng điều này sẽ giúp bạn hiểu mọi thứ dễ dàng hơn:

Các thực thể từ Phần 1 có màu vàng và các thực thể từ Phần 2 có màu cam. Đây là mô hình cơ sở dữ liệu hiện tại sau hai bài viết đầu tiên:




Thêm chi tiết về bài đăng

Trong bài viết thứ hai, tôi chỉ thêm các mối quan hệ vào “trạng thái” cho các chủ đề và bài đăng, nhưng bây giờ tôi muốn nâng cao các bài đăng với một chi tiết bổ sung ngoài nội dung đơn giản. Hiện tại, tôi sẽ thêm một “chủ đề” cho mỗi bài đăng có thể khác với “chủ đề” của chủ đề. Với “chủ đề” (nghĩ đến dòng chủ đề trên email hoặc chủ đề của tin nhắn MMS), chúng tôi có thể hiển thị phiên bản nội dung cô đọng - như những dòng đầu tiên của email được hiển thị trong Outlook hoặc trên điện thoại của bạn thư. Ngoài ra, người dùng có thể sử dụng “chủ đề” của bài đăng để ghi lại nhận xét cấp cao như “Tôi không đồng ý” và sau đó đưa lập luận của họ vào phần nhận xét của bài đăng. Đây là một thay đổi đơn giản tốt cho mô hình.

Danh mục

Bây giờ chúng ta đã tự làm ấm mình, hãy thêm một khái niệm (thực thể) mới để phân loại chủ đề và bài đăng. Mỗi danh mục sẽ được xác định với một tên; mỗi danh mục do người dùng tạo và sẽ có ít nhất một người kiểm duyệt trong số những người dùng đó, cộng với một số thuộc tính khác như bài đăng và chủ đề mà chúng tôi đã có. Chúng tôi muốn các danh mục và danh mục phụ, vì vậy chúng tôi sẽ cho phép các danh mục tham chiếu đến các danh mục (phụ) khác.

Vì tôi muốn có nhiều người kiểm duyệt trên mỗi danh mục, nên tôi sẽ lập một bảng để liên kết các danh mục với các nhóm người dùng và liên kết người dùng với các nhóm đó. Bảng này sẽ xác định "nhóm" người dùng, một trong số đó sẽ là "người kiểm duyệt", nhưng trong tương lai, bảng này có thể được mở rộng cho các loại nhóm khác.

Bình chọn hoặc "Thích"

Về mặt cá nhân, tôi thích “bỏ phiếu tán thành” hoặc “phản đối” điều gì đó hơn là chỉ đơn giản là “thích” nó (nhưng tôi đoán Mark Zuckerberg không đồng ý với tôi về điều đó). Tôi sẽ chọn tạo một cơ chế biểu quyết cho phép người dùng bỏ "phiếu tán thành" hoặc "bỏ phiếu". Chúng tôi có thể chọn không cho phép bỏ phiếu khi không có phiếu bầu hoặc giới hạn số phiếu bầu xuống, nhưng điều đó tùy thuộc vào ứng dụng quyết định, cơ sở dữ liệu sẽ chỉ theo dõi số phiếu bầu lên và xuống.

Chúng tôi có thể tạo các bảng riêng biệt cho các phiếu bầu trên chủ đề và phiếu bầu cho bài đăng, nhưng tôi sẽ giữ chúng trong cùng một bảng với các khóa ngoại tùy chọn từ bảng chủ đề và bài đăng. Ngoài ra, tôi chọn không bỏ phiếu cho các hạng mục.

Thiết kế trang trọng

Hiện tại, điều đó kết thúc những thay đổi trên mô hình, vì vậy chúng ta có thể xem xét thiết kế chính thức. Một lần nữa, chúng tôi mở rộng ERD đã được tạo trong Phần 1 &2. Các thay đổi được mô tả trong bài viết này và đưa vào mô hình có màu xanh lam.




Kết luận

Vẫn còn những cải tiến bổ sung có thể được thực hiện, nhưng ở đây chúng tôi đã biến cơ sở dữ liệu của mình cho một diễn đàn trực tuyến thành một thiết kế khá hoàn chỉnh - điều này sẽ hỗ trợ hầu hết các diễn đàn thảo luận trực tuyến điển hình.

Diễn đàn trực tuyến của bạn yêu cầu những tính năng nào khác?

«Phần trước


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12 Toán tử SQL thường được sử dụng

  2. Các trang trình bày và mẫu giao nhau trong SQL

  3. Thông tin liên hệ đang phát triển có nghĩa là thay đổi cơ sở dữ liệu của bạn không?

  4. Thu hẹp khoảng cách Azure:Phiên bản được quản lý

  5. Mô hình dữ liệu