mysql - 设计具有多用户类型的系统的最佳实践
问题描述
我们的系统有两个主要角色:服务提供者和客户。提供方是医生、护士和护理人员等用户。客户方只是客户。所有用户类型都包含一些常见数据和一些不常见数据。在当前系统中,每个用户类型都有一个表,而对于普通数据,我们有一个用户表。当前系统 ERD 是:
https://s4.uupload.ir/files/screenshot-20210710165449-1007x662_tpwd.png
在当前系统中,我们有很多表,我们考虑减少它们。我们的愿景是将所有用户类型放在一个名为 User 的表中,而不是很多表,我们有更多的列。当然,在某些用户中,我们有不属于此用户类型的空单元格。
我有4个问题:
- 可以将客户和供应商带到像用户这样的表中吗?
- 表中的最佳列数是多少?
- 加载一行有很多列或不同表之间的关系?
- 提供者类型应该是一个单独的表还是可以是一个枚举?
解决方案
最好将所有用户放在一个表中。因此,当您检查登录时,出错的地方就更少了。选择用户时,您不需要使用 SELECT * FROM... 您可以使用 SELECT id, username, name FROM...
不要放太多列,如果搜索或显示用户时有一些不需要的数据,您可以创建辅助表“user_meta”,其中包含 user_id、meta_key、值,其中 user_id 和 meta_key 为主键
由前 2 个答案回答
如果蜜蜂不需要扩展其他类型,则提供者类型应该是枚举。
推荐阅读
- delphi - 如何有条件地编译更新的 Indy 功能?
- javascript - Array#map() 中的异步/等待(Node.js,Express)
- user-interface - 如何解决首次注册用户移动应用
- javascript - 一键组合功能
- python - “执行脚本测试失败”我执行时出错
- c# - 将 Xamarin.Forms 应用与 Azure SQL Server 接口的最佳选择
- django - Django模型上的动态字段
- php - 安全地将隐藏值从 html 传递到 ajax
- laravel - Laravel 存储文件
- python - 简单的 python 正则表达式无法按预期工作