ERD для пользовательских настроек / настроек - PullRequest
1 голос
/ 27 февраля 2012

Я разрабатываю ERD для системы управления и публикации журналов

Имея в виду, что я буду иметь автора, редактора, читателя в качестве пользователей для моего приложения. А также администратор для каждого журнала.

Таким образом, каждый журнал будет иметь свой собственный раздел www.abc.com/journal/abc, а также отдельный раздел для администрирования сайта. Как я могу сделать ERD, которая поддерживает установленные параметры для каждого журнала, установленного каждым администратором.

В настоящее время я использую MySQL Workbench.

1 Ответ

3 голосов
/ 27 февраля 2012

Ну, для начала, создайте таблицы, исходя из того, что, как вы ожидаете, пользователь заполнит в форме (добавление книг? Make books. Добавление пользователей? Make users).Это ваши "вещи", и это самые легкие вещи для начала.Просто добавьте только ключевые поля.Затем присоединяйтесь к вашим столам.В ходе этого процесса вы обнаружите, что вам нужно будет создать несколько промежуточных таблиц для представления действий, отношений или некоторого прогресса, которые ваши «вещи» пройдут в течение всей своей жизни в базе данных.Что бы вы ни делали, не добавляйте лишние поля в свои таблицы, пока они не будут связаны так, чтобы вам было удобно на них смотреть.Это помогает, потому что вы будете сохранять поля минимальными, а таблицы будут выглядеть меньше, и вы не будете так отвлекаться, глядя на ERD.

Я не могу опубликовать вам полную схему.Это было бы глупо, и тонна работы для нас обоих, так как я должен был бы задать вам все вопросы, которые вы должны были бы задать в любом случае.Надеемся, что эти указатели помогут вам построить собственную систему самостоятельно.

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

Поскольку вам нужна только одна указанная функция, я помогу.

Вы бы действительнонужны только две таблицы - preferences и journal_preferences.Поскольку у одного журнала может быть много предпочтений, а предпочтение может принадлежать более чем одному журналу, вам потребуется эта специальная промежуточная таблица journal_preferences.Для работы journal_preferences нужны только два поля: journal_preferences.journal_id и journal_preferences.preference_id.

Итак, скажем, у нас есть это:

SELECT * FROM journal_preferences;

journal_id    preference_id
==========    =============
1             2
1             3
1             5
2             1
2             2

Это, конечно, ссылка на preference_id # 2, 3 и 5 для первого журнала, ипервое и второе предпочтения для второго журнала.

SELECT preference_id, preference_name from preferences;

preference_id        preference_name
=============        ===============
1                    auto-post to facebook
2                    auto-post to google plus
3                    auto-post link to twitter
4                    auto-post to rss feed
5                    is hidden                  

и так далее.Таким образом, вы можете предоставить журналам максимум возможностей и при этом сохранить минимальные затраты на хранение.

Некоторым предпочтениям нужно значение.Эта таблица может работать, если настройки включены или выключены, но для значений, как ее можно изменить?

Вам нужно только указать preference_value:

pref_id   pref_name                   pref_value  pref_value_code
=======   =========                   ==========  ===============
1         auto-post to facebook       1           BLN
2         auto-post to google plus    0           BLN                 
3         auto-post link to twitter   1           BLN
4         auto-post to rss feed       0           BLN
5         is hidden                   0           BLN
6         post_as_new                 720         HRS

1 и 0, в данном случае, являются логическими кодами для True и False.

Также предпочтения сохраняются в логике приложения?Это означает, что приложение выяснит, как сохранить идентификатор предпочтения и его значение для этого конкретного идентификатора журнала?в таблице

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

SELECT * FROM preference_values;

preference_value_id   preference_value_code  preference_value_description
===================   =====================  ============================
1                     BLN                    boolean
2                     HRS                    hours
...