当前位置: 首页 > 面试题库 >

MySQL问题-如何处理多种类型的用户-一个表还是多个表?

靳涵亮
2023-03-14
问题内容

我正在为具有多个“类型”用户的组织设计数据库。首先,我只创建了一个用户表。但是,尽管所有用户共享一些公共信息(名字,姓氏,用户名,密码等),但是每种用户类型都需要一个或两个其他字段,这些字段不适用于所有用户。尽管我可以创建这些附加字段并将其设置为NULL,但我不希望这样做,因为这些字段是外键,并且对我造成了麻烦。

这种情况通常如何处理?

谢谢!


问题答案:

您的直觉是不创建带有大量NULL的大表。从存储/检索/维护的角度以及数据验证的角度来看,这是一个坏主意(稍后会详细介绍)。

两种最常见的缓存:

1)有一个包含所有公共字段的用户表,其中包括“
userType”字段。然后为每个包含额外字段的用户类型创建一个单独的表。所有用户在用户表和一个或多个特定用户类型表中都有一行。这是用于存储和快速登录的最规范和最有效的方法。这也使您可以使用约束和外键来确保每种用户类型的所有必需信息均可用。

2)有一个包含所有公共字段的用户表。拥有另一个名为 UserAttributes之 类的
,该表具有用于userid,key和value的字段。特定用户的任何其他元数据都可以存储在此处。这样做的好处是,不需要任何数据库管理就可以为每种用户类型添加新的用户类型或要存储的元数据。但是,它不允许您在数据库级别进行任何数据验证。



 类似资料:
  • 问题内容: 因此,这更多是一个设计问题。 我有一个主键(例如用户的ID),并且有大量与该用户相关联的信息。 我应该根据信息将多个表细分为几类,还是只有一个表包含许多列? 我过去这样做的方法是拥有多个表,例如,一个表用于应用程序使用情况数据,一个表用于配置文件信息,一个表用于后端令牌等,以使事情看起来井井有条。 最近有人告诉我,最好不要那样做,有一个包含很多列的表也可以。关键是,所有这些列都具有相同

  • 问题内容: 我在MySQL数据库中存储了各种用户详细信息。最初,它是在各种表中设置的,这意味着数据与UserId链接,并通过有时复杂的调用输出,以根据需要显示和操作数据。建立一个新系统,将所有这些表组合成一个大的相关内容表几乎是有意义的。 这会是帮助还是阻碍? 调用,更新或搜索/操作时的速度考虑? 这是我的一些表结构的示例: 用户-用户ID,用户名,电子邮件,加密的密码,注册日期,IP user_

  • 问题内容: 请在问题上需要您的帮助。我的主页上有两个表格,我希望用户在不同的时间填写和提交。我的问题是,我只希望对它们两个都有一个处理页面。通常我可以在单独的页面中执行此操作。但我想知道是否可以在同一页面上进行。 好吧..如果我在操作页面上提交表单A,则不会为表单B的变量提供未定义的索引,该索引尚未提交,当然也不建议使用GET。 感谢您的时间和耐心等待。 问题答案: 这样做并非完全没有听说过。通常

  • 有两张表,分别储存产品信息与检测信息 检测信息表procheck中pro_id关联到产品信息表pro中的id,每个产品对应有多个检测信息记录 我现在需要把某个公司(产品表中company_id)生产的所有产品的最新一次检测报告调出来? 但是得出的结果却是: 全部给我找了出来,而我真正需要的是箭头上的三条即可。 求SQL语句.....

  • 问题内容: 我无法理解与以下情况相关的这种基本机制。 我有一个spring网络应用程序。现在,我将模型自动连接到控制器中。基于url匹配,它将调用相应的方法。我所有的方法都是单例。 现在,当两个用户同时打开应用程序时,spring可以并行运行它们并为他们提供结果。我不明白它怎么做。我的意思是因为bean是单例的,所以必须等到不使用bean或覆盖bean中的数据。但是弹簧工作正常。有人可以用一些类比

  • 在JavaFX中,是否可以从一个类中处理多个事件类型(例如ActionEvent、MouseEvent等),而无需匿名事件处理程序?我尝试了以下操作,但这只是产生了一个编译时错误。