Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИС_лекц_ЗАО.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.37 Mб
Скачать

3.1. Первинний ключ відношення

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

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

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

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

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

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

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

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

3.2. Можливий ключ відношення

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

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

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

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

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

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

3.3. Чужі ключі

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

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

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

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

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