Релационна база данни - основни понятия

Релационна база данни - основни понятия

Често, когато се говори за база данни, те означават просто някакъв вид автоматизирано хранилище на данни. Това мнение не е напълно правилно. Защо това е така, ще бъде показано по-долу.

В действителност, в тесния смисъл на думата, базата данни е определен набор от данни, необходими за работа (действителни данни). Данните обаче са абстракция; никой никога не е виждал „само данни“; те не възникват и не съществуват сами по себе си. Данните са отражение на обектите в реалния свят. Да предположим, например, че искате да съхранявате информация за частите, получени в склада. Как ще се покаже обект от реалния свят - част - в базата данни? За да отговорите на този въпрос, трябва да знаете кои знаци или страни на частта ще бъдат подходящи, необходими за работа. Сред тях може да бъде името на частта, нейното тегло, размери, цвят, дата на производство, материал, от който е направена и т.н. В традиционната терминология обектите от реалния свят, информация за които се съхранява в базата данни, се наричат ​​обекти (дори тази дума да не плаши читателя - това е общоприет термин), а действителните им признаци се наричат ​​атрибути.

Всяка характеристика на определен обект е стойността на атрибута. И така, частта "двигател" има стойност на атрибута "тегло" от "50", което отразява факта, че този двигател тежи 50 килограма.

Би било грешка да се смята, че в базата данни се отразяват само физически обекти. Тя е в състояние да абсорбира информация за абстракции, процеси, явления - тоест за всичко, което човек среща в своята дейност. Например база данни може да съхранява информация за поръчки за доставка на части до склад (въпреки че не е физически обект, а процес). Атрибутите на обекта "поръчка" ще бъдат името на доставената част, броят на частите, името на доставчика, времето за доставка и т.н.

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

Релационен модел на данни

И така, имаме представа какво се съхранява в базата данни. Сега трябва да разберете как обектите, атрибутите и връзките се картографират в структурите на данни. Това се определя от модела на данните.

Традиционно всички СУБД се класифицират според модела на данните, който е в основата им. Обичайно е да се разграничават йерархични, мрежови и релационни модели на данни. Понякога те добавят модел на данни въз основа на обърнати списъци. Съответно те говорят за йерархични, мрежови, релационни СУБД или СУБД, базирани на обърнати списъци.

По отношение на разпространението и популярността, релационните СУБД днес са извън конкуренцията. Те се превърнаха в де факто индустриален стандарт и следователно местният потребител ще трябва да се сблъска в практиката си с релационна СУБД. Нека да разгледаме набързо релационния модел на данни, без да навлизаме в неговите подробности.

Той е разработен от Код през 1969-70 г. въз основа на математическата теория на отношенията и се основава на система от понятия, най-важните от които са таблица, релация, ред, колона, първичен ключ, външен ключ.

Релационна база данни е тази, при която всички данни се представят на потребителя под формата на правоъгълни таблици със стойности на данните и всички операции с базата данни се свеждат до манипулиране на таблиците. Таблицата се състои от редове и колони и има уникално име в базата данни. Таблицата отразява вида на обекта в реалния свят (обект) и всеки от неговите редове е специфичен обект. Например таблицата с части съдържа информация за всички части, съхранявани в склада, а нейните редове са набори от стойности на атрибути за конкретни части. Всяка колона в таблица е колекция от стойности за определен атрибут на обект. Например колоната Материал представлява набор от стойности за „Стомана“, „Калай“, „Цинк“, „Никел“ и т.н. Колоната Количество съдържа неотрицателни цели числа. Стойностите в графата Тегло са реални числа, равни на теглото на детайла в килограми.

Тези стойности не изглеждат от въздуха. Те се избират от набора от всички възможни стойности за атрибут на обект, който се нарича домейн. И така, стойностите в колоната за материали са избрани от набора от имена на всички възможни материали - пластмаси, дърво, метали и т.н. Следователно в колоната Материал е фундаментално невъзможно да се появи стойност, която не е в съответния домейн, например „вода“ или „пясък“.

Всяка колона има име, което обикновено се изписва в горната част на таблицата (Фигура: един). Той трябва да е уникален в таблицата, но различните таблици могат да имат колони със същото име. Всяка таблица трябва да има поне една колона; колоните са подредени в таблицата според реда на имената им, когато е била създадена. За разлика от колоните, редовете нямат имена; техният ред в таблицата не е дефиниран и броят не е логически ограничен.

Фигура 1. Основни концепции на базата данни.

база данни

Тъй като редовете в таблицата не са подредени, е невъзможно да се избере ред по неговата позиция - сред тях няма "първи", "втори", "последен". Всяка таблица има една или повече колони, чиито стойности уникално идентифицират всеки от нейните редове. Такава колона (или комбинация от колони) се нарича първичен ключ. В таблицата с части първичният ключ е колоната с номер на част. В нашия пример, всяка част в склада има един номер, с който се извлича необходимата информация от таблицата с части. Следователно в тази таблица първичният ключ е колоната Номер на част. Стойностите в тази колона не могат да бъдат дублирани - таблицата с части не трябва да съдържа редове, които имат една и съща стойност в колоната с номер на част. Ако таблица удовлетворява това изискване, тя се нарича връзка.

Връзката на таблиците е съществен елемент от релационния модел на данни. Поддържа се от външни ключове. Помислете за пример, в който базата данни съхранява информация за обикновени служители (таблицата на служителите) и мениджърите (таблицата на мениджъра) в някаква организация (Фигура: 2). Първичният ключ на таблицата на супервизора е колоната Номер (например номер на персонала). Колоната Фамилно име не може да действа като първичен ключ, тъй като двама мениджъри с еднакви фамилни имена могат да работят в една и съща организация. Всеки служител е подчинен на един мениджър, което трябва да бъде отразено в базата данни. Таблицата Служител съдържа колоната Мениджър номер и стойностите в тази колона се избират от колоната Числа на таблицата Мениджър (вж. Фигура: 2). Номер на диспечера на колони е външен ключ в таблицата на служителите.

Фигура 2. Връзка на таблици с бази данни.

данни

Таблиците не могат да се съхраняват и обработват, ако базата данни не съдържа „данни за данни“, например дескриптори за таблици, колони и т.н. Те обикновено се наричат ​​метаданни. Метаданните също са представени в таблична форма и се съхраняват в речника на данните.

В допълнение към таблиците, базата данни може да съхранява и други обекти, като дисплеи, отчети, изгледи и дори приложения, които работят с базата данни.

За потребителите на информационната система не е достатъчно базата данни просто да отразява обекти от реалния свят. Важно е такова отражение да е еднозначно и последователно. В този случай се казва, че базата данни отговаря на условието за целостта.

За да се гарантира коректността и взаимната последователност на данните, на базата данни се налагат някои ограничения, които се наричат ​​ограничения на целостта на данните.

Сами по себе си данните в компютърна форма не представляват интерес за потребителя, ако няма средства за достъп до тях. Достъпът до данни се осъществява под формата на заявки към база данни, които са формулирани на стандартен език за заявки. Днес за повечето СУБД този език е SQL.

Появата и развитието на този език като средство за описване на достъпа до база данни е свързано със създаването на теорията на релационните бази данни. SQL възниква през 1970 г. като част от изследователския проект System/R в лабораторията на Санта Тереза ​​на IBM. SQL сега е стандарт за интерфейс със системи за управление на релационни бази данни. Популярността му е толкова голяма, че разработчиците на нерелационни СУБД (например Adabas) доставят своите системи с SQL-интерфейс.

Езикът SQL има официален стандарт - ANSI/ISO. Повечето разработчици на СУБД се придържат към този стандарт, но често го разширяват, за да внедрят нови възможности за обработка на данни. Нови механизми за управление на данни, които ще бъдат описани в Раздел. Сървър на база данни, може да се използва само чрез специални SQL изрази, които обикновено не са включени в езиковия стандарт.

SQL не е традиционен език за програмиране. В него не се пишат програми, а заявки към базата данни. Следователно SQL е декларативен език. Това означава, че може да се използва за формулиране на това, което трябва да се получи, но не може да посочи как трябва да се направи. По-специално, за разлика от процедурните езици за програмиране (C, Pascal, Ada), на езика SQL липсват такива оператори като if-then-else, for, while и т.н.

Няма да разглеждаме подробно синтаксиса на езика. Нека го засегнем само до степента, необходима за разбиране на прости примери. С тяхна помощ ще бъдат илюстрирани най-интересните механизми за обработка на данни.

SQL заявката се състои от един или повече изрази, един след друг, разделени с точка и запетая. Таблица 1 по-долу изброява най-важните оператори, които са включени в стандарта ANSI/ISO SQL.

Таблица 1. Основни оператори на езика SQL.

базата данни

SQL заявките използват имена, които уникално идентифицират обекти на база данни. По-специално това е името на таблицата (Подробности), името на колоната (Име), както и имената на други обекти в базата данни, които принадлежат към допълнителни типове (например имената на процедурите и правилата), които ще бъдат обсъдени в Раздел. Сървър на база данни. Заедно с прости имена се използват и сложни имена - например квалифицираното име на колона определя името на колоната и името на таблицата, към която принадлежи (Part.Weight). За по-голяма простота в примерите имената ще бъдат написани на руски, въпреки че на практика това не се препоръчва.

Всяка колона във всяка таблица съхранява данни от определени типове. Има основни типове данни - низове от символи с фиксирана дължина, цели числа и реални числа и допълнителни типове данни - низове от символи с променлива дължина, валута, дата и час, логически данни (две стойности - „TRUE“ и „FALSE“ "). На език SQL можете да използвате числови, низ, символни константи и константи от типа "дата" и "час".

Нека разгледаме някои примери.

Заявката "определяне на броя на частите на склад за всички видове части" се изпълнява по следния начин:

ИЗБЕРЕТЕ Име, Количество

Резултатът от заявката ще бъде таблица с две колони - Име и Количество, които са взети от оригиналната таблица на частите. По принцип тази заявка ви позволява да получите вертикална проекция на оригиналната таблица (по-строго, вертикална подмножина на набора от редове на таблици). От всички редове на таблицата с части се формират редове, които включват стойности, взети от две колони - Име и Количество.

Заявката „Какви стоманени части има на склад?“, Формулирана в SQL, изглежда така:

КЪДЕ Материал = 'Стомана';

Резултатът от тази заявка също ще бъде таблица, съдържаща само онези редове от изходната таблица, които имат стойността „Стомана“ в колоната Материал. Тази заявка ви позволява да получите хоризонтална проекция на таблицата с части (звездичка в оператора SELECT означава, че сте избрали всички колони от таблицата).

Искането "за определяне на наименованието и количеството на частите в склада, които са изработени от пластмаса и тежат по-малко от пет килограма", ще бъде написано, както следва: