用户首选项/设置的ERD

时间:2012-02-26 20:25:07

标签: mysql class database-design dns erd

我正在为期刊管理和出版系统设计ERD

请记住,我会将Author,Editor,Reader作为我的应用程序的用户。以及每个期刊的管理员。

因此,每个期刊都有自己的部分www.abc.com/journal/abc以及单独的网站管理部分。如何制作ERD以维护每个管理员设置的每个日记的设置首选项。

我目前正在使用MySQL Workbench。

1 个答案:

答案 0 :(得分:3)

嗯,对于初学者,根据您希望用户在表单中填写的内容来制作表格(添加图书?制作books。添加用户?制作users )。这些是你的“事物”,并且是最容易开始的事情。但是,只需添加关键字段。然后,加入你的表格。在此过程中,您将发现您需要创建一些中间表来表示您的“事物”在其数据库的整个生命周期中将经历的活动,关系或某些进展。无论你做什么,都不要在桌面上添加多余的字段,直到你以一种你看得舒服的方式将它们链接起来。它会有所帮助,因为你会保持最小的字段,并且表格看起来会更小,这样可以防止你在查看ERD时分心。

我无法发布完整的架构。那对我们两个人来说都是愚蠢的,并且是的工作,因为我不得不问你应该问的所有问题。希望这些指针可以帮助您自己构建自己的系统。

修改

由于您只需指出一个功能,我会帮忙。

您真的只需要两个表 - preferencesjournal_preferences。由于一个期刊可以有多个首选项,并且首选项可以属于多个期刊,因此您需要特殊的中间表journal_preferencesjournal_preferences只需要两个字段即可:journal_preferences.journal_idjournal_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是TrueFalse的布尔码。

  

还是保存在应用程序逻辑中的首选项?这意味着应用程序将找出为该特定日志ID保存prefernce_id及其值?在表格中

我指出了一个可能的解决方案,知道如何解释这个价值。是的,如果需要,您的应用程序将通过查找主表来“知道”可能的值是什么:

SELECT * FROM preference_values;

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