Изискванията към една РБД
Двете задължителни изисквания, които наистина се спазват от всички създатели на СУРБД:
Ключово
Изискване 0: данните в РБД трябва да са оформени като релации (таблици);
Изискване 1: всички обработки на данните трябва да могат да се извършват с присъщите за релациите операции — обединени от понятието релационна алгебра.
Още от изискванията на Код (спазвани в различна степен):
- Изискване 2: всяка отделна данна е достъпна само със средствата на СУБД.
- Изискване 3: отсъствието на данна се отбелязва със специалната стойност
null— различна от празната стойност! Празният низ е нормална стойност;nullозначава, че данна не е въвеждана или няма смисъл да се въвежда. - Изискване 4: структурата на РБД (множеството от таблици) също може да се оформи в таблица, достъпна за справки като всяка друга.
- Изискване 5: всички обработки могат да се извършват пряко с език за работа с базата — повсеместно използваният
SQL. Повечето СУРБД допускат и работа посредством език за програмиране с библиотека подпрограми (ще видим как — със C#). - Изискване 6: всички изгледи (справки, отчети) за крайния потребител могат да се изработят с езика за работа с базата.
- Изискване 7: всяка таблица е множество — изменя се със стандартните операции: обединение, сечение и разлика.
- Изискване 8: РБД е независима от езиците за програмиране; вътрешни изменения в СУРБД не водят до промени в програмите.
Терминологията на РБД
Релациите, от които е изградена РБД, се наричат таблици. Аналогът им в програмирането са двумерните масиви — с уговорката, че елементите на масива са от един тип, а ограничението се преодолява със struct или клас: тогава таблицата е едномерен масив от структури/инстанции.
| Математика | РБД | Друго име |
|---|---|---|
| Релация | Таблица | — |
| Наредена n-торка | Ред / кортеж | запис |
| Елемент на кортежа | Атрибут | стойност в колона |
| Множество в произведението | Домейн | — |
| Сигнатура | Схема на релацията | релационна схема |
Степен на релацията
Броят на множествата в декартовото произведение, над което е образувана таблицата (т.е. броят на колоните).
Мощност на таблицата
Броят на кортежите (редовете) на таблицата.
Имена на колоните
Колоните на една таблица трябва да са различно именувани (както обектите в една програма). Колони от РАЗЛИЧНИ таблици може да носят едно и също име — напр. „Номер в клас" във всички таблици на училищната ИС. Достъпът до атрибутите на кортеж става с името на колоната.
Множествени операции върху таблици
Всяка релация е множество от кортежи — затова обединение, сечение и разлика работят и с таблици, но само при еднаква релационна схема. Резултатът е таблица със същата схема.
Обединение
Резултатът съдържа всеки кортеж, който се среща в едната таблица, в другата или и в двете. Съвпадащите кортежи влизат само веднъж — множествата не съдържат повторения. Мощността на резултата ≤ сборът от мощностите. Пример: обединим ли таблиците на учениците от всички класове, получаваме таблицата на всички ученици в училището — тук кортежите са очаквано различни и мощността е точно сборът.
Сечение
Резултатът съдържа кортежите, срещащи се и в двете таблици. За таблиците на два различни класа сечението най-вероятно е празна таблица. Мощността на резултата ≤ мощността на по-малката таблица.
Разлика
Кортежите на първата таблица, които не участват във втората. За таблици с празно сечение резултатът е просто първата таблица.
А допълнението?
Естественото универсално множество е цялото декартово произведение на домейните — то може да е с огромен брой редове, затова операцията допълнение рядко представлява интерес.
Въпроси от учебника
1) Таблица на учениците от класа с номер, име, фамилия и срочните оценки по всеки предмет — какви са степента и мощността ѝ? 2) Каква ще е мощността на обединението на такива таблици за всички 12-и класове? А на сечението им? 3) Колко общо са атрибутите на таблица със степен N и мощност M?
Какво трябва да запомниш
- Изискване 0: данните са релации (таблици); Изискване 1: обработка само с релационна алгебра.
null= липсваща данна; различно от празния низ!- Ред = кортеж = запис; стойност в колона = атрибут; схема = типовете на колоните.
- Степен = брой колони; мощност = брой редове.
- Обединение/сечение/разлика — само върху таблици с еднаква схема.
- Общият брой атрибути на таблица със степен N и мощност M е N·M.