Как се определят всички възможни Супер ключове в дадена таблица

A superkey is a set of one or more attributes that, taken collectively, allow us to
identify uniquely a tuple in the relation. For example, the ID attribute of the relation
instructor is sufficient to distinguish one instructor tuple from another.

  1. Написваш всички възможни комбинации от колони – по единично, по двойки, по-тройки и т.н…
  2. Трябва и едни празен вариaнт да има – {}
  3. Oт тези варианти, махаш всички, които имат повтярящи се стойности.
  4. Тези, които остават са Супер ключовете.

Например:

Monarch NameMonarch NumberRoyal House
EdwardIIPlantagenet
EdwardIIIPlantagenet
RichardIIIPlantagenet
HenryIVLancaster

{}
{Monarch Name}
{Monarch Number}
{Royal House}
{Monarch Name, Monarch Number}
{Monarch Name, Royal House}
{Monarch Number, Royal House}
{Monarch Name, Monarch Number, Royal House}

Виждаме обаче, че за {Monarch Name, Royal House} се получават повтарящи се кортежи – Edward, Plantagenet – следователно, махаме комбинацията {Monarch Name, Royal House}, тя не може да бъде Суперключ.

За {Monarch Number, Royal House} също може да се получат повтарящи се кортежи, за конкретният случай – не, затова може да е Суперключ, но в перспектива – не.

Тази комбинация {Monarch Name, Monarch Number} може да е Суперключ, защото няма как да има два краля с еднакво име и номер едновремено.

Така, получихме тези две комбинации, които могат да са Суперключ:
{Monarch Name, Monarch Number}
{Monarch Name, Monarch Number, Royal House}

Но в същото време, само първата е напълно достатъчна за да гарантира уникалността на кортежите. Това е вече Candidate Key (Потенциален ключ).

Следователно, в релация с n атрибута, максималният брой възможни Суперключа са 2^n

На практика Суперключовете нямат голямо значение, те са по-скоро за улесняване на DB дизайна – да преценим от кои полета имаме нужда за да карантираме уникалността на всеки запис. И ако например, няма такова/такива полета – да добавим ново поле, което да свърши тази работа.

След това, на тази база, да изберем и Потенциалният ключ, който да е всъщност минималният Суперключ. Защо се казва „потенциален“? Защото, подобно на Суперключа, можем да имаме повече от един, и просто трябва да изберем един.

Много е важно, при DB design да се разсъждава в перспектива – например, с оглед на това, какво би нарушило уникалността на записите. Затова Суперключове и Потенциални ключове трябва да се избират не само на база вече съществуваща таблица, а и в перспектива.

Литература:

https://en.wikipedia.org/wiki/Superkey

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *