Зачем использовать первичные ключи? - PullRequest
4 голосов
/ 02 февраля 2010

Какие первичные ключи используются помимо идентификации уникального столбца в таблице? Разве это не может быть сделано простым использованием ограничения автоинкремента для столбца? Я понимаю, что PK и FK используются для связи разных таблиц, но разве это нельзя сделать, просто используя join?

В основном, что делает база данных для повышения производительности при объединении с использованием первичных ключей?

Ответы [ 6 ]

5 голосов
/ 02 февраля 2010

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

2 голосов
/ 02 февраля 2010

Поставщики СУБД обычно оптимизированы для работы с таблицами, имеющими первичные ключи. Большинство хранит статистику, которая помогает оптимизировать планы запросов. Эти статистические данные очень важны для производительности, особенно для больших таблиц, и они не будут работать без первичных ключей, и вы получите непредсказуемое время ответа на запрос.

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

1 голос
/ 03 февраля 2010

В Microsoft Access, если у вас есть связанная таблица, скажем, с SQL Server, исходная таблица должна иметь первичный ключ для того, чтобы связанная таблица была доступна для записи. По крайней мере, так было с Access 2000 и SQL Server 6.5. Это может отличаться от более поздних версий.

1 голос
/ 02 февраля 2010

Вы можете присоединиться без первичного ключа в запросе, однако у вас должен быть первичный ключ, определенный для обеспечения ограничений целостности данных, по крайней мере, для SQL Server. (Иностранные ключи и т. Д.)

Кроме того, вот вам интересное чтение по Первичные ключи .

1 голос
/ 02 февраля 2010

Некоторые PK являются просто автоматически увеличиваемым столбцом. Кроме того, вы обычно присоединяетесь к ИСПОЛЬЗОВАНИЮ PK и FK. Там должно быть какое-то отношение, чтобы сделать соединение. Кроме того, большинство СУБД автоматически индексируют PK по умолчанию, что повышает производительность соединения, а также запрашивает определенную запись на основе идентификатора.

0 голосов
/ 26 апреля 2014

Ключи о целостности данных, а также идентификации. Уникальность ключа гарантируется наличием в базе данных ограничения на сохранение «плохих» данных, которые в противном случае нарушили бы ключ. Тот факт, что правила целостности данных гарантированы таким образом, является именно тем, что делает ключ пригодным для использования в качестве идентификатора. Это касается любого ключа. Один ключ на таблицу по соглашению называется «первичным» ключом, но это не делает другие альтернативные ключи менее важными.

На практике нам необходимо обеспечить соблюдение правил уникальности для всех типов данных (не только для чисел), чтобы удовлетворить требования к качеству и удобству использования данных.

...