Database design 数据库建模问题-需要根据用户类型取消挂起不同的数据

Database design 数据库建模问题-需要根据用户类型取消挂起不同的数据,database-design,Database Design,对于根据所选用户的类型取消挂起的用户注册过程,最佳的数据库模型是什么?是否需要某些字段 例如: 用户类型A要求:姓名、电子邮件、出生日期和性别 用户类型B要求:公司名称、联系人、电子邮件、N.员工 我认为最常见的方法是创建一个包含所有这些字段的表,并使它们允许NULL 你们有什么建议吗?我以前也做过同样的事情。只要存储客户类型,就不难获得正确的详细信息 您可以考虑2个表,如果有一个表比另一个表大得多,可以使用视图来合并它们,尽管客户类型上的索引会做很多相同的事情。我所说的“大致相同”是指使一种类

对于根据所选用户的类型取消挂起的用户注册过程,最佳的数据库模型是什么?是否需要某些字段

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

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


你们有什么建议吗?

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

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


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

您可以创建一个包含任何公共字段的基本“用户”表,以及其他挂起User(带有FK)到基本User.ID的表。如果没有公共字段,那么最好只使用不同的表,而不是一个表中有一堆可为空的字段。

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

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

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

第二种选择是不使用该字段,并依赖于特定表中有一条记录来表示该类型,但这是相当危险的