Database
 sql >> база данни >  >> RDS >> Database

Добавяне на още разширени функции като управление на категории и гласуване в теми и публикации

Във втората си статия за онлайн форум споменах, че може да има още няколко разширени функции, които да бъдат добавени:

  • Категории на форума и подкатегории, където всяка категория има тема, няколко модератора и допълнителна информация, като дата на създаване на категорията.
  • публикация може да има тема в допълнение към съдържанието.
  • Може да искаме да позволим на потребителите да гласуват игласувайте против в теми и публикации.

За да можем по-лесно да схванем модела, сме подготвили пример за такъв форум с категории, теми, публикации и т.н. Надяваме се, че това улеснява разбирането на нещата:

Обектите от част 1 са оцветени в жълто, а обектите от част 2 са оцветени в оранжево. Ето текущия модел на база данни след първите две статии:




Повече подробности за публикациите

Във втората статия добавих само връзки към „статус“ за теми и публикации, но сега бих искал да подобря публикациите с допълнителен детайл извън простото съдържание. Засега ще добавя „тема“ за всяка публикация, която може да е различна от „темата“ на темата. С „тема“ (помислете за темата на имейл или темата на MMS съобщение) можем да покажем съкратена версия на съдържанието – като първите редове на имейл, който се показва в Outlook или на вашия телефон поща. Също така, потребителите могат да използват „тема“ на публикация, за да запишат коментар на високо ниво като „Не съм съгласен“ и след това да поставят аргументите си в секцията за коментари на публикацията. Това е приятна проста промяна на модела.

Категории

Сега, когато се затоплихме, нека добавим нова концепция (обект) за категоризиране на теми и публикации. Всяка категория ще бъде дефинирана с име; всяка категория е създадена от потребител и ще има поне един модератор сред потребителите, плюс няколко други атрибута като публикациите и темите, които вече имаме. Бихме искали категории и подкатегории, така че ще позволим на категориите да се отнасят към други (под-) категории.

Тъй като бих искал да имам множество модератори за всяка категория, ще направя таблица за свързване на категории към групи потребители и свързване на потребителите с тези групи. Тази таблица ще дефинира „групи“ от потребители, една от които ще бъде „модератори“, но в бъдеще това може да бъде разширено за други типове групи.

Гласуване или „Харесвания“

Лично аз предпочитам да „гласувам“ или „гласувам против“ за нещо, отколкото просто да го „харесвам“ (но предполагам, че Марк Зукърбърг не е съгласен с мен по въпроса). Ще избера да създам механизъм за гласуване, който позволява на потребителите да дадат „гласуване нагоре“ или „гласуване надолу“. Може да изберем да забраним гласовете против, когато няма гласове за, или да ограничим броя на гласовете против, но това зависи от приложението да реши, базата данни просто ще следи броя на гласовете за и против.

Може да създадем отделни таблици за гласувания по теми и гласове за публикации, но ще ги запазя в една и съща таблица с незадължителни външни ключове от таблицата с теми и публикации. Освен това избирам да нямам гласуване по категории.

Официален дизайн

Засега това приключва промените в модела, така че можем да разгледаме официалния дизайн. Отново разширяваме ERD, който беше създаден в части 1 и 2. Промените, описани в тази статия и въведени в модела, са оцветени в синьо.




Заключение

Все още има допълнителни подобрения, които могат да бъдат направени, но тук направихме нашата база данни за онлайн форум в доста завършен дизайн – това ще поддържа повечето типични онлайн форуми за дискусии.

Какви други функции изисква вашият онлайн форум?

« Предишна част  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Идентифициране и коригиране на проблем с производителността на препратените записи

  2. Колба по пример – Настройка на Postgres, SQLAlchemy и Alembic

  3. Лоши навици :Фокусиране само върху дисковото пространство при избора на ключове

  4. Конфигуриране на Service Broker за асинхронна обработка

  5. Вашият Salesforce драйвер поддържа ли групови действия?