Sql 拿一张大桌子,把它分成更小更容易维护的桌子?
我有一个大的数据库表,跟踪目前正在生产的产品,一个人的医疗证明:日期过期exp,公司,如果我们有它的文件和一个数字副本的位置。我们跟踪许多成长类别,如心肺复苏、儿童心肺复苏、AED、救生员等 如何使其更易于管理,以及如何通过网络迁移现有数据?我是运行SQLServer2008的coldfusion web应用程序Sql 拿一张大桌子,把它分成更小更容易维护的桌子?,sql,sql-server-2008,Sql,Sql Server 2008,我有一个大的数据库表,跟踪目前正在生产的产品,一个人的医疗证明:日期过期exp,公司,如果我们有它的文件和一个数字副本的位置。我们跟踪许多成长类别,如心肺复苏、儿童心肺复苏、AED、救生员等 如何使其更易于管理,以及如何通过网络迁移现有数据?我是运行SQLServer2008的coldfusion web应用程序 CREATE TABLE [dbo].[mod_StudentCertifications]( [certificationID] [int] IDENTITY(1,1) NO
CREATE TABLE [dbo].[mod_StudentCertifications](
[certificationID] [int] IDENTITY(1,1) NOT NULL,
[profileID] [int] NOT NULL,
[cprAdultExp] [datetime] NULL,
[cprAdultcompany] [nvarchar](250) NULL,
[cprAdultImage] [nvarchar](4000) NULL,
[cprAdultOnFile] [bit] NULL,
[cprInfantChildExp] [datetime] NULL,
[cprInfantChildcompany] [nvarchar](250) NULL,
[cprInfantChildImage] [nvarchar](4000) NULL,
[cprInfantChildOnFile] [bit] NULL,
[cprFPRExp] [datetime] NULL,
[cprFPRcompany] [nvarchar](250) NULL,
[cprFPRImage] [nvarchar](4000) NULL,
[cprFPROnFile] [bit] NULL,
[aedExp] [datetime] NULL,
[aedcompany] [nvarchar](250) NULL,
[aedImage] [nvarchar](4000) NULL,
[aedOnFile] [bit] NULL,
[firstAidExp] [datetime] NULL,
[firstAidcompany] [nvarchar](250) NULL,
[firstAidImage] [nvarchar](4000) NULL,
[firstAidOnFile] [bit] NULL,
[emtExp] [datetime] NULL,
[emtcompany] [nvarchar](250) NULL,
[emtImage] [nvarchar](4000) NULL,
[emtOnFile] [bit] NULL,
[waterSafetyInstructionExp] [datetime] NULL,
[waterSafetyInstructioncompany] [nvarchar](250) NULL,
[waterSafetyInstructionImage] [nvarchar](4000) NULL,
[waterSafetyInstructionOnFile] [bit] NULL,
[bloodPathogensExp] [datetime] NULL,
[bloodPathogenscompany] [nvarchar](250) NULL,
[bloodPathogensImage] [nvarchar](4000) NULL,
[bloodPathogensOnFile] [bit] NULL,
[oxygenAdminExp] [datetime] NULL,
[oxygenAdmincompany] [nvarchar](250) NULL,
[oxygenAdminImage] [nvarchar](4000) NULL,
[oxygenAdminOnFile] [bit] NULL,
[lifegaurdingExp] [datetime] NULL,
[lifegaurdingcompany] [nvarchar](250) NULL,
[lifegaurdingImage] [nvarchar](4000) NULL,
[lifegaurdingOnFile] [bit] NULL,
[wildernessResponderExp] [datetime] NULL,
[wildernessResponderCompany] [nvarchar](250) NULL,
[wildernessResponderImage] [nvarchar](4000) NULL,
[wildernessResponderOnFile] [bit] NULL,
[certNotes] [nvarchar](4000) NULL,
[isActive] [bit] NULL,
[certClassRegistered] [bit] NULL,
[lifeguardInstrcutorExp] [datetime] NULL,
[lifeguardInstrcutorCompany] [nvarchar](250) NULL,
[lifeguardInstrcutorImage] [nvarchar](4000) NULL,
[lifeguardInstrcutorOnFile] [bit] NULL
请注意,您的所有证书都有相同的重复信息列:过期、公司、图像、OnFile?这是一个很大的线索,说明您需要进一步规范化您的设计 在一个可以更改模式的完美世界中,我将创建一个通用的学生/证书表,将这些公共元素作为列,一个外键指向另一个表,该表列举了水安全、荒野等证书,另一个外键将学生链接到这些证书。比如:
请注意,您的所有证书都有相同的重复信息列:过期、公司、图像、OnFile?这是一个很大的线索,说明您需要进一步规范化您的设计 在一个可以更改模式的完美世界中,我将创建一个通用的学生/证书表,将这些公共元素作为列,一个外键指向另一个表,该表列举了水安全、荒野等证书,另一个外键将学生链接到这些证书。比如:
是否有一种简单的方法来移动数据?这取决于移动数据时预期会发生什么。生成新表后生成脚本很简单,但是应用程序是否可以脱机,以便在数据移动时用户不会影响更改?移动数据可以脱机。@Snow_Mac:那么,正如Aaron所指出的,移动数据的脚本应该很简单。更大的痛苦将是重构现有代码以使用新的模式设计。是否有一种简单的方法来移动数据?这取决于移动数据时预期会发生什么。生成新表后生成脚本很简单,但是应用程序是否可以脱机,以便在数据移动时用户不会影响更改?移动数据可以脱机。@Snow_Mac:那么,正如Aaron所指出的,移动数据的脚本应该很简单。更大的痛苦将是重构现有代码以使用新的模式设计。