Возьмите один массивный стол и разбейте его на более мелкие и удобные в обслуживании столы? - PullRequest
1 голос
/ 08 июля 2011

У меня есть эта большая таблица базы данных, которая отслеживает (в настоящее время находится в производстве) медицинское свидетельство человека по: дате истечения срока действия (exp), компании, если она есть в файле и местонахождении цифровой копии. Мы отслеживаем во многих (растущих) категориях, таких как СЛР, СЛР ребенок, AED, Lifeguarding и т. Д ...

Как мне упростить управление и как перенести существующие данные? Я использую Coldfusion Web-приложение под управлением SQL Server 2008.

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

1 Ответ

5 голосов
/ 08 июля 2011

Обратите внимание, что все ваши сертификаты имеют одинаковые повторяющиеся столбцы информации: срок действия, компания, изображение, OnFile?Это большая подсказка, что вам нужна дальнейшая нормализация вашего дизайна.

В идеальном мире (в котором вы можете вносить изменения в схему) я бы создал общую таблицу ученика / сертификации, с этими общими элементами в виде столбцов, внешним ключом другой таблицы, которая перечисляетсертификаты (Water Safety, Wilderness и т. д.) и другой внешний ключ, связывающий студентов с этими сертификатами.Что-то вроде:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...