Назначение ключевых атрибутов сущностей

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

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

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

Хороший первичный ключ отвечает определенным требованиям:

1. Каждый его экземпляр должен быть уникальным, для того чтобы отличать каждый кортеж отношения.

2. Первичному ключу всегда должно быть присвоено значение. Если значение атрибута в какой-то момент становится неопределенным или неизвестным (пропущенное значение), его нельзя использовать в качестве компонента первичного ключа.

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

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

Кодирование данных

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

В целом под кодированием понимается процесс установления соответствия между кодируемыми данными и комбинациями знаков, составляющих алфавит кода.

При подготовке входных документов используется два способа кодирования: кодирование отдельных символов (побуквенное кодирование) и кодирование реквизита в целом (пословное кодирование). Первое, как правило, применяется для кодирования сообщений и иногда - для кодирования реквизитов-оснований, второе - для кодирования реквизитов-признаков. На практике для кодирования реквизитов-признаков применяются такие коды, как порядковый, серийно-порядковый, классификационный, матричный и другие.

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

Серийно-порядковое кодирование предусматривает деление номе ров, используемых в качестве кодовых комбинаций, на группы (серии) по некоторому признаку. Так для кодирования должностей сотрудников в таблице ДОЛЖНОСТЬ значения кодовых комбинации поля КОД_ДОЛЖНОСТИ с 10 по 09 отведены для категории "начальники", с 21 по 29 - для категории "заместители начальника"; с 31 по 39 – для категории «сотрудники» и т.д.

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

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

Наши рекомендации