Релационни бази от данни Релационни бази от данни – – съдържание съдържание Модели на базите от данни Модели на базите от данни Релационните бази от данни Релационните бази от данни RDBMS RDBMS системи системи Таблици, връзки, множественост Таблици, връзки, множественост на връзките, на връзките, E/R E/R диаграми диаграми Нормализация Нормализация Ограничения ( Ограничения ( constraints) constraints) Индекси Индекси
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Релационни бази от данни – Релационни бази от данни – съдържаниесъдържание Модели на базите от данниМодели на базите от данни Релационните бази от данниРелационните бази от данни RDBMSRDBMS системи системи Таблици, връзки, множественост на Таблици, връзки, множественост на
Релационни бази от данни – Релационни бази от данни – съдържаниесъдържание
Релационни бази от данниРелационни бази от данни
Модели на базите от данниМодели на базите от данни йерархичен (дървовиден)йерархичен (дървовиден) мрежовимрежови релационен (табличен)релационен (табличен) обектно-релационенобектно-релационен
Релационните бази от данниРелационните бази от данни представляват съвкупности от представляват съвкупности от
таблици и връзки между тяхтаблици и връзки между тях ( (релации)релации) ползват здрава математическа основа: ползват здрава математическа основа:
релационната алгебрарелационната алгебра
Системи за управление на БДСистеми за управление на БД
Системи за управление на релационни Системи за управление на релационни бази от данни бази от данни ((СУБД) = СУБД) = Relational Relational Database Management System Database Management System ((RDBMS)RDBMS)
Осигуряват програмни средства за:Осигуряват програмни средства за: създаване / промяна / изтриване на създаване / промяна / изтриване на
таблици и връзки между тяхтаблици и връзки между тях добавяне, промяна, изтриване, търсене добавяне, промяна, изтриване, търсене
и извличане на данни от таблицитеи извличане на данни от таблиците поддръжка на езика поддръжка на езика SQLSQL управление на транзакциите управление на транзакциите
(незадължително)(незадължително)
Системи за управление на БДСистеми за управление на БД
RDBMS RDBMS системите се наричат ощесистемите се наричат още сървъри за управление на бази от даннисървъри за управление на бази от данни или просто или просто "Database "Database сървърисървъри""
По-известни По-известни RDBMS RDBMS сървъри:сървъри: Microsoft SQL ServerMicrosoft SQL Server Oracle DatabaseOracle Database IBM DB2IBM DB2 PostgreSQLPostgreSQL MySQLMySQL Borland InterbaseBorland Interbase
ТаблициТаблици
Таблиците представляват съвкупност Таблиците представляват съвкупност от стойности, подредени в редове и от стойности, подредени в редове и колони. Пример (таблица колони. Пример (таблица PERSONS)PERSONS)::
Редовете имат еднаква структураРедовете имат еднаква структура Колоните имат име и тип (число, Колоните имат име и тип (число,
символен низ, дата или др.)символен низ, дата или др.)
Схема на таблица е наредена Схема на таблица е наредена последователност от описания на последователност от описания на колони (име и тип)колони (име и тип)
Например таблицатаНапример таблицата PERSONSPERSONS има има следната схема:следната схема:
Първичният ключ Първичният ключ (primary key) (primary key) ее колона колона от таблицата, която уникално от таблицата, която уникално идентифицира даден неин редидентифицира даден неин ред
Два записа (реда) са различни когато са Два записа (реда) са различни когато са различни първичните им ключоверазлични първичните им ключове
Първичният ключ може да е съвкупност Първичният ключ може да е съвкупност от няколко колониот няколко колони
Връзките между таблиците се базират на Връзките между таблиците се базират на взаимоотношения взаимоотношения primary key / foreign keyprimary key / foreign key
Външният ключ (Външният ключ (foreign key) foreign key) е номер на е номер на запис запис (primary key) (primary key) в друга таблицав друга таблица
Връзките спестяват повтарянето на Връзките спестяват повтарянето на информацияинформация В примера името на държавата не се В примера името на държавата не се
повтаря за всеки градповтаря за всеки град
Връзките имат множественост Връзките имат множественост ((multiplicity)multiplicity) : : 11 x 1 – x 1 – например човек / име на човекнапример човек / име на човек 1 x 1 x много – държава / градовемного – държава / градове многомного x x много – студент / учебен курсмного – студент / учебен курс
Множественост на връзкитеМножественост на връзките
idid namename popul_idpopul_id11 СофияСофия 11
22 ПловдивПловдив 22
33 МюнхенМюнхен 33
44 БерлинБерлин 44
55 МоскваМосква 55
Връзка Връзка 1 x 11 x 1 1 запис от едната таблица съответства на 1 запис от едната таблица съответства на
точно 1 запис от другата таблицаточно 1 запис от другата таблица Рядко се използва – няма смисълРядко се използва – няма смисъл
TOWNTOWN
idid populationpopulation11 1 177 0001 177 000
22 720 000720 000
33 1 260 0001 260 000
44 3 400 0003 400 000
55 11 800 00011 800 000
POPULATIONPOPULATION
Множественост на връзкитеМножественост на връзките
Връзка Връзка 1 x 1 x много (или много много (или много xx 1)1) 1 запис от първата таблица съответства 1 запис от първата таблица съответства
на много записи от втората таблицана много записи от втората таблица Използва се много честоИзползва се много често
Релационна схема на БД наричаме Релационна схема на БД наричаме съвкупността от:съвкупността от: схемите на всички таблицисхемите на всички таблици връзките между таблицитевръзките между таблиците
Релационната схема описва Релационната схема описва структурата на БДструктурата на БД не съдържа данни, а само метаданнине съдържа данни, а само метаданни
Релационните схеми се изобразяват Релационните схеми се изобразяват графично чрез графично чрез Entity/Relationship Entity/Relationship диаграми (диаграми (E/R diagrams)E/R diagrams)
E/R E/R диаграми – примердиаграми – примерДиаграмата е Диаграмата е създадена с създадена с
Microsoft SQL Server Microsoft SQL Server Enterprise ManagerEnterprise Manager
E/R E/R диаграми – примердиаграми – пример
Диаграмата е Диаграмата е създадена с създадена с
PLATINUM ERwinPLATINUM ERwin
E/R E/R диаграми – примердиаграми – примерДиаграмата е създадена Диаграмата е създадена с fabFORCE DB Designerс fabFORCE DB Designer
Инструменти за Инструменти за E/RE/R дизайн дизайн
E/R диаграмите се създават с E/R диаграмите се създават с инструменти за моделиране на данни инструменти за моделиране на данни (Data Modeling Tools):(Data Modeling Tools): Microsoft VisioMicrosoft Visio Oracle DesignerOracle Designer Computer Associates ErwinComputer Associates Erwin SQL Server Enterprise ManagerSQL Server Enterprise Manager IBM Rational RoseIBM Rational Rose theKompany Data ArchitecttheKompany Data Architect fabForce DBDesigner (GNU GPfabForce DBDesigner (GNU GPLL проект с проект с
отворен код за Windows и Linux)отворен код за Windows и Linux)
НормализацияНормализация
Нормализацията на релационната Нормализацията на релационната схема премахва повтарящите се даннисхема премахва повтарящите се данни
Денормализираните данни съдържат Денормализираните данни съдържат много повторения:много повторения:
Загорка АДЗагорка АД 0.580.58 безалкох. безалкох. напиткинапитки
павилион павилион "24 часа""24 часа"
ВарнаВарна
бира бира "Tuborg""Tuborg"
Шуменско Шуменско пиво АДпиво АД
0.670.67 безалкох. безалкох. напиткинапитки
павилион павилион "24 часа""24 часа"
ВарнаВарна
НормализацияНормализация
1-ва нормална форма1-ва нормална форма Данните имат табличен видДанните имат табличен вид Полетата в редовете са атомарни Полетата в редовете са атомарни
(неделими) стойности(неделими) стойности Няма повторения на данни в Няма повторения на данни в
рамките на един редрамките на един ред Дефиниран е първичен ключ за Дефиниран е първичен ключ за
44-та нормална форма-та нормална форма Запазва изискванията на 3-та Запазва изискванията на 3-та
нормална форманормална форма В таблиците има най-много една В таблиците има най-много една
колона, съдържаща атрибут с колона, съдържаща атрибут с няколко възможни стойности няколко възможни стойности (multi-(multi-valued attribute) valued attribute) за един ключза един ключ
авторавтор_id_id книгакнига статиястатия
22 ..NET ProgrammingNET Programming Regular Expressions in .NETRegular Expressions in .NET
44 Mastering J2EEMastering J2EE Best Practices in J2EEBest Practices in J2EE
Един автор има Един автор има много книгимного книги
Един автор има Един автор има много статиимного статии
НормализацияНормализация Пример за нормализирана схемаПример за нормализирана схема
Ограниченията (Ограниченията (constraints)constraints) задават задават правила, за данните, които не могат правила, за данните, които не могат да бъдат нарушаванида бъдат нарушавани Ограничение по първичен ключ Ограничение по първичен ключ
((primary key constraint)primary key constraint) Първичният ключ е уникален за Първичният ключ е уникален за
всеки записвсеки запис Ограничение по уникален ключ (Ограничение по уникален ключ (unique unique
key constraint)key constraint) Стойностите в дадена колона (или Стойностите в дадена колона (или
група колони) са уникалнигрупа колони) са уникални
ConstraintsConstraints
Ограничение по външен ключ Ограничение по външен ключ ((foreign key constraint)foreign key constraint) Стойността в дадена колона е ключ от Стойността в дадена колона е ключ от
друга таблица друга таблица Ограничение по стойност (Ограничение по стойност (check check
constraint)constraint) Стойностите в дадена колонаСтойностите в дадена колона
((hour>=0)hour>=0) ANDAND (hour<=24)(hour<=24) name = upper(name)name = upper(name)
ИндексиИндекси
Индексите ускоряват скоростта на Индексите ускоряват скоростта на търсене на стойност в дадена търсене на стойност в дадена колона или група от колониколона или група от колони
Ползват се при големи таблициПолзват се при големи таблици Реализират се най-често с Реализират се най-често с B-B-дървета дървета
или хеш-таблициили хеш-таблици Могат да бъдат външни (извън Могат да бъдат външни (извън
таблицата) или вграденитаблицата) или вградени Добавянето и изтриването от Добавянето и изтриването от
индексирани таблици е по-бавноиндексирани таблици е по-бавно
Езикът Езикът SQLSQL
SQL (Structured Query Language)SQL (Structured Query Language) Стандартизиран декларативен език Стандартизиран декларативен език
(стандарт) за манипулация на (стандарт) за манипулация на релационни бази от даннирелационни бази от данни
SQL-92 – SQL-92 – поддържан от всички поддържан от всички RDBMSRDBMS SQL-99 –SQL-99 – навлиза все повече навлиза все повече
SQL SQL поддържа:поддържа: Създаване, промяна, изтриване на Създаване, промяна, изтриване на
таблици и други обекти в БДтаблици и други обекти в БД Търсене, извличане, добавяне, Търсене, извличане, добавяне,
промяна и изтриване на даннипромяна и изтриване на данни
Езикът Езикът SQLSQL
SQL SQL се състои отсе състои от:: DDL – Data Definition LanguageDDL – Data Definition Language
Команди Команди CREATE, ALTER, DROPCREATE, ALTER, DROP DML – Data Manipulation LanguageDML – Data Manipulation Language
Команди Команди SELECT, INSERT, SELECT, INSERT, UPDATE, DELETEUPDATE, DELETE
ПримерПример за за SQL SELECT SQL SELECT заявка:заявка:
Процедури на ниво база (запазени Процедури на ниво база (запазени процедури, процедури, stored procedures)stored procedures) Програмен код, който се изпълнява в Програмен код, който се изпълнява в
самия сървър за бази даннисамия сървър за бази данни Работят много по-бързо от външен кодРаботят много по-бързо от външен код Данните са локално достъпниДанните са локално достъпни Могат да приемат параметриМогат да приемат параметри Могат да връщат резултатМогат да връщат резултат
единична стойностединична стойност съвкупност от записи (съвкупност от записи (record set)record set)
Stored proceduresStored procedures
Процедури на ниво база се пишат Процедури на ниво база се пишат на език, разширение на на език, разширение на SQLSQL T-SQL T-SQL – – SQLSQL serverserver PL/SQL – PL/SQL – в в OracleOracle
Пример за процедура на Пример за процедура на T-SQLT-SQL::
CREATE PROCEDURE sp_GetInventoryCREATE PROCEDURE sp_GetInventory @location varchar(10) @location varchar(10)ASAS SELECT Product, Quantity SELECT Product, Quantity FROM Inventory FROM Inventory WHERE Warehouse = @location WHERE Warehouse = @location
Изгледи (Изгледи (views)views)
Изгледите представляват Изгледите представляват именувани именувани SQL SELECT SQL SELECT заявки, заявки, които се използват като таблицикоито се използват като таблици
Позволяват улеснение при писането Позволяват улеснение при писането на сложни на сложни SQL SQL заявкизаявки
Прилагат се за фина настройка на Прилагат се за фина настройка на сигурността:сигурността: На даден потребител не се дават права На даден потребител не се дават права
над никоя таблицанад никоя таблица Дават му се права само над някои Дават му се права само над някои
изгледи (подмножество от данните)изгледи (подмножество от данните)
Изгледи (Изгледи (views) – views) – примерпример
idid companycompanytowntown_id_id
11 Менте ООДМенте ООД 11
22 BulkSoft Inc.BulkSoft Inc. 22
33 ХардСофт АДХардСофт АД 11
44 Спутник АДСпутник АД 33
idid towntowncountcountry_idry_id
11 СофияСофия 11
22 New YorkNew York 33
33 МоскваМосква 22
T_COMPANYT_COMPANY T_TOWNT_TOWN
idid countrycountry11 БългарияБългария
22 РусияРусия
33 САЩСАЩ
T_COUNTRYT_COUNTRY
CREATE VIEW V_BG_COMPANY ASCREATE VIEW V_BG_COMPANY AS SELECT SELECT T_COMPANY.id AS id,T_COMPANY.id AS id, T_COMPANY.company AS companyT_COMPANY.company AS company FROM T_COMPANY INNER JOIN FROM T_COMPANY INNER JOIN (T_TOWN INNER JOIN T_COUNTRY ON(T_TOWN INNER JOIN T_COUNTRY ON T_TOWN.country_id=T_COUNTRY.id)T_TOWN.country_id=T_COUNTRY.id) ON T_COMPANY.town_id=T_TOWN.idON T_COMPANY.town_id=T_TOWN.id WHEREWHERE T_COUNTRY.country="България";T_COUNTRY.country="България";
idid companycompany11 Менте ООДМенте ООД
33 ХардСофт АДХардСофт АД
V_COMPANY_BGV_COMPANY_BG
ТригериТригери (triggers) (triggers)
Тригерите (Тригерите (triggers)triggers) са процедури на са процедури на ниво база, които се активират при ниво база, които се активират при някакво условие, например:някакво условие, например: при добавяне на записпри добавяне на запис при промяна на записпри промяна на запис при изтриване на записпри изтриване на запис
Тригерите могат да извършват Тригерите могат да извършват допълнителна обработка на даннитедопълнителна обработка на данните промяна на данните при добавянепромяна на данните при добавяне поддръжка на логове и историяподдръжка на логове и история
Тригери – примерТригери – пример
Имаме таблица с имена на фирми:Имаме таблица с имена на фирми:
Тригер, който при добавяне на новаТригер, който при добавяне на нова фирма добавя фирма добавя "Ltd." "Ltd." към името йкъм името й::
CREATE TABLE T_COMPANY(CREATE TABLE T_COMPANY( id int NOT NULL,id int NOT NULL, name varchar(50) NOT NULL)name varchar(50) NOT NULL)
CREATE TRIGGER trg_COMPANY_INSERTCREATE TRIGGER trg_COMPANY_INSERT ON COMPANYON COMPANY FOR INSERTFOR INSERTAS AS UPDATE COMPANY SET name = name + ' Ltd.'UPDATE COMPANY SET name = name + ' Ltd.' WHERE id = (SELECT id FROM inserted)WHERE id = (SELECT id FROM inserted)
ТранзакцииТранзакции
Транзакциите са последователности от Транзакциите са последователности от действия (заявки към базата данни), действия (заявки към базата данни), които се изпълняват атомарно:които се изпълняват атомарно: или се изпълняват всичките заедно или се изпълняват всичките заедно
(като едно цяло)(като едно цяло) или никое от действията не се или никое от действията не се
изпълнява изобщоизпълнява изобщо Пример:Пример:
Банково прехвърляне на пари от една Банково прехвърляне на пари от една сметка в другасметка в друга
Ако тегленето или внасянето на парите Ако тегленето или внасянето на парите пропадне, пропада целата операцияпропадне, пропада целата операция
Транзакции – примерТранзакции – пример
Имаме таблица с банкови сметки:Имаме таблица с банкови сметки:
Използваме транзакция при трансфер Използваме транзакция при трансфер на пари от сметка на сметка:на пари от сметка на сметка:
CREATE TABLE CREATE TABLE ACCOUNTACCOUNT(( id int NOT NULL,id int NOT NULL, balancebalance decimaldecimal NOT NULL) NOT NULL)