2016-12-09 7 views
1

Я создаю новую базу данных и имею дилемму: у меня есть таблица авторов. Мои требования заключаются в том, что они должны содержать столбцы firstName и lastName, и я не должен допускать, чтобы два автора имели одно имя firstName и lastName.SQL: строка PK (возможно, композитная) или auto_number искусственная ПК с уникальным ограничением?

Моей первой идеей было сделать firstName и lastName составной pk, и все!

Но, я привяжу эту таблицу к другим таблицам, чтобы облегчить мне жизнь, хотя я использую int auto_increment PK и создаю составной UC firstName и lasteName.

Мой вопрос обычно: допустим, у меня есть стол для людей, и я могу использовать SSN как ПК. Если я привяжу эту таблицу к n таблицам, дублирующими значение SSN в дочерних таблицах, может потреблять больше памяти, чем использование int auto_increment PK и создание UC столбца SSN?

Какой подход лучше, и когда использовать что?

С наилучшими пожеланиями,

ответ

0

Лучший подход, чтобы сохранить ваш первичный ключ, отделенный от остальной части таблицы, бизнес-логики. Кроме того, быстрее индексировать отдельную ПК из-за индексации, она намного лучше для производительности, проще поддерживать и связывать таблицы друг с другом, а также обеспечивает более быстрое выполнение операторов в таблице.

Лучше всего пойти на столбец PK, например id, после чего у него есть отдельное ограничение UNIQUE для firstName-lastName.

+0

Но в примере SSN? Я имею в виду, когда у меня есть только одна компиляция, я могу пойти с тем, чтобы сделать SSN PK правильным? – adragomir

+0

SSN - номер социального страхования, не так ли? –

+1

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