我正在为期刊管理和出版系统设计一个 ERD
请记住,我会将作者、编辑和读者作为我的应用程序的用户。以及每个期刊的管理员。
所以每个期刊都有自己的部分 www.abc.com/journal/abc 以及一个单独的站点管理部分。我如何制作一个 ERD 来维护每个管理员为每个日记设置的设置首选项。
我目前正在使用 MySQL Workbench。
最佳答案
好吧,对于初学者来说,根据您希望用户填写表单的内容制作表格(添加书籍?制作书籍
。添加用户?制作用户
)。这些是您的“东西”,并且是最容易入手的东西。但是,只需添加关键字段即可。然后,加入你的 table 。在此过程中,您会发现您需要创建一些中间表来表示您的“事物”在数据库中的整个生命周期中将经历的事件、关系或某些进程。无论您做什么,都不要在您的表中添加多余的字段,直到您以您喜欢的方式将它们链接起来。这会有所帮助,因为您可以将字段保持在最小限度,并且表格会显得更小,从而防止您在查看 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
等等。这样,您就可以为期刊提供最多的选择,同时保持最低的存储成本。
Some preferences need a value. This table might work if the preferences are on or off but for values, how can it be modified?
您只需要指定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
的 bool 代码。
Also are the preferences saved in the application logic? Meaning that the application will figure out to save the prefernce_id and the value against it for that particular journal id? in the table
我指出了了解如何解释该值的可能解决方案。是的,如果需要,您的应用程序将通过查找主表来“知道”可能的值是什么:
SELECT * FROM preference_values;
preference_value_id preference_value_code preference_value_description
=================== ===================== ============================
1 BLN boolean
2 HRS hours
关于mysql - 用户首选项/设置的 ERD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456830/