Database 数据库模式设计,具有多个列的表

Database 数据库模式设计,具有多个列的表,database,database-design,rdbms,er-diagrams,Database,Database Design,Rdbms,Er Diagrams,我正在为一个学习者管理系统设计一个模式 我目前有LearnerDetails表,该表存储以下类别的信息。 -登录用户帐户详细信息 -联系方式和家庭地址 -学员的居留相关信息,包括国籍信息、目前留在英国的签证详细信息等 -学习者当前状态利益相关信息 -关于学员当前就业状况的详细信息 我遇到的问题是,当所有这些信息都表示在一个表中时,列数超过70列 我可以做的一件事是,我可以将信息分离到表示上述类别的不同表中,并将这些表与它们的父表LearnerDetails关联为1:1关系 我想知道这是否是一个推

我正在为一个学习者管理系统设计一个模式

我目前有LearnerDetails表,该表存储以下类别的信息。 -登录用户帐户详细信息 -联系方式和家庭地址 -学员的居留相关信息,包括国籍信息、目前留在英国的签证详细信息等 -学习者当前状态利益相关信息 -关于学员当前就业状况的详细信息

我遇到的问题是,当所有这些信息都表示在一个表中时,列数超过70列

我可以做的一件事是,我可以将信息分离到表示上述类别的不同表中,并将这些表与它们的父表LearnerDetails关联为1:1关系

我想知道这是否是一个推荐的方法。 在我看来,1:1关系将代表一个过度规范化的数据库。但如果我不这样做,它将导致一个巨大的水平表作为我的LearnerDetails


如果您能让我知道您的意见/建议,我将不胜感激。

如果规范化要求的话,拥有70个或更多的栏目是没有问题的。您没有提到使用哪种rdbms,但大多数rdbms支持至少255个字段。

如果规范化需要70个或更多列,则没有任何问题。您没有提到使用哪种rdbms,但大多数rdbms至少支持255个字段。

一个表中的许多列本身并没有问题,只要您有5NF或至少3NF


但是,有相当多的例子表明垂直分区(1::1)是有意义的--

一个表中的许多列本身并没有什么问题,只要有5NF,或者至少3NF


但是,有相当多的例子表明垂直分区(1::1)是有意义的--

列有多宽?如果您的记录比页面大,那么拥有一个宽表是一个有待解决的性能问题

地址通常不是与个人的1-1关系。是的,大多数人只有一个,但不是每个人都有。研究所的学生有时会和他们离异的父母一起做兼职。我建议把地址分开。如果您存储电话号码,这两个号码通常不是1-1关系。您可能有一个大提琴电话、一个电话号码、一个业务号码和一个家庭电话(固定电话)号码。任何有可能最终需要处于一对多关系中的事物都应该从一开始就分离出来


如果您确实要分离表并希望强制执行一对一关系,那么you可以使用父表中的id作为子表中的PK,或者为表设置不同的PK,并为FK字段设置唯一索引。如果没有在数据库中强制执行的方法,请不要设置一对一的关系。

列的宽度是多少?如果您的记录比页面大,那么拥有一个宽表是一个有待解决的性能问题

地址通常不是与个人的1-1关系。是的,大多数人只有一个,但不是每个人都有。研究所的学生有时会和他们离异的父母一起做兼职。我建议把地址分开。如果您存储电话号码,这两个号码通常不是1-1关系。您可能有一个大提琴电话、一个电话号码、一个业务号码和一个家庭电话(固定电话)号码。任何有可能最终需要处于一对多关系中的事物都应该从一开始就分离出来


如果您确实要分离表并希望强制执行一对一关系,那么you可以使用父表中的id作为子表中的PK,或者为表设置不同的PK,并为FK字段设置唯一索引。如果没有在数据库中强制执行的方法,请不要设置一对一的关系。

DBMS是SQL Server 2008。是的,它支持我需要的列的数量。我基本上想知道的是这是否是一个最佳实践。我应该有多个较小的表和相关信息(与父表的关联为1:1),还是应该有一个水平较大的表。(仅从数据库设计的角度来看,不考虑任何与查询优化相关的非规范化)DBMS是SQL Server 2008。是的,它支持我需要的列的数量。我基本上想知道的是这是否是一个最佳实践。我应该有多个较小的表和相关信息(与父表的关联为1:1),还是应该有一个水平较大的表。(仅从数据库设计的角度出发,不考虑任何与反规范化相关的查询优化)