2013-11-16 3 views
0

Я пытался выяснить разницу между первичным ключом и ROWKEY. Я смог понять, что первичный ключ уникален для каждой строки, но мои исследования ROWKEY также намереваются дать аналогичный смысл.Значение ROW KEY в таблице базы данных

Может ли кто-нибудь указать краткое представление о значении ключа строки в таблице базы данных?

ответ

2
  • Основной ключ является объявленным идентификатором строки в таблице, когда разработчик разрабатывает таблицу. В каждой строке значение столбца первичного ключа должно быть уникальным среди всех строк в таблице.
  • Строка строки (также известная как идентификатор строки) является внутренним идентификатором базы данных для строки. Он может действовать только в течение короткого периода времени, например. текущей транзакции. Причина этого заключается в том, что база данных может перемещать строку на диске, операцию, которая не будет видна, если вы ссылаетесь на строку по первичному ключу, но может вызвать ошибки, если вы ссылались на нее по строке, которая имела бы изменено в связи с изменением местоположения.
  • Родительский ключ - это другое слово для внешнего ключа. Это ссылка на первичный ключ в другой таблице.

Пример: таблица заказов и таблица клиентов.

create table orders(order_id varchar2(253), order_customer_id number); 
create table customers(customer_id number, name varchar2(255)); 

Первичный ключ orders является order_id. Первичный ключ customers: customer_id. order_customer_id является родительским ключом или, другими словами, внешним ключом, который ссылается на первичный ключ таблицы customer. Строки строк не определены явно - они автоматически предоставляются базой данных.

Сообщите мне, если вы все еще не понимаете его.

+0

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

+0

Да, это всего лишь временный ключ, по крайней мере, в Oracle. Нет, в реляционной базе данных база данных выбирает, куда вставлять строку, а не вы. У вас нет контроля над тем, где строка хранится в таблице. Если вам нужны данные в определенном порядке, вы используете 'ORDER BY' в ваших SQL-запросах. Чтобы делать эффективные вставки нескольких строк, вы можете делать массовую вставку, но это не указывает клавиши строк, это просто быстрый способ передачи данных в СУБД. –

+0

Например: у меня есть 10 записей в таблице с назначенным первичным ключом, тогда все 10 строк имеют ключ строки, назначенный автоматически базой данных. В случае, если я вставляю новую строку, тогда строки строк могут измениться, если строка вставлена ​​случайным образом. Но первичные ключи остаются такими же. Это правда? –

Смежные вопросы