首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计:4种类型的用户,但有不同的功能,分开还是一个表?

数据库设计:4种类型的用户,但有不同的功能,分开还是一个表?
EN

Software Engineering用户
提问于 2014-10-28 14:51:36
回答 3查看 15.2K关注 0票数 1

我有4类用户:

管理员、普通用户、公司、服务提供者

管理员和普通用户共享一些属性(id .first名称、姓氏、电话、邮件),公司和服务提供商也共享一些属性(id .company名称、电话、传真、邮件)。

它们也与应用程序中的其他实体进行交互,以访问诸如post、作业或事件之类的功能或申请它。

把它们都放在一个用户表(如tbl_users )中更好,还是为每个用户创建单独的表更好呢?或添加到两个表中,一个用于(管理员和普通用户),另一个用于(公司和服务提供商)。

这是关于实体属性的一些细节。

EN

回答 3

Software Engineering用户

发布于 2014-10-28 15:04:53

您公开的内容在很大程度上取决于您的应用程序需求。

一个典型的做法是将用户与联系信息分离开来,从而实现最大的灵活性。我还建议将联系人信息数据分解到一个表中。

用户(1,1) - (0,1) Contact_Information

公司(1,1) - (0,1) Contact_Information

服务提供商(1,1) - (0,1) Contact_Information

用户表将包括登录数据和添加的is_admin字段。两个实体之间的链接的存在也会让您具有灵活性,这样一个“真实的人”既可以代表正常的用户,也可以代表公司。

我还建议您阅读如何在数据库-> https://stackoverflow.com/questions/190296/how-do-you-effectively-model-inheritance-in-a-database中对继承建模

票数 2
EN

Software Engineering用户

发布于 2014-10-28 15:04:09

我会将它们都保存在一个表中,并添加一个字段来指示它是哪种类型的用户。您将有一些空白字段(例如admins和普通用户没有传真号码),但这不应该是一个问题,除非您有大量的用户,而且一些字段只用于其中的一小部分。您也可以填空,因为没有理由普通用户不能有传真号码,或者为什么服务提供者不能有名字和姓氏。

如果有必要,您可以拥有一个“用户”表和一个“用户属性”表,但对于少量(即几百)用户来说,这可能不值得。

票数 0
EN

Software Engineering用户

发布于 2014-10-28 21:57:47

除非不同的用户类型在架构中确实有不同的角色,否则将它们保存在一个表中。我将有以下字段:

  • 用户类型(用户、管理员、公司、提供商)
  • 姓名
  • 公司名称

甚至可以将电话号码和地址分成其他表格,允许一个用户拥有多个电话号码和地址(也许一家公司有多个办公室,一个用户有家庭、手机、工作电话等等),尽管从技术上讲,这不是问题的一部分。

重要的是要记住的是,用户类型很容易地表示为表上的一个字段,允许其他表指向任何用户:这会强制一个关系类型。此外,用户可以更改类型,而不需要在表之间映射数据、更新外键等。如果普通用户成为管理员怎么办?如果他在家里工作并融入社会,也许还会再雇佣一名工人呢?在现实世界中,用户更改类型是非常可行的,当然,您的业务规则可能是不同的。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/261137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档