2010-03-23 3 views
-1

В чем разница между первичным ключом и RRN?Первичный ключ против RRN

+0

Это не так, конечно. Однако этот вопрос может использовать больше контекста. –

+0

@Phenom, на это был дан ответ в вашем последнем вопросе: http: // stackoverflow.com/questions/2497729/records-in-a-file – paxdiablo

+0

Ответ там не так ясен, как этот. – neuromancer

ответ

2

Первичный ключ однозначно и однозначно идентифицирует данную запись (в таблице базы данных/представлении) или заданной строке (в текстовом файле). Хотя для первичного ключа может быть удобно использовать одно поле (один «столбец»), также возможно, чтобы первичный элемент основывался на нескольких полях/столбцах.

RRN является аббревиатурой, который может быть либо понимать как "Запись Row Номер" или "Относительная Рядное Количество". Обычно номер строки записи - это число, обычно (но не обязательно), назначенное простым приращением (на основе значения предыдущего назначенного RRN), которое добавляется к другим полям/столбцам определенного типа записи , Многие СУБД предоставляют функции поддержки таких «автоматически увеличивающихся» или, как правило, автоматически назначаемых RRN.

Как определено выше, RRN может использоваться как первичный ключ.

Существует множество преимуществ - и недостатков - наличие [семантически недействительного] RRN в отличие от первичного ключа на основе значений [одного или нескольких] атрибутов (поля или столбца) записи. Это, вероятно, обсуждается в другом вопросе SO; вот несколько наиболее распространенных аргументов:

  • Первичный ключ может быть изменен, RRN является «неизменным».
    Например, если первичный ключ является номером социального обеспечения (SSN), запись может быть в какой-то момент обновлена, поскольку SSN был первоначально введен с ошибкой опечатки. Когда/если это произойдет, все связанные записи, которые используют этот SSN для ссылки на обновленную запись, также должны быть обновлены. Если бы эти связанные записи использовали [несущественные] RRN, они были бы невосприимчивы к возможным изменениям значения SSN.
  • Когда нет «естественного» Первичного ключа на основе одного столбца, это может быть более удобно использовать RRN
  • индивидуальных номера регистрации, как правило, короче
  • Связанных таблиц и списки, которые относятся к первоначальным записям путем первичный ключ без RRN, как-то дублирует основную информацию. Это может быть как преимуществом, так и недостатком: можно знать значение базового поля без необходимости искать его в исходной таблице: хорошо, если вы хотите, чтобы связанная таблица содержала такую ​​информацию, плохая, если вы этого не сделаете (например: Social Защитный номер можно считать чувствительным и т. Д.)
  • RRN гарантированно уникальны (если не считать ошибки с логикой RRN-генерации), в результате чего ключи на основе атрибутов имеют склонность к отказу от неповторимого («oops! Мы думали, что можем использовать номер телефона в качестве идентификатора дома, dang !, телефонная компания начала повторное использование номеров ... »)
0

Первичный ключ идентифицирует строку в таблице.

RRN (я полагаю, вы имеете в виду относительный номер записи) также идентифицирует строку по положению в подмножестве (т. Е. Результат запроса).

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

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