Въведение в   Релационните Бази   от Данни
Contents Модели на базите от данни Релационните бази от данни RDBMS  системи Таблици, връзки, множественост на връзките,  E/R  диаграми Нормализация Ограничения ( constraints) Индекси
Contents Езикът SQL Транзакции и изолация
Релационни бази от данни Модели на базите от данни йерархичен (дървовиден) мрежови релационен (табличен) обектно-релационен Релационни бази от данни Представляват съвкупности от таблици и връзки между тях  ( релации)
Системи за управление  на БД Системи за управление на релационни бази от данни  ( СУБД) =  Relational Database Management System  ( RDBMS) Осигуряват програмни средства за: създаване / промяна / изтриване на таблици и връзки между тях добавяне, промяна, изтриване, търсене и извличане на данни от таблиците поддръжка на езика  SQL управление на транзакции (незадължително)
Системи за управление  на БД RDBMS  системите се наричат още сървъри за управление на бази от данни или просто  "Database  сървъри " По-известни  RDBMS  сървъри: Oracle Database Microsoft SQL Server IBM DB2 PostgreSQL MySQL Borland Interbase
Таблици Таблиците представляват съвкупност от стойности, подредени в редове и колони. Пример (таблица  PERSONS) : Редовете имат еднаква структура Колоните имат име и тип (число, символен низ, дата или др.) Пешев Спасов Наков family Freelancer Марио 3 Software AG Росен 2 БАРС Светлин 1 employer name id
Схема на таблица Схема на таблица е наредена последователност от описания на колони (име и тип) Например таблицата   PERSONS   има следната схема: PERSONS ( id :   число, name : символен низ, family : символен низ, employer:  символен низ )
Типове данни в  Oracle Числови bit (1-bit), integer (32-bit), bigint (64-bit) float, real,  number (scale, precision) money – за парични пресмятания Текстови char(size) – фиксирана дължина varchar 2 (size) – символен низ nvarchar 2 (size) – Unicode низ text, ntext – дълъг символен низ
Типове данни в  Oracle Бинарни данни varbinary(size)  – редица от байтове image –  бинарен блок до  1 GB Дати и часове datetime  – дата и час smalldatetime –  дата с точност 1 минута Други timestamp   –  автоматична версия на ред
Първичен ключ Първичният ключ  (primary key)  е   колона от таблицата, която уникално идентифицира даден неин ред Два записа (реда) са различни когато са различни първичните им ключове Първичният ключ може да е съвкупност от няколко колони Primary key Кулов Гюров Наков family CodeAttest Мартин 3 BSH Бранимир 2 БАРС Светлин 1 employer name id
Връзки (релации) Връзките между таблиците се базират на взаимоотношения  primary key / foreign key TOWN COUNTRY Primary key Primary key Foreign key 2 Берлин 4 Москва Мюнхен Пловдив София name 2 3 3 5 1 2 1 1 country_id id Русия 3 Германия 2 България 1 name id
Връзки (релации) Външният ключ ( foreign key)  е номер на запис  (primary key)  в друга таблица Връзките спестяват повтарянето на информация В примера името на държавата не се повтаря за всеки град Връзките имат множественост ( multiplicity)  : 1 x  много – държава / градове много  x  много – студент / учебен курс 1  x 1 –  например човек / студент
Множественост на връзките Връзка  1 x  много (или много  x   1) 1 запис от първата таблица съответства на много записи от втората таблица Използва се много често TOWN COUNTRY 2 Берлин 4 Москва Мюнхен Пловдив София name 2 3 3 5 1 2 1 1 country_id id Русия 3 Германия 2 България 1 name id
Множественост на връзките Връзка много  x  много 1 запис от първата таблица съответства на много записи от втората таблица и обратното Реализира се чрез междинна таблица STUDENT COURSE STUDENT_COURSE Пенка 4 Гошо Минка Пешо name 3 2 1 id PHP 3 Java 2 .NET 1 name id 2 1 2 3 3 3 2 4 1 1 course_id student_id
Множественост на връзките Връзка  1 x 1 1 запис от едната таблица съответства на точно 1 запис от другата таблица Моделира наследяване на таблици PERSON STUDENT Primary key Primary & Foreign key at the same time Мария Петър Иван name 24 26 72 age 3 2 1 i d Chemistry Computer Science specialty 3 2 id Ph.D. title 1 id
Авторелации ( Self-relationships ) Връзките  primary/foreign key  може да са в една и съща таблица Пример: служителите в една фирма имат началник, който също е служител Employees Primary key Foreign key 1 Георги Георгиев 3 Бай Генчо Петър Петров Иван Иванов Name 3 1 ( null) ManagerId 4 2 1 Id
Релационна схема Релационна схема на БД наричаме съвкупността от: схемите на всички таблици връзките между таблиците Релационната схема описва структурата на БД не съдържа данни, а само метаданни Релационните схеми се изобразяват графично чрез  Entity/Relationship  диаграми ( E/R Diagrams)
E/R  диаграми – пример Диаграмата е създадена с  Microsoft SQL Server Enterprise Manager
E/R  диаграми – пример Диаграмата е създадена с  PLATINUM ERwin
Инструменти за  E/R  дизайн E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling Tools): CASE Studio Oracle Designer Microsoft Visio Computer Associates E R win SQL Server Enterprise Manager IBM Rational Rose theKompany Data Architect fabForce DBDesigner (GNU GP L  проект с отворен код за Windows и Linux)
Идентификация на същностите  (entities) Entity  таблиците представляват същности (обекти) от реалния свят Най-често са съществителни в текста на заданието (спецификацията) Например: Същности: студент, курс, град Да се разработи система за съхраняване на информация за  студенти , които се обучават в различни  курсове . Курсовете се провеждат в различни  градове . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.
Идентификация на колоните в таблиците Колоните в таблиците са характеристики на същностите Имат име и тип Например студентите имат: Име (текст) Факултетен номер (число) Снимка (бинарен блок) Дата на регистрация (дата)
Идентификация на колоните в таблиците Колоните са пояснения за същностите в текста на заданието, например: Студентите имат следните характеристики: Име, факултетен номер, снимка, дата на регистрация и списък от курсове Да се разработи система за съхраняване на информация за студенти, които се обучават в различни  курсове . Курсовете се провеждат в различни градове. При регистрация на студент за него се въвежда  име ,  фак. номер ,  снимка  и  дата .
Как да изберем първичен ключ за  entity  таблиците? Винаги дефинирайте допълнителна колона за първичния ключ Не използвайте съществуваща колона (например ЕГН) Трябва да е число ( integer) Трябва да се обяви като  primary key Слагайте първичния ключ като първа колона
Идентификация на връзките (релации  /   relations) Връзките са отношения между същностите: "Студенти се обучават в курсове" – релация много към много "Курсовете се провеждат в градове" – релация много към едно Да се разработи система за съхраняване на информация за  студенти , които  се обучават в  различни  курсове .  Курсовете се провеждат в  различни  градове . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.
Нормализация Нормализацията на релационната схема премахва повтарящите се данни За повече информация:  http://en.wikipedia.org/wiki/Database_normalization
Ограничения  (Constraints) Ограниченията задават правила за данните, които не могат да бъдат нарушавани Ограничения по първичен ключ ( primary key constraint) Първичният ключ е уникален за всеки запис Ограничения по уникален ключ ( unique key constraint) Стойностите в дадена колона (или група колони) са уникални
Ограничения  (Constraints) Ограничение по външен ключ ( foreign key constraint) Стойността в дадена колона е ключ от друга таблица  Ограничение по стойност ( check constraint) Стойностите в дадена колона   изпълняват дадено условие. Пример: ( hour>=0)   AND   (hour<=24) name = upper(name)
Индекси Индексите ускоряват скоростта на търсене на стойност в дадена колона или група от колони Ползват се при големи таблици Добавянето и изтриването от индексирани таблици е по-бавно
Езикът  SQL SQL (Structured Query Language) Стандартизиран декларативен език (стандарт) за манипулация на релационни бази от данни SQL  поддържа: Създаване, промяна   и изтриване на таблици и други обекти в БД Търсене, извличане, добавяне, промяна и изтриване на данни
Езикът  SQL SQL  се състои от : DDL – Data Definition Language Команди  CREATE, ALTER, DROP DML – Data Manipulation Language Команди  SELECT, INSERT, UPDATE, DELETE Пример   за  SQL SELECT  заявка: SELECT Town.name, Country.name FROM Town, Country WHERE Town.country_id = Country.id
Транзакции Транзакциите са последователности от действия (заявки към базата данни), които се изпълняват атомарно: или се изпълняват всичките действия заедно (като едно цяло) или никое от действията не се изпълнява изобщо Пример: Банково прехвърляне на пари от една сметка в друга (теглене + внасяне) Ако тегленето или внасянето на парите пропадне, пропада цялата операция
Отговорности на транзакциите Транзакциите гарантират консистентността и възстановимостта на базата данни Промяната не се счита за окончателна докато не се извърши  COMMIT Всички операции се извършват като едно цяло, включително операциите върху множество от записи
Свойства на транзакциите A tomicity –  атомарност Изпълнява се всичко или нищо C onsistency  – цялост на данните Базата винаги остава консистентна с логически коректни данни I solation  – изолация на данните Отделните транзакции са изолирани една от друга в зависимост от избраното ниво D urability  – стабилност на данните Ако една транзакция бъде потвърдена, тя не може да бъде изгубена
Употреба на транзакции Кога се ползват транзакции? Винаги, когато за една бизнес операция се осъществява достъп до повече от една таблица Ако някоя операция не успее, анулираме транзакцията
Нива на изолация За повече информация: http:// en.wikipedia.org/wiki/Isolation_(database_systems )
Въпроси?
Упражнения Какви модели на базите от данни познавате? Кои са основните функции, изпълнявани от една система за управление на бази от данни (СУБД)? Дефинирайте понятието таблица в база от данни. Обяснете разликите между първичен и външен ключ. Посочете какви видове връзки между таблици познавате.
Упражнения  (2) За какво се използват ограниченията в една база от данни? Какво е основното предназначение на езика SQL? За какво се използват транзакциите? Дефинирайте техните отговорности.

Introduction to-RDBMS-systems

  • 1.
    Въведение в Релационните Бази от Данни
  • 2.
    Contents Модели набазите от данни Релационните бази от данни RDBMS системи Таблици, връзки, множественост на връзките, E/R диаграми Нормализация Ограничения ( constraints) Индекси
  • 3.
    Contents Езикът SQLТранзакции и изолация
  • 4.
    Релационни бази отданни Модели на базите от данни йерархичен (дървовиден) мрежови релационен (табличен) обектно-релационен Релационни бази от данни Представляват съвкупности от таблици и връзки между тях ( релации)
  • 5.
    Системи за управление на БД Системи за управление на релационни бази от данни ( СУБД) = Relational Database Management System ( RDBMS) Осигуряват програмни средства за: създаване / промяна / изтриване на таблици и връзки между тях добавяне, промяна, изтриване, търсене и извличане на данни от таблиците поддръжка на езика SQL управление на транзакции (незадължително)
  • 6.
    Системи за управление на БД RDBMS системите се наричат още сървъри за управление на бази от данни или просто &quot;Database сървъри &quot; По-известни RDBMS сървъри: Oracle Database Microsoft SQL Server IBM DB2 PostgreSQL MySQL Borland Interbase
  • 7.
    Таблици Таблиците представляватсъвкупност от стойности, подредени в редове и колони. Пример (таблица PERSONS) : Редовете имат еднаква структура Колоните имат име и тип (число, символен низ, дата или др.) Пешев Спасов Наков family Freelancer Марио 3 Software AG Росен 2 БАРС Светлин 1 employer name id
  • 8.
    Схема на таблицаСхема на таблица е наредена последователност от описания на колони (име и тип) Например таблицата PERSONS има следната схема: PERSONS ( id : число, name : символен низ, family : символен низ, employer: символен низ )
  • 9.
    Типове данни в Oracle Числови bit (1-bit), integer (32-bit), bigint (64-bit) float, real, number (scale, precision) money – за парични пресмятания Текстови char(size) – фиксирана дължина varchar 2 (size) – символен низ nvarchar 2 (size) – Unicode низ text, ntext – дълъг символен низ
  • 10.
    Типове данни в Oracle Бинарни данни varbinary(size) – редица от байтове image – бинарен блок до 1 GB Дати и часове datetime – дата и час smalldatetime – дата с точност 1 минута Други timestamp – автоматична версия на ред
  • 11.
    Първичен ключ Първичниятключ (primary key) е колона от таблицата, която уникално идентифицира даден неин ред Два записа (реда) са различни когато са различни първичните им ключове Първичният ключ може да е съвкупност от няколко колони Primary key Кулов Гюров Наков family CodeAttest Мартин 3 BSH Бранимир 2 БАРС Светлин 1 employer name id
  • 12.
    Връзки (релации) Връзкитемежду таблиците се базират на взаимоотношения primary key / foreign key TOWN COUNTRY Primary key Primary key Foreign key 2 Берлин 4 Москва Мюнхен Пловдив София name 2 3 3 5 1 2 1 1 country_id id Русия 3 Германия 2 България 1 name id
  • 13.
    Връзки (релации) Външниятключ ( foreign key) е номер на запис (primary key) в друга таблица Връзките спестяват повтарянето на информация В примера името на държавата не се повтаря за всеки град Връзките имат множественост ( multiplicity) : 1 x много – държава / градове много x много – студент / учебен курс 1 x 1 – например човек / студент
  • 14.
    Множественост на връзкитеВръзка 1 x много (или много x 1) 1 запис от първата таблица съответства на много записи от втората таблица Използва се много често TOWN COUNTRY 2 Берлин 4 Москва Мюнхен Пловдив София name 2 3 3 5 1 2 1 1 country_id id Русия 3 Германия 2 България 1 name id
  • 15.
    Множественост на връзкитеВръзка много x много 1 запис от първата таблица съответства на много записи от втората таблица и обратното Реализира се чрез междинна таблица STUDENT COURSE STUDENT_COURSE Пенка 4 Гошо Минка Пешо name 3 2 1 id PHP 3 Java 2 .NET 1 name id 2 1 2 3 3 3 2 4 1 1 course_id student_id
  • 16.
    Множественост на връзкитеВръзка 1 x 1 1 запис от едната таблица съответства на точно 1 запис от другата таблица Моделира наследяване на таблици PERSON STUDENT Primary key Primary & Foreign key at the same time Мария Петър Иван name 24 26 72 age 3 2 1 i d Chemistry Computer Science specialty 3 2 id Ph.D. title 1 id
  • 17.
    Авторелации ( Self-relationships) Връзките primary/foreign key може да са в една и съща таблица Пример: служителите в една фирма имат началник, който също е служител Employees Primary key Foreign key 1 Георги Георгиев 3 Бай Генчо Петър Петров Иван Иванов Name 3 1 ( null) ManagerId 4 2 1 Id
  • 18.
    Релационна схема Релационнасхема на БД наричаме съвкупността от: схемите на всички таблици връзките между таблиците Релационната схема описва структурата на БД не съдържа данни, а само метаданни Релационните схеми се изобразяват графично чрез Entity/Relationship диаграми ( E/R Diagrams)
  • 19.
    E/R диаграми– пример Диаграмата е създадена с Microsoft SQL Server Enterprise Manager
  • 20.
    E/R диаграми– пример Диаграмата е създадена с PLATINUM ERwin
  • 21.
    Инструменти за E/R дизайн E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling Tools): CASE Studio Oracle Designer Microsoft Visio Computer Associates E R win SQL Server Enterprise Manager IBM Rational Rose theKompany Data Architect fabForce DBDesigner (GNU GP L проект с отворен код за Windows и Linux)
  • 22.
    Идентификация на същностите (entities) Entity таблиците представляват същности (обекти) от реалния свят Най-често са съществителни в текста на заданието (спецификацията) Например: Същности: студент, курс, град Да се разработи система за съхраняване на информация за студенти , които се обучават в различни курсове . Курсовете се провеждат в различни градове . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.
  • 23.
    Идентификация на колонитев таблиците Колоните в таблиците са характеристики на същностите Имат име и тип Например студентите имат: Име (текст) Факултетен номер (число) Снимка (бинарен блок) Дата на регистрация (дата)
  • 24.
    Идентификация на колонитев таблиците Колоните са пояснения за същностите в текста на заданието, например: Студентите имат следните характеристики: Име, факултетен номер, снимка, дата на регистрация и списък от курсове Да се разработи система за съхраняване на информация за студенти, които се обучават в различни курсове . Курсовете се провеждат в различни градове. При регистрация на студент за него се въвежда име , фак. номер , снимка и дата .
  • 25.
    Как да изберемпървичен ключ за entity таблиците? Винаги дефинирайте допълнителна колона за първичния ключ Не използвайте съществуваща колона (например ЕГН) Трябва да е число ( integer) Трябва да се обяви като primary key Слагайте първичния ключ като първа колона
  • 26.
    Идентификация на връзките(релации / relations) Връзките са отношения между същностите: &quot;Студенти се обучават в курсове&quot; – релация много към много &quot;Курсовете се провеждат в градове&quot; – релация много към едно Да се разработи система за съхраняване на информация за студенти , които се обучават в различни курсове . Курсовете се провеждат в различни градове . При регистрация на студент за него се въвежда име, фак. номер, снимка и дата.
  • 27.
    Нормализация Нормализацията нарелационната схема премахва повтарящите се данни За повече информация: http://en.wikipedia.org/wiki/Database_normalization
  • 28.
    Ограничения (Constraints)Ограниченията задават правила за данните, които не могат да бъдат нарушавани Ограничения по първичен ключ ( primary key constraint) Първичният ключ е уникален за всеки запис Ограничения по уникален ключ ( unique key constraint) Стойностите в дадена колона (или група колони) са уникални
  • 29.
    Ограничения (Constraints)Ограничение по външен ключ ( foreign key constraint) Стойността в дадена колона е ключ от друга таблица Ограничение по стойност ( check constraint) Стойностите в дадена колона изпълняват дадено условие. Пример: ( hour>=0) AND (hour<=24) name = upper(name)
  • 30.
    Индекси Индексите ускоряватскоростта на търсене на стойност в дадена колона или група от колони Ползват се при големи таблици Добавянето и изтриването от индексирани таблици е по-бавно
  • 31.
    Езикът SQLSQL (Structured Query Language) Стандартизиран декларативен език (стандарт) за манипулация на релационни бази от данни SQL поддържа: Създаване, промяна и изтриване на таблици и други обекти в БД Търсене, извличане, добавяне, промяна и изтриване на данни
  • 32.
    Езикът SQLSQL се състои от : DDL – Data Definition Language Команди CREATE, ALTER, DROP DML – Data Manipulation Language Команди SELECT, INSERT, UPDATE, DELETE Пример за SQL SELECT заявка: SELECT Town.name, Country.name FROM Town, Country WHERE Town.country_id = Country.id
  • 33.
    Транзакции Транзакциите сапоследователности от действия (заявки към базата данни), които се изпълняват атомарно: или се изпълняват всичките действия заедно (като едно цяло) или никое от действията не се изпълнява изобщо Пример: Банково прехвърляне на пари от една сметка в друга (теглене + внасяне) Ако тегленето или внасянето на парите пропадне, пропада цялата операция
  • 34.
    Отговорности на транзакциитеТранзакциите гарантират консистентността и възстановимостта на базата данни Промяната не се счита за окончателна докато не се извърши COMMIT Всички операции се извършват като едно цяло, включително операциите върху множество от записи
  • 35.
    Свойства на транзакциитеA tomicity – атомарност Изпълнява се всичко или нищо C onsistency – цялост на данните Базата винаги остава консистентна с логически коректни данни I solation – изолация на данните Отделните транзакции са изолирани една от друга в зависимост от избраното ниво D urability – стабилност на данните Ако една транзакция бъде потвърдена, тя не може да бъде изгубена
  • 36.
    Употреба на транзакцииКога се ползват транзакции? Винаги, когато за една бизнес операция се осъществява достъп до повече от една таблица Ако някоя операция не успее, анулираме транзакцията
  • 37.
    Нива на изолацияЗа повече информация: http:// en.wikipedia.org/wiki/Isolation_(database_systems )
  • 38.
  • 39.
    Упражнения Какви моделина базите от данни познавате? Кои са основните функции, изпълнявани от една система за управление на бази от данни (СУБД)? Дефинирайте понятието таблица в база от данни. Обяснете разликите между първичен и външен ключ. Посочете какви видове връзки между таблици познавате.
  • 40.
    Упражнения (2)За какво се използват ограниченията в една база от данни? Какво е основното предназначение на езика SQL? За какво се използват транзакциите? Дефинирайте техните отговорности.