в чем отличие Primary key по одному или нескольким полям?

307
14 марта 2017, 13:47

В чем заключается разница в создании Primary key по одному полю или по нескольким полям? И на что это будет влиять? Спасибо!

Answer 1

Если у вас задан РК по 1 полю, то у вас будет только это поле проверяться на уникальность при создании новой записи, если РК будет на несколько полей, то при создании записи или редактировании будет проверять на уникальность все поля что состоят в РК.

Думаю доступно объяснил.

Answer 2

Думаю ваш первый вопрос уже частично содержит в себе ответ. Стоит только добавить что в mysql можно создать индекс по нескольким полям при этом в запросе указывать не все поля(только первые в индексе) и тогда индекс также будет использоваться

На что влияет?:

  • На размер индекса
  • Скорость вставки/обновления (из за проверки на уникальность нескольких полей)
  • Сортировку

Хорошим примером primary key по двум столбцам является связующая таблица отношения "многие ко многим". [book_id|author_id]

Answer 3

Не понимаю, о какой разнице Вы желаете получить информацию, но полагаю, что наиболее правильным будет ответ "Никакой разницы нет".

Я навскидку вижу только 2 аспекта, о которых имеет смысл вспомнить, 2 момента, которые появляются дополнительно при составном ПК.

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

Ну и второй - это возможность ссылочной целостности на такой ПК не по полному значению ключа, а по префиксному значению. Впрочем, полезность этой фичи мне представляется несколько сомнительной.

READ ALSO
libGDX sqlite чтение с БД

libGDX sqlite чтение с БД

Создал БД sqlite с помощью SQLiteStudio, как в libGDX считывать данные из таблицы?

358
Потоки Java и их закрытие

Потоки Java и их закрытие

Зачем нужно закрывать потоки? Читал статью о том как читать/записывать в файл и из него и увидел метод close(), который применялся к читающему,...

216
Как “увидеть” Java

Как “увидеть” Java

Практикуясь в программировании я вижу выполнение программы в Eclipse, на чем ещё можно тестировать Java? Уточню, при создании приложения на Android...

178
Разный цвет текста

Разный цвет текста

Я хочу создать приложение, где много разных текстов и они чередуются в одном экране и в некоторых текстах надо поменять цвет нескольких(не...

201