mysql - 用户首选项/设置的 ERD

标签 mysql class database-design dns erd

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

请记住,我会将作者、编辑和读者作为我的应用程序的用户。以及每个期刊的管理员。

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

我目前正在使用 MySQL Workbench。

最佳答案

好吧,对于初学者来说,根据您希望用户填写表单的内容制作表格(添加书籍?制作书籍。添加用户?制作用户)。这些是您的“东西”,并且是最容易入手的东西。但是,只需添加关键字段即可。然后,加入你的 table 。在此过程中,您会发现您需要创建一些中间表来表示您的“事物”在数据库中的整个生命周期中将经历的事件、关系或某些进程。无论您做什么,都不要在您的表中添加多余的字段,直到您以您喜欢的方式将它们链接起来。这会有所帮助,因为您可以将字段保持在最小限度,并且表格会显得更小,从而防止您在查看 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                  

等等。这样,您就可以为期刊提供最多的选择,同时保持最低的存储成本。

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 是表示 TrueFalse 的 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/

相关文章:

php - fputcsv 创建文件但下载为空

php - 将变量转换为字符串

class - VBA 使用一个类作为另一个类的属性

java - 从文本文件输入对象数组

postgresql - 存储多语言字符串的最佳实践

php - 将 PHP 变量值与 MySQL 列值进行比较

php - 在非对象上调用成员函数 fetch_assoc() - 非常确定 sql 查询是正确的

c++ - 如何从包含的类中执行函数

MySQL删除语句

数据库设计 : Likes table