【问题标题】:best practice for designing system with multiple user type设计具有多用户类型的系统的最佳实践
【发布时间】:2021-09-20 11:28:04
【问题描述】:

我们的系统有两个主要角色:服务提供商和客户。提供方是医生、护士和护理人员等用户。客户方只是客户。所有用户类型都包含一些常见数据和一些不常见数据。在当前系统中,每个用户类型都有一个表,而对于普通数据,我们有一个用户表。当前系统 ERD 是:

https://s4.uupload.ir/files/screenshot-20210710165449-1007x662_tpwd.png

在当前系统中,我们有很多表,我们正在考虑减少它们。我们的愿景是将所有用户类型放在一个名为 User 的表中,而不是很多表,我们有更多的列。当然,在某些用户中,我们有不属于此用户类型的空单元格。

我有 4 个问题:

  1. 可以将客户和供应商带到像 User 这样的表中吗?
  2. 表中的最佳列数是多少?
  3. 加载包含大量列的行或不同表之间的关系?
  4. 提供者类型应该是单独的表还是可以是枚举?

【问题讨论】:

  • 您的数据应该是normalized。您拥有标准化数据所需的尽可能多的列。您拥有对数据进行规范化所需的尽可能多的表。

标签: mysql database database-design architecture


【解决方案1】:
  1. 最好将所有用户放在一个表中。因此,当您检查登录时,出错的地方就更少了。选择用户时不需要使用 SELECT * FROM... 可以使用 SELECT id, username, name FROM...

  2. 列不要放太多,如果搜索或显示用户时有一些不需要的数据,可以创建帮助表“user_meta”,分列user_id、meta_key、value,其中user_id和meta_key为主键

  3. 由前 2 个答案回答

  4. 如果蜜蜂不需要扩展其他类型,则提供者类型应该是枚举。

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多