Релационни бази от данни –  съдържание Модели на базите от данни Релационните бази от данни RDBMS  системи Таблици, връзки, множественост на връзките,  E/R  диаграми Нормализация Ограничения ( constraints) Индекси
Езикът SQL Stored procedures Изгледи (views) Тригери (triggers) Транзакции Релационни бази от данни –  съдържание
Релационни бази от данни Модели на базите от данни йерархичен (дървовиден) мрежови релационен (табличен) обектно-релационен Релационните бази от данни представляват съвкупности от таблици и връзки между тях  ( релации) ползват здрава математическа основа: релационната алгебра
Системи за управление на БД Системи за управление на релационни бази от данни  ( СУБД) =  Relational Database Management System  ( RDBMS) Осигуряват програмни средства за: създаване / промяна / изтриване на таблици и връзки между тях добавяне, промяна, изтриване, търсене и извличане на данни от таблиците поддръжка на езика  SQL управление на транзакциите (незадължително)
Системи за управление на БД RDBMS  системите се наричат още сървъри за управление на бази от данни или просто  "Database  сървъри " По-известни  RDBMS  сървъри: Microsoft SQL Server Oracle Database IBM DB2 PostgreSQL MySQL Borland Interbase
Таблици Таблиците представляват съвкупност от стойности, подредени в редове и колони. Пример (таблица  PERSONS) : Редовете имат еднаква структура Колоните имат име и тип (число, символен низ, дата или др.) Кулов Гюров Наков family CodeAttest Мартин 3 BSH Бранимир 2 БАРС Светлин 1 employer name id
Схема на таблица Схема на таблица е наредена последователност от описания на колони (име и тип) Например таблицата   PERSONS   има следната схема: PERSONS ( id :   число, name : символен низ, family : символен низ, employer:  символен низ )
Първичен ключ Първичният ключ  (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 1 –  например човек / име на човек 1 x  много – държава / градове много  x  много – студент / учебен курс
Множественост на връзките Връзка  1 x 1 1 запис от едната таблица съответства на точно 1 запис от другата таблица Рядко се използва – няма смисъл TOWN POPULATION 4 Берлин 4 Москва Мюнхен Пловдив София name 3 3 5 5 2 2 1 1 popul_id id 3 400 000 4 11 800 000 1 260 000 720 000 1 177 000 population 3 5 2 1 id
Множественост на връзките Връзка  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
Релационна схема Релационна схема на БД наричаме съвкупността от: схемите на всички таблици връзките между таблиците Релационната схема описва структурата на БД не съдържа данни, а само метаданни Релационните схеми се изобразяват графично чрез  Entity/Relationship  диаграми ( E/R diagrams)
E/R  диаграми – пример Диаграмата е създадена с  Microsoft SQL Server Enterprise Manager
E/R  диаграми – пример Диаграмата е създадена с  PLATINUM ERwin
E/R  диаграми – пример Диаграмата е създадена с fabFORCE DB Designer
Инструменти за  E/R  дизайн E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling Tools): Microsoft Visio Oracle Designer Computer Associates Erwin SQL Server Enterprise Manager IBM Rational Rose theKompany Data Architect fabForce DBDesigner (GNU GP L  проект с отворен код за Windows и Linux)
Нормализация Нормализацията на релационната схема премахва повтарящите се данни Денормализираните данни съдържат много повторения: павилион "24 часа" павилион "24 часа" супермаркет "Менте" супермаркет "Менте" магазин Шуменско пиво АД Загорка АД Фурна "Пушека" Млекис ООД произво-дител 0.67 0.58 0.55 0.67 цена безалкох. напитки безалкох. напитки хранителни стоки хранителни стоки категория Варна бира "Tuborg" Варна София София град бира "Загорка" хляб "Добружда" кисело мляко продукт
Нормализация 1-ва нормална форма Данните имат табличен вид Полетата в редовете са атомарни (неделими) стойности Няма повторения на данни в рамките на един ред Дефиниран е първичен ключ за всяка таблица Дядо Мраз Бай Киро автор 7234534450 3847028437 ISBN  ( PK) [email_address] [email_address] автор _ email Beginning SQL .NET Framework книга
Нормализация 2-ра нормална форма Запазва изискванията на 1-ва нормална форма В таблиците няма колони, зависещи от част от първичния ключ (ако е съставен от няколко колони) Цената зависи от книгата E-mail -ът зависи от автора 19.95 37.25 цена Дядо Мраз Бай Киро автор  (PK) [email_address] [email_address] автор _ email Beginning SQL .NET Framework книга  ( PK)
Нормализация 3-та нормална форма Запазва изискванията на 2-ра нормална форма Единствените зависимости между колоните са "колона зависи от първичния ключ" 4 3 2 1 id 1 2 5 4 . 38 6 ракия "Пещерска" 1 4 2 0.55 3 хляб "Добружда" 1 4 магазин _id 4 2 производител _id 0.67 0.67 цена 4 2 категория _id 3 бира "Tuborg" 1 град _id кисело мляко продукт
Нормализация 4 -та нормална форма Запазва изискванията на 3-та нормална форма В таблиците има най-много една колона, съдържаща атрибут с няколко възможни стойности  (multi-valued attribute)  за един ключ Един автор има много книги Един автор има много статии Best Practices in J2EE Regular Expressions in .NET статия Mastering J2EE . NET Programming книга 4 2 автор _id
Нормализация Пример за нормализирана схема  ( в 4-та нормална форма): PRODUCT VENDOR CATEGORY STORE TOWN "Загорка" АД "Млекс" ООД име 4 2 id хранителни бира име 2 4 id 4 3 2 1 id 1 2 5 4 . 38 6 ракия "Пещерска" 1 4 2 0.55 3 хляб "Добружда" 1 4 магазин _id 4 2 производител _id 0.67 0.67 цена 4 2 категория _id 3 бира "Tuborg" 1 град _id кисело мляко продукт METRO Billa име 4 1 id Варна София име 3 1 id
Constraints Ограниченията ( constraints)  задават правила, за данните, които не могат да бъдат нарушавани Ограничение по първичен ключ ( primary key constraint) Първичният ключ е уникален за всеки запис Ограничение по уникален ключ ( unique key constraint) Стойностите в дадена колона (или група колони) са уникални
Constraints Ограничение по външен ключ ( foreign key constraint) Стойността в дадена колона е ключ от друга таблица  Ограничение по стойност ( check constraint) Стойностите в дадена колона   изпълняват дадено условие Например: ( hour>=0)   AND   (hour<=24) name = upper(name)
Индекси Индексите ускоряват скоростта на търсене на стойност в дадена колона или група от колони Ползват се при големи таблици Реализират се най-често с  B- дървета или хеш-таблици Могат да бъдат външни (извън таблицата) или вградени Добавянето и изтриването от индексирани таблици е по-бавно
Езикът  SQL SQL (Structured Query Language) Стандартизиран декларативен език (стандарт) за манипулация на релационни бази от данни SQL-92 –  поддържан от всички  RDBMS SQL-99 –  навлиза все повече 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
Stored procedures Процедури на ниво база (запазени процедури,  stored procedures) Програмен код, който се изпълнява в самия сървър за бази данни Работят много по-бързо от външен код Данните са локално достъпни Могат да приемат параметри Могат да връщат резултат единична стойност съвкупност от записи ( record set)
Stored procedures Процедури на ниво база се пишат на език, разширение на  SQL T-SQL  –  SQL   server PL/SQL –  в  Oracle Пример за процедура на  T-SQL : CREATE PROCEDURE sp_GetInventory   @location varchar(10) AS   SELECT Product, Quantity   FROM Inventory   WHERE Warehouse = @location
Изгледи ( views) Изгледите представляват именувани  SQL SELECT  заявки, които се използват като таблици Позволяват улеснение при писането на сложни  SQL  заявки Прилагат се за фина настройка на сигурността: На даден потребител не се дават права над никоя таблица Дават му се права само над някои изгледи (подмножество от данните)
Изгледи ( views) –  пример T_COMPANY T_TOWN T_COUNTRY CREATE VIEW V_BG_COMPANY AS SELECT  T_COMPANY.id AS id, T_COMPANY.company AS company FROM T_COMPANY INNER JOIN  (T_TOWN INNER JOIN T_COUNTRY ON T_TOWN.country_id=T_COUNTRY.id) ON T_COMPANY.town_id=T_TOWN.id WHERE T_COUNTRY.country=&quot;България&quot;; V_COMPANY_BG 4 3 2 1 id 1 ХардСофт АД 2 BulkSoft Inc. 3 1 town _id Спутник АД Менте ООД company Москва New York София town 3 2 1 id 2 3 1 country_id 3 2 1 id САЩ Русия България country 3 1 id ХардСофт АД Менте ООД company
Тригери  (triggers) Тригерите ( triggers)  са процедури на ниво база, които се активират при някакво условие, например: при добавяне на запис при промяна на запис при изтриване на запис Тригерите могат да извършват допълнителна обработка на данните промяна на данните при добавяне поддръжка на логове и история
Тригери – пример Имаме таблица с имена на фирми: Тригер, който при добавяне на нова   фирма добавя  &quot;Ltd.&quot;  към името й : CREATE TABLE T_COMPANY( id int NOT NULL, name varchar(50) NOT NULL) CREATE TRIGGER trg_COMPANY_INSERT ON COMPANY FOR INSERT AS  UPDATE COMPANY SET name = name + '  Ltd.' WHERE id = (SELECT id FROM inserted)
Транзакции Транзакциите са последователности от действия (заявки към базата данни), които се изпълняват атомарно: или се изпълняват всичките заедно (като едно цяло) или никое от действията не се изпълнява изобщо Пример: Банково прехвърляне на пари от една сметка в друга Ако тегленето или внасянето на парите пропадне, пропада целата операция
Транзакции – пример Имаме таблица с банкови сметки: Използваме транзакция при трансфер на пари от сметка на сметка: CREATE TABLE  ACCOUNT ( id int NOT NULL, balance   decimal  NOT NULL) CREATE PROCEDURE sp_Transfer_Money( @from_acc int, @to_acc int, @ammount decimal ) AS (примерът продължава)
Транзакции – пример BEGIN TRANSACTION UPDATE ACCOUNT set balance = balance - @ammount WHERE id = @from_acc IF @@rowcount <> 1 BEGIN ROLLBACK TRANSACTION RAISERROR ('Invalid source account!', 16, 1) RETURN END UPDATE ACCOUNT set balance = balance + @ammount WHERE id = @to_acc IF @@rowcount <> 1 BEGIN ROLLBACK TRANSACTION RAISERROR ('Invalid destination account!', 16, 1) RETURN END  COMMIT TRANSACTION
Транзакции и изолация Транзакциите могат да дефинират нива на изолация  (isolation levels) да не не Repeatable read да да не Read committed не да четене на непотвър-дени данни не да неповто-ряемост при четене не да фантомни записи Serializable Read uncommitted ниво на изолация

Nakov - RDBMS Systems - Intro

  • 1.
    Релационни бази отданни – съдържание Модели на базите от данни Релационните бази от данни RDBMS системи Таблици, връзки, множественост на връзките, E/R диаграми Нормализация Ограничения ( constraints) Индекси
  • 2.
    Езикът SQL Storedprocedures Изгледи (views) Тригери (triggers) Транзакции Релационни бази от данни – съдържание
  • 3.
    Релационни бази отданни Модели на базите от данни йерархичен (дървовиден) мрежови релационен (табличен) обектно-релационен Релационните бази от данни представляват съвкупности от таблици и връзки между тях ( релации) ползват здрава математическа основа: релационната алгебра
  • 4.
    Системи за управлениена БД Системи за управление на релационни бази от данни ( СУБД) = Relational Database Management System ( RDBMS) Осигуряват програмни средства за: създаване / промяна / изтриване на таблици и връзки между тях добавяне, промяна, изтриване, търсене и извличане на данни от таблиците поддръжка на езика SQL управление на транзакциите (незадължително)
  • 5.
    Системи за управлениена БД RDBMS системите се наричат още сървъри за управление на бази от данни или просто &quot;Database сървъри &quot; По-известни RDBMS сървъри: Microsoft SQL Server Oracle Database IBM DB2 PostgreSQL MySQL Borland Interbase
  • 6.
    Таблици Таблиците представляватсъвкупност от стойности, подредени в редове и колони. Пример (таблица PERSONS) : Редовете имат еднаква структура Колоните имат име и тип (число, символен низ, дата или др.) Кулов Гюров Наков family CodeAttest Мартин 3 BSH Бранимир 2 БАРС Светлин 1 employer name id
  • 7.
    Схема на таблицаСхема на таблица е наредена последователност от описания на колони (име и тип) Например таблицата PERSONS има следната схема: PERSONS ( id : число, name : символен низ, family : символен низ, employer: символен низ )
  • 8.
    Първичен ключ Първичниятключ (primary key) е колона от таблицата, която уникално идентифицира даден неин ред Два записа (реда) са различни когато са различни първичните им ключове Първичният ключ може да е съвкупност от няколко колони Primary key Кулов Гюров Наков family CodeAttest Мартин 3 BSH Бранимир 2 БАРС Светлин 1 employer name id
  • 9.
    Връзки (релации) Връзкитемежду таблиците се базират на взаимоотношения 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
  • 10.
    Връзки (релации) Външниятключ ( foreign key) е номер на запис (primary key) в друга таблица Връзките спестяват повтарянето на информация В примера името на държавата не се повтаря за всеки град Връзките имат множественост ( multiplicity) : 1 x 1 – например човек / име на човек 1 x много – държава / градове много x много – студент / учебен курс
  • 11.
    Множественост на връзкитеВръзка 1 x 1 1 запис от едната таблица съответства на точно 1 запис от другата таблица Рядко се използва – няма смисъл TOWN POPULATION 4 Берлин 4 Москва Мюнхен Пловдив София name 3 3 5 5 2 2 1 1 popul_id id 3 400 000 4 11 800 000 1 260 000 720 000 1 177 000 population 3 5 2 1 id
  • 12.
    Множественост на връзкитеВръзка 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
  • 13.
    Множественост на връзкитеВръзка много 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
  • 14.
    Релационна схема Релационнасхема на БД наричаме съвкупността от: схемите на всички таблици връзките между таблиците Релационната схема описва структурата на БД не съдържа данни, а само метаданни Релационните схеми се изобразяват графично чрез Entity/Relationship диаграми ( E/R diagrams)
  • 15.
    E/R диаграми– пример Диаграмата е създадена с Microsoft SQL Server Enterprise Manager
  • 16.
    E/R диаграми– пример Диаграмата е създадена с PLATINUM ERwin
  • 17.
    E/R диаграми– пример Диаграмата е създадена с fabFORCE DB Designer
  • 18.
    Инструменти за E/R дизайн E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling Tools): Microsoft Visio Oracle Designer Computer Associates Erwin SQL Server Enterprise Manager IBM Rational Rose theKompany Data Architect fabForce DBDesigner (GNU GP L проект с отворен код за Windows и Linux)
  • 19.
    Нормализация Нормализацията нарелационната схема премахва повтарящите се данни Денормализираните данни съдържат много повторения: павилион &quot;24 часа&quot; павилион &quot;24 часа&quot; супермаркет &quot;Менте&quot; супермаркет &quot;Менте&quot; магазин Шуменско пиво АД Загорка АД Фурна &quot;Пушека&quot; Млекис ООД произво-дител 0.67 0.58 0.55 0.67 цена безалкох. напитки безалкох. напитки хранителни стоки хранителни стоки категория Варна бира &quot;Tuborg&quot; Варна София София град бира &quot;Загорка&quot; хляб &quot;Добружда&quot; кисело мляко продукт
  • 20.
    Нормализация 1-ва нормалнаформа Данните имат табличен вид Полетата в редовете са атомарни (неделими) стойности Няма повторения на данни в рамките на един ред Дефиниран е първичен ключ за всяка таблица Дядо Мраз Бай Киро автор 7234534450 3847028437 ISBN ( PK) [email_address] [email_address] автор _ email Beginning SQL .NET Framework книга
  • 21.
    Нормализация 2-ра нормалнаформа Запазва изискванията на 1-ва нормална форма В таблиците няма колони, зависещи от част от първичния ключ (ако е съставен от няколко колони) Цената зависи от книгата E-mail -ът зависи от автора 19.95 37.25 цена Дядо Мраз Бай Киро автор (PK) [email_address] [email_address] автор _ email Beginning SQL .NET Framework книга ( PK)
  • 22.
    Нормализация 3-та нормалнаформа Запазва изискванията на 2-ра нормална форма Единствените зависимости между колоните са &quot;колона зависи от първичния ключ&quot; 4 3 2 1 id 1 2 5 4 . 38 6 ракия &quot;Пещерска&quot; 1 4 2 0.55 3 хляб &quot;Добружда&quot; 1 4 магазин _id 4 2 производител _id 0.67 0.67 цена 4 2 категория _id 3 бира &quot;Tuborg&quot; 1 град _id кисело мляко продукт
  • 23.
    Нормализация 4 -танормална форма Запазва изискванията на 3-та нормална форма В таблиците има най-много една колона, съдържаща атрибут с няколко възможни стойности (multi-valued attribute) за един ключ Един автор има много книги Един автор има много статии Best Practices in J2EE Regular Expressions in .NET статия Mastering J2EE . NET Programming книга 4 2 автор _id
  • 24.
    Нормализация Пример занормализирана схема ( в 4-та нормална форма): PRODUCT VENDOR CATEGORY STORE TOWN &quot;Загорка&quot; АД &quot;Млекс&quot; ООД име 4 2 id хранителни бира име 2 4 id 4 3 2 1 id 1 2 5 4 . 38 6 ракия &quot;Пещерска&quot; 1 4 2 0.55 3 хляб &quot;Добружда&quot; 1 4 магазин _id 4 2 производител _id 0.67 0.67 цена 4 2 категория _id 3 бира &quot;Tuborg&quot; 1 град _id кисело мляко продукт METRO Billa име 4 1 id Варна София име 3 1 id
  • 25.
    Constraints Ограниченията (constraints) задават правила, за данните, които не могат да бъдат нарушавани Ограничение по първичен ключ ( primary key constraint) Първичният ключ е уникален за всеки запис Ограничение по уникален ключ ( unique key constraint) Стойностите в дадена колона (или група колони) са уникални
  • 26.
    Constraints Ограничение повъншен ключ ( foreign key constraint) Стойността в дадена колона е ключ от друга таблица Ограничение по стойност ( check constraint) Стойностите в дадена колона изпълняват дадено условие Например: ( hour>=0) AND (hour<=24) name = upper(name)
  • 27.
    Индекси Индексите ускоряватскоростта на търсене на стойност в дадена колона или група от колони Ползват се при големи таблици Реализират се най-често с B- дървета или хеш-таблици Могат да бъдат външни (извън таблицата) или вградени Добавянето и изтриването от индексирани таблици е по-бавно
  • 28.
    Езикът SQLSQL (Structured Query Language) Стандартизиран декларативен език (стандарт) за манипулация на релационни бази от данни SQL-92 – поддържан от всички RDBMS SQL-99 – навлиза все повече SQL поддържа: Създаване, промяна, изтриване на таблици и други обекти в БД Търсене, извличане, добавяне, промяна и изтриване на данни
  • 29.
    Езикът 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
  • 30.
    Stored procedures Процедурина ниво база (запазени процедури, stored procedures) Програмен код, който се изпълнява в самия сървър за бази данни Работят много по-бързо от външен код Данните са локално достъпни Могат да приемат параметри Могат да връщат резултат единична стойност съвкупност от записи ( record set)
  • 31.
    Stored procedures Процедурина ниво база се пишат на език, разширение на SQL T-SQL – SQL server PL/SQL – в Oracle Пример за процедура на T-SQL : CREATE PROCEDURE sp_GetInventory @location varchar(10) AS SELECT Product, Quantity FROM Inventory WHERE Warehouse = @location
  • 32.
    Изгледи ( views)Изгледите представляват именувани SQL SELECT заявки, които се използват като таблици Позволяват улеснение при писането на сложни SQL заявки Прилагат се за фина настройка на сигурността: На даден потребител не се дават права над никоя таблица Дават му се права само над някои изгледи (подмножество от данните)
  • 33.
    Изгледи ( views)– пример T_COMPANY T_TOWN T_COUNTRY CREATE VIEW V_BG_COMPANY AS SELECT T_COMPANY.id AS id, T_COMPANY.company AS company FROM T_COMPANY INNER JOIN (T_TOWN INNER JOIN T_COUNTRY ON T_TOWN.country_id=T_COUNTRY.id) ON T_COMPANY.town_id=T_TOWN.id WHERE T_COUNTRY.country=&quot;България&quot;; V_COMPANY_BG 4 3 2 1 id 1 ХардСофт АД 2 BulkSoft Inc. 3 1 town _id Спутник АД Менте ООД company Москва New York София town 3 2 1 id 2 3 1 country_id 3 2 1 id САЩ Русия България country 3 1 id ХардСофт АД Менте ООД company
  • 34.
    Тригери (triggers)Тригерите ( triggers) са процедури на ниво база, които се активират при някакво условие, например: при добавяне на запис при промяна на запис при изтриване на запис Тригерите могат да извършват допълнителна обработка на данните промяна на данните при добавяне поддръжка на логове и история
  • 35.
    Тригери – примерИмаме таблица с имена на фирми: Тригер, който при добавяне на нова фирма добавя &quot;Ltd.&quot; към името й : CREATE TABLE T_COMPANY( id int NOT NULL, name varchar(50) NOT NULL) CREATE TRIGGER trg_COMPANY_INSERT ON COMPANY FOR INSERT AS UPDATE COMPANY SET name = name + ' Ltd.' WHERE id = (SELECT id FROM inserted)
  • 36.
    Транзакции Транзакциите сапоследователности от действия (заявки към базата данни), които се изпълняват атомарно: или се изпълняват всичките заедно (като едно цяло) или никое от действията не се изпълнява изобщо Пример: Банково прехвърляне на пари от една сметка в друга Ако тегленето или внасянето на парите пропадне, пропада целата операция
  • 37.
    Транзакции – примерИмаме таблица с банкови сметки: Използваме транзакция при трансфер на пари от сметка на сметка: CREATE TABLE ACCOUNT ( id int NOT NULL, balance decimal NOT NULL) CREATE PROCEDURE sp_Transfer_Money( @from_acc int, @to_acc int, @ammount decimal ) AS (примерът продължава)
  • 38.
    Транзакции – примерBEGIN TRANSACTION UPDATE ACCOUNT set balance = balance - @ammount WHERE id = @from_acc IF @@rowcount <> 1 BEGIN ROLLBACK TRANSACTION RAISERROR ('Invalid source account!', 16, 1) RETURN END UPDATE ACCOUNT set balance = balance + @ammount WHERE id = @to_acc IF @@rowcount <> 1 BEGIN ROLLBACK TRANSACTION RAISERROR ('Invalid destination account!', 16, 1) RETURN END COMMIT TRANSACTION
  • 39.
    Транзакции и изолацияТранзакциите могат да дефинират нива на изолация (isolation levels) да не не Repeatable read да да не Read committed не да четене на непотвър-дени данни не да неповто-ряемост при четене не да фантомни записи Serializable Read uncommitted ниво на изолация