2015-06-04 10 views
0

Ищу немного советов о том, как приступить к таблице, мы импортирующей данные регистра в из другого отдела:
Составной первичный ключ против автоинкрементируемого Первичный ключ

Id CreationDate    ClosedDate LastUpdateDate   Name         Description   
DE5838 2015-06-02 06:14:11.11  NULL  2015-06-02 06:19:33.33 Look UP : Should be updated ...  Description : This is not a defect…   
DE5834 2015-06-01 16:16:03.03  NULL  2015-06-01 16:24:19.19 Sync error for Ultimate packages... We are getting an error ....   
DE5822 2015-06-01 10:37:10.10  NULL  2015-06-01 10:37:10.10 Terminal subscription has expired... For given terminal serial number…    
DE5818 2015-06-01 09:53:44.44  NULL  2015-06-01 09:53:44.44 No Option Code…      Allie pulled the report....   

Для совсем немного (и без значительного определения данных из внешнего отдела) мы обрабатывали поле ID как ПК. Только теперь мы начинаем видеть, что другой отдел перерабатывал эти идентификационные номера (Я знаю, я знать - ДЕЙСТВИТЕЛЬНО Плохая идея).
Итак, что нам остается, это данные, которые мы пытаемся импортировать, но наша таблица не принимает их, поскольку уникальный идентификатор уже назначен для данных случая.

Я думаю, что хорошим решением было бы сменить ПК на композитный с идентификатором и CreationDate (который, по нашему мнению, может быть способом, которым внешний отдел создает данные), или я мог бы добавить auto-incremented ID field и назначить это как уникальный идентификатор для всех данных, которые у нас уже есть.

Но поскольку это унаследованный беспорядок, с которым я недавно вошел, я ищу любые советы о том, как это сделать.

+0

Я лично использовал бы поле идентификации, если не знаю, факт, что ПК состоит из столбцов, которые, как я думаю, он делает. –

+0

@TabAlleman, И они использовали разные уникальные идентификаторы для своих данных, я уверен, что это не имеет значения, которое я использую в будущем. Думаю, мне интересно, можно ли реализовать один из вариантов для ID. Я имею в виду, что с новым полем ID я добавляю столбец, но с составным я изменяю PK-мысли по этому поводу? –

+0

Существуют определенные запросы, которые вам, возможно, потребуется написать в один день, что будет проще, если у вас есть один столбец идентификаторов. Кроме этого, я не могу думать о большой разнице между ними. –

ответ

1

Создание составного ключа не только позволит вам изменить индекс, но и все таблицы, которые ссылаются на первичный ключ, также должны будут добавить дополнительный столбец. Я бы рекомендовал добавить в таблицу идентификатор. Переименуйте свое текущее поле ID в нечто вроде ReferenceNumber. Затем обновите все внешние ссылки в других таблицах, чтобы использовать новый идентификатор. Затем вы можете преобразовать поля внешнего ключа, а также быть целыми полями. Это в конечном итоге сэкономит место в вашей базе данных и, вероятно, приведет к более быстрым объединениям в будущем.

Тогда вам также необходимо убедиться, что какие-либо интерфейсы обновлены, чтобы выполнять поиск с помощью ReferenceNumber/dateor нового идентификатора.

Смежные вопросы