Помогите со структурой базы данных - PullRequest
2 голосов
/ 20 октября 2010

Я пытаюсь создать систему, которая позволяет пользователям локальной сети совместно работать с контентом.

Требования: пользователь должен иметь возможность:

  1. создавать контент,
  2. редактировать контент (контент, созданный кем-либо),
  3. должны храниться записи о том, кто что редактировал и когда,
  4. должен легко переходить назад и вперед между изменениями,
  5. добавлять комментарии к страницам,
  6. должен иметь возможность назначать права на созданные / редактируемые страницы (то есть, кто может их просматривать)

Я пытаюсь создать базу данныхструктуры, но нужна помощь.Может ли кто-нибудь помочь мне создать хорошую структуру для таких требований?

РЕДАКТИРОВАТЬ:

Это то, что у меня есть:

page table -
page_id
title
content
date
inactive (0,1)
author

rights table -
page_id
user_id
view (0,1)
edit (0,1)
delete (0,1)

history table -
page_id
title
content
date
inactive (0,1)
author

Как это можно улучшить?

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Я думаю, что большинство из того, что у тебя было, в порядке. Я просто показываю дополнения или изменения в дизайне, быстрая, но приблизительная оценка:

user
----
user_id
network_username ("Or Active Directory Name or whatever, you get the idea.
    Using user_id as a foreign key in other tables instead of the network
    name makes it easier if account names change.")

role
----
role_id
name

user_role
---------
user_role_id
role_id
user_id

page
----
page_id
author_user_id

page_comment
------------
page_comment_id
parent_page_comment_id ("Self reference to allow for nested comments")
page_id ("Even though you could conceivably look up page_id via
    parent_page_comment_id if you're dealing with a nested comment, that
    would involve N nested queries... so it's probably good to require this
    field be populated for every single record")
user_id


permission
----------
permission_id
page_id
role_id ("To simplify, I'd stick solely to role-based access.")

history
-------
history_id ("If you have high-volume edits, you may need to use date AND this
    to establish the order changes were made in.  Probably safest to use both
    right from the start.")
page_id
user_id ("caveat:  you won't know what role the user was in when a change was
    made.")
old_title ("I'd prefix "old_" to all the fields just to make it intuitively
    clear.")
0 голосов
/ 20 октября 2010
...