Ну, для начала, создайте таблицы, исходя из того, что, как вы ожидаете, пользователь заполнит в форме (добавление книг? 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