В MySQL, если есть таблица «многие ко многим», я должен создать столбец auto-incr как PK или использовать уникальный столбец с несколькими столбцами как PK? и почему? - PullRequest
0 голосов
/ 05 июля 2019

для примера, имеет ли таблица отношений курса, идентификатор студента и идентификатор курса мультиуникальные, если я создаю эту таблицу отношений, должен ли я использовать столбец автоинкрекции в качестве PK, или использовать идентификатор студента и идентификатор курса в качестве multi-PK?

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Это вопрос мнений, но я вставляю синтетический первичный ключ (идентификатор с автоматическим приращением) почти в каждую создаваемую мной таблицу, включая таблицы связей / соединений.

Почему? Вот несколько причин:

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

В качестве примера третьего пункта у вас может быть таблица attendance, в которой - по дням - записывается, посещал ли учащийся класс, в который он / она зачислен. Это может относиться к таблице зачисления.

0 голосов
/ 05 июля 2019

Некоторые люди добавляют столбец автоинкремента как PK только для каждой таблицы.

Но я считаю, что хорошо иметь многоколонный PK в случае, когда таблица представляет собой таблицу отношений между двумя илибольше таблиц.

С другой стороны, требуется больше усилий для удаления записи таблицы с несколькими столбцами PK, так как вам нужно указать все столбцы в столбце с несколькими столбцами.

Также проверьте, нет ли проблем в вашем технологическом стеке (языке программирования) с multi-column-PK.

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