Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекц_информ_07.doc
Скачиваний:
19
Добавлен:
21.02.2016
Размер:
1.81 Mб
Скачать

3.1. Первинний ключ (суперключ) відношення

Для того щоб знайти потрібні дані в кожному відношенні назначається первинний ключ.

Первинний ключ відношення – це мінімальний набір атрибутів, який може бути використаний для однозначної ідентифікації кортежу.

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

Первинний ключ потрібно призначати таким чином, щоб це правило не порушувалось й в майбутньому, після додавання чи модифікації даних у відношенні.

Первинний ключ не повинний мати в своєму складі зайвих атрибутів, тобто, якщо вилучити з первинного ключа деякий одиночний атрибут, то атрибутів, що залишилися, буде недостатньо для того щоб однозначно ідентифікувати кортеж.

У даному прикладі первинними ключами є <Код_вантажу> у відношенні ВАНТАЖ, <Код_одержувача> у відношенні ОДЕРЖУВАЧ і пара атрибутів <Код_вантажу, Код_одержувача> у відношенні ПОСТАЧАННЯ.

Як бачимо, у деяких випадках в якості первинного ключа може використовуватися група атрибутів, однак, якщо ми візьмемо як первинний ключ у відношенні ОДЕРЖУВАЧ наприклад пару атрибутів <Код_одержувача, Станція> , то ця пара атрибутів теж однозначно ідентифікує кортеж у відношенні ОДЕРЖУВАЧ. Але таке рішення буде неправильним, тому що первинний ключ в своєму складі не повинен мати додаткових атрибутів. Атрибут <Станція> буде зайвим, адже і без нього можна визначити значення інших атрибутів будь-якого кортежу відношення ОДЕРЖУВАЧ, знаючи тільки <Код_одержувача>.

Якщо виключити з первинного ключа відношення ПОСТАЧАННЯ який-небудь атрибут, то атрибут, що залишиться, не дасть змоги однозначно ідентифікувати кортеж.

3.2. Можливий (потенційний) ключ відношення

Якщо повернутися до попереднього прикладу, то у відношенні ВАНТАЖ як первинний ключ можна було б застосувати атрибут <Найменування_вантажу>.

Можливий ключ відношення – це мінімальний набір атрибутів, який може бути використаний у якості первинного ключа даного відношення.

Первинний ключ відношення завжди є можливим ключем цього ж відношення.

Можливий ключ відношення відповідає усім вимогам, що пред'являються до первинного ключа. Тобто всі вимоги, що стосуються вибору первинного ключа, залишаються в силі і при виборі можливого ключа.

Первинний ключ завжди є можливим ключем, однак не виключена наявність інших можливих ключів, яки могли бути, але не були використані в якості первинного ключа даного відношення.

Наприклад, у відношенні ВАНТАЖ є два можливих ключа: <Код_вантажу> і <Найменування_вантажу>. Проектувальник бази даних за своїм розсудом може призначити первинним ключем будь-який з вище названих атрибутів.

3.3. Чужий (зовнішній) ключ відношення

Проектована база даних називається реляційною тому, що відношення в ній зв'язані між собою за допомогою чужих ключів.

Чужий ключ відношення – це мінімальний набір атрибутів, що відповідає можливому ключу іншого, але зв'язаного з ним відношення.

Відношення ВАНТАЖ і ПОСТАЧАННЯ зв'язані між собою за допомогою атрибута <Код_вантажу>. Тільки у відношенні ВАНТАЖ атрибут <Код_вантажу> є можливим ключем, а у відношенні ПОСТАЧАННЯ атрибут <Код_вантажу> не є можливим ключем, отже він є чужим ключем відношення ПОСТАЧАННЯ.

Аналогічно відношення ОДЕРЖУВАЧ і ПОСТАЧАННЯ зв'язані за допомогою атрибута <Код_одержувача>. У відношенні ОДЕРЖУВАЧ атрибут <Код_одержувача> є можливим ключем, а у відношенні ПОСТАЧАННЯ атрибут <Код_одержувача> не є можливим ключем, отже він є чужим ключем відношення ПОСТАЧАННЯ.

Відношення ОДЕРЖУВАЧ і ВАНТАЖ безпосередньо між собою не зв'язані, вони зв'язані через відношення ПОСТАЧАННЯ.