【问题标题】:stuck on database design for user management app坚持用户管理应用程序的数据库设计
【发布时间】:2015-06-25 10:50:50
【问题描述】:

我正在尝试编写一个用户管理应用程序,但对如何正确构建数据库感到困惑。

我认为数据库设计的结构应该是这样的:

用户

  • user_id
  • 名字
  • 姓氏
  • 电子邮件

帐户

  • account_id
  • ldap_access
  • drupal_access
  • billing_app_access
  • facebook_access

注意事项

  • note_id
  • 说明
  • 添加日期

而且我相信映射会是这样的:

一个用户可以拥有一组帐户 (1:1)

一组帐户可以有多个用户 (1:m)

一组账户可以有很多笔记(1:m)

许多笔记可以有许多帐户集(m:m)

这是构建数据库的正确方法吗?我真的很困惑,因为我希望应用程序字段是该特定用户的布尔值真/假。 (如果他们在那里有一个帐户),并且注释将对应于帐户数据库中的每个字段。 (即:note_id:1 对应用户 johndoe,应用程序:facebook,note_description = "用户不再拥有 facebook")

这有意义吗?

任何帮助将不胜感激!

【问题讨论】:

  • 哇,尝试一些建模工具,甚至 mspaint 比文本更好:) 你打算在这个基地保留多少用户?我觉得这太复杂了——记住KISS原理,否则以后会给你带来很多麻烦
  • 对那个 Silx 很抱歉,它将有大约 300 个用户。您是在说 KISS 可以在一张桌子上完成吗?
  • 你是什么意思,One set of accounts can have many users (1:m)?如果 user-account 是 1-1,猜猜看:account-user 也是 1-1...
  • 1:1 映射总是听起来有点可疑。看看accounts 表,我不确定它的模型是否正确。如果将来需要添加一些神奇、神秘的第五种帐户类型怎么办?
  • 如果您假设您的服务列表可能会更改,即您稍后将添加 stackoverflow_access 列,那么一个表不是一个好主意,最好有另一个名为 service (id, name) 的表,如果您计划每个服务都有一个注释 - 用户那么你应该忘记这张表,如果你需要完整的更改历史记录保留它,我会在几秒钟内给你我的例子

标签: database database-design relational-database database-schema


【解决方案1】:

可能是这样的:

我还是不明白你的所有需求。

【讨论】:

  • 嗨 Silx,这似乎是最好的方法!我真的感谢您在这方面的帮助。意义重大!
【解决方案2】:

我更喜欢这种设计(用于 Windows 或 Oracle 等许多系统)

表 用户 用户角色 角色 使用权 应用 注意(仍然想知道这是做什么用的)

如果您有许多具有相似特征的用户,则该角色很有用。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2011-10-22
    • 1970-01-01
    • 2014-08-15
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多