Могу ли я создать составной ключ с дополнительным символом? - PullRequest
0 голосов
/ 09 марта 2020

Я строю новую БД, используя MySQL для хранения уроков, извлеченных из различных проектов. Когда мы говорим об этом в офисе, мы ссылаемся на уроки по номеру проекта и номеру урока, то есть PR12-81, где PR12 относится к проекту, а 81 относится к конкретному c уроку в рамках этого проекта. Я хочу, чтобы первичный ключ в моей БД также содержал дефис.

При определении составного ключа в SQL я могу сделать так, чтобы он ссылался на проект и урок, но без дефиса, т.е. PR1281. Я также рассмотрел создание отдельного столбца с типом данных CHAR (1), добавление дефиса в каждую строку и учесть, что PK состоит из 3 столбцов.

Есть ли другой способ указать основной ключ для форматирования предпочтительным способом?

1 Ответ

2 голосов
/ 09 марта 2020

Пусть первичным ключом вашей таблицы будет бессмысленное число с автоинкрементом без какого-либо «значения». Затем в этой таблице определите два столбца: project_number и lesson_number. Если эти два значения должны быть уникальными, определите индекс UNIQUE, охватывающий два поля.

Не (!) создайте ключи базы данных, которые будут встраивать в них информацию, даже если бизнес делает так. Если бизнесу необходимо ссылаться на строки типа PR12, пусть будет ... создайте столбец для хранения соответствующего значения или используйте таблицу «один ко многим». Используйте индексы по мере необходимости для обеспечения уникальности.

Обратите внимание (!), Что я сейчас описал четыре столбца:

  1. «Фактический» первичный ключ с автоматическим приращением, который не содержит информации.
  2. Столбец project_number, вероятно, внешний ключ к таблице projects.
  3. То же самое, что lesson_number. (С UNIQUE составной индекс , если необходимо.)
  4. Столбец (или таблица), который содержит «строку, которую использует бизнес».

Со временем деловая практика do меняется. И когда-нибудь вы просто можете ... нет, вы будете ... ... сталкиваться с "используемой бизнесом строкой", которая была неправильно назначена людьми, которые делают такие вещи ! Ваша база данных должна изящно справиться с этим. Схема, которую я описал, - это так называемая третья нормальная форма. Сделайте поиск Google по "нормальным формам", если вы еще этого не сделали.

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