Имеет ли смысл использовать столбец varchar в качестве ссылки на внешний ключ? - PullRequest
0 голосов
/ 11 августа 2011

Имеются две таблицы books и authors, где у каждой из них уже есть уникальный ключ типа varchar, который идентифицирует их по всей моей экосистеме. Имеет ли смысл использовать эти ключи в качестве Foreignkeys в таблице Many-To-Many-Table или я должен изобрести первичный ключ в таблицах authors и books, который имеет тип int, чтобы избежать издержек? Длина уже существующих ключей не превышает 255.

Ответы [ 5 ]

1 голос
/ 11 августа 2011

Я всегда предпочитаю суррогатные ключи.Он защищает вас от неизвестных изменений в будущем, поскольку он не связан с данными приложения.

0 голосов
/ 11 августа 2011

Хотя я также считаю, что int-ключи лучше, я не думаю, что вам следует вносить какие-либо изменения в свои первичные ключи, поскольку они уже работают. Ваши ключи varchar могут иметь смысл, если это, например, коды ISBN для книг. Если он не сломан, не почините .

0 голосов
/ 11 августа 2011

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

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

0 голосов
/ 11 августа 2011

Хорошей идеей является создание нового первичного ключа, поскольку первичный ключ также накладывает ненулевое ограничение.

0 голосов
/ 11 августа 2011

Я думаю, что лучше использовать int key в качестве первичного ключа.Во-первых, вы избежите накладных расходов, во-вторых, вы получите некоторую производительность.

...