ISBN используются в качестве первичного ключа, теперь я хочу добавить незабываемые вещи в БД - должен мигрировать в EAN?

StackOverflow https://stackoverflow.com/questions/2610000

Вопрос

Я построил базу данных инвентаризации, где номера ISBN являются основными ключами для элементов. Это отлично работало некоторое время, так как предметы были книги. Теперь я хочу добавить не книги. Некоторые из не книг имеют EANS или ISSNS, некоторые нет.

Это в PostgreSQL с приложениями Django для API Frontend и JSON, а также несколько поддерживающих инструменты командной строки Python для управления. Представленные предметы в основном книги и художественные отпечатки, некоторые из которых являются самооставленными.

Что приятно использовать ISBNS в качестве первичных ключей, заключается в том, что в верхней части реляционной целостности вы получаете много удобных утилит для проверки ISBN, автоматически просматривая отсутствующую или дополнительную информацию о книжных элементах, многие из которых я использовал Отказ Некоторые такие инструменты не имеют полки (Pyisbn, Pyaws и т. Д.) И некоторые ручной рулоны - я пытался сохранить все эти части приятно и разделить, но вы знаете, как все могут получить.

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

Должен ли я пересматривать все для номеров EAN, или перенесет ISBNS в качестве основных клавиш в целом? Если у кого-то есть какая-то опыт работы с этими системами, я бы хотел услышать об этом, ваш совет приветствуется.

Это было полезно?

Решение

Если вы используете ISBN-10s, то вам определенно следует мигрировать на что-то еще, так как они уже устарели. Вы можете легко взять ISBN-10 и превратить их в ISBN-13S (см. Википедия), что, я думаю, это совместима в ОИН (опять же, см. Википедия), но поскольку The_lotus предполагает, что, вероятно, лучше иметь какой-то автоматическое увеличение целого числа без внешнего значения в качестве первичного ключа, а затем индексировать на EAN / ISBN / ETC.

Другие советы

Я не знаю Postgres, но обычно ISBM будет уникальным индексом, но не основным. Лучше иметь целое число в качестве основного / иностранного ключа. Таким образом, вам нужно только добавить новую поле EAN / ISSN как оттудаваемые.

Я согласен с The_lotus, не в последнюю очередь, потому что ISBN является низким выбором для первичного ключа

Данные мудрые, это может быть недостаточно уникальным. Если кластеризован, это довольно широкое и не числовое

Пример

Простое решение (хотя, хотя, возможно, хорошее значение) было бы использование (ISBN, название) или (ISBN, автор), который должен в значительной степени гарантировать уникальность. Идеология велика, но практичность также служит цели.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top