2010-02-02 7 views
3

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

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

ответ

4

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

+0

Конечно, вам все равно понадобится сканирование таблицы, если вы не используете ПК в предложении where. – ScaryAardvark

+0

Да ... вы правы ... и поэтому я :-) ..... если у вас есть ПК (который по умолчанию создает кластерный индекс), вы никогда не получите сканирование таблицы (поскольку кластерный индекс содержит все данные самой таблицы) ... вы, тем не менее, получите сканирование индекса, если предложение WHERE не распространяется – SQLMenace

1

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

2

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

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

1

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

Кроме того, здесь интересен для вас читаемый номер Primary Keys.

1

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

0

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

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