数据库建模问题 - 根据用户类型需要不同的数据

时间:2009-04-09 04:06:19

标签: database-design

用于用户注册过程的最佳数据库模型是什么,该过程会根据所选用户的类型进行更改,某些字段是否必需。

实施例: 用户类型A要求:姓名,电子邮件,出生日期和性别 用户类型B要求:公司名称,联系人,电子邮件,N。员工

我认为最常见的是创建一个包含所有这些字段的表,并使它们允许NULL。

你们会建议什么?

3 个答案:

答案 0 :(得分:1)

您可以创建一个包含任何公共字段的基本“用户”表,以及将具有FK的用户挂起到基本User.ID的其他表。如果没有公共字段,那么只有不同的表可能是有意义的,而不是一个包含一堆可空字段的表。

答案 1 :(得分:1)

为了保持一致性,最好为用户提供一个“主表”,其中唯一的字段将是两种类型的用户共同的唯一用户标识符(例如,ID,​​SSN或其他)。

然后由您决定如何表示专业化。

一个选项是在该表中有第二个字段表示类型,然后是另外两个包含详细信息的表,每个表对应一种类型。查询时,如果用户的类型为A,您将确保仅查看TYPE_A表中的用户详细信息。

第二种选择是没有该字段,并依赖于特定表中有记录来表示类型的事实,但这是相当危险的。

答案 2 :(得分:0)

我之前做过同样的事情。只要您存储客户类型,就不难获得正确的详细信息。

如果有一个表比另一个表大得多,你可以考虑使用2个表并使用视图来联合它们,尽管客户类型的索引会做同样的事情。 “大致相同”是指让一种类型的数据快速访问。

将所有数据放在一个表中的好处是你不必进行任何连接来获取数据,这有助于提高查询速度和编写简便性。