• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Nakov - Database Design with SQL Server

on

  • 2,488 views

Релационни бази от данни. Таблици, първичен ключ, външен ключ, връзки, множественост, E/R диаграми, ...

Релационни бази от данни. Таблици, първичен ключ, външен ключ, връзки, множественост, E/R диаграми, нормализация. Инструментът SQL Server Management Studio 2005. Създаване на таблици и връзки. Изграждане на E/R диаграми

Statistics

Views

Total Views
2,488
Views on SlideShare
2,478
Embed Views
10

Actions

Likes
0
Downloads
21
Comments
0

1 Embed 10

http://www.slideshare.net 10

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Nakov - Database Design with SQL Server Nakov - Database Design with SQL Server Presentation Transcript

    • Релационни бази от данни – съдържание  Модели на базите от данни  Релационните бази от данни  RDBMS системи  Таблици, връзки, множественост на връзките, E/R диаграми  Нормализация  Ограничения (constraints)  Индекси
    • Релационни бази от данни – съдържание  Езикът SQL  Stored procedures  Изгледи (views)  Тригери (triggers)  Транзакции
    • Релационни бази от данни  Модели на базите от данни  йерархичен (дървовиден)  мрежови  релационен (табличен)  обектно-релационен  Релационните бази от данни  представляват съвкупности от таблици и връзки между тях (релации)  ползват здрава математическа основа: релационната алгебра
    • Системи за управление на БД  Системи за управление на релационни бази от данни (СУБД) = Relational Database Management System (RDBMS)  Осигуряват програмни средства за:  създаване / промяна / изтриване на таблици и връзки между тях  добавяне, промяна, изтриване, търсене и извличане на данни от таблиците  поддръжка на езика SQL  управление на транзакциите (незадължително)
    • Системи за управление на БД  RDBMS системите се наричат още  сървъри за управление на бази от данни  или просто quot;Database сървъриquot;  По-известни RDBMS сървъри:  Microsoft SQL Server  Oracle Database  IBM DB2  PostgreSQL  MySQL  Borland Interbase
    • Таблици  Таблиците представляват съвкупност от стойности, подредени в редове и колони. Пример (таблица PERSONS): id name family employer 1 Светлин Наков БАРС 2 Бранимир Гюров BSH 3 Мартин Кулов CodeAttest  Редовете имат еднаква структура  Колоните имат име и тип (число, символен низ, дата или др.)
    • Схема на таблица  Схема на таблица е наредена последователност от описания на колони (име и тип)  Например таблицата PERSONS има следната схема: PERSONS ( id: число, name: символен низ, family: символен низ, employer: символен низ )
    • Първичен ключ  Първичният ключ (primary key) е колона от таблицата, която уникално идентифицира даден неин ред Primary id name family employer key 1 Светлин Наков БАРС 2 Бранимир Гюров BSH 3 Мартин Кулов CodeAttest  Два записа (реда) са различни когато са различни първичните им ключове  Първичният ключ може да е съвкупност от няколко колони
    • Връзки (релации)  Връзките между таблиците се базират на взаимоотношения primary key / foreign key Primary Foreign key key Primary TOWN key id name country_id COUNTRY 1 София 1 id name 2 Пловдив 1 1 България 3 Мюнхен 2 2 Германия 4 Берлин 2 3 Русия 5 Москва 3
    • Връзки (релации)  Външният ключ (foreign key) е номер на запис (primary key) в друга таблица  Връзките спестяват повтарянето на информация  В примера името на държавата не се повтаря за всеки град  Връзките имат множественост (multiplicity) :  1 x 1 – например човек / име на човек  1 x много – държава / градове  много x много – студент / учебен курс
    • Множественост на връзките  Връзка 1 x 1  1 запис от едната таблица съответства на точно 1 запис от другата таблица  Рядко се използва – няма смисъл TOWN POPULATION id name popul_id id population 1 София 1 1 1 177 000 2 Пловдив 2 2 720 000 3 Мюнхен 3 3 1 260 000 4 Берлин 4 4 3 400 000 5 Москва 5 5 11 800 000
    • Множественост на връзките  Връзка 1 x много (или много x 1)  1 запис от първата таблица съответства на много записи от втората таблица  Използва се много често TOWN id name country_id COUNTRY 1 София 1 id name 2 Пловдив 1 1 България 3 Мюнхен 2 2 Германия 4 Берлин 2 3 Русия 5 Москва 3
    • Множественост на връзките  Връзка много x много  1 запис от първата таблица съответства на много записи от втората таблица и обратното  Реализира се чрез междинна таблица STUDENT STUDENT_COURSE student_id course_id COURSE id name 1 Пешо 1 1 id name 1 2 1 .NET 2 Минка 3 2 2 Java 3 Гошо 3 3 3 PHP 4 Пенка 4 2
    • Релационна схема  Релационна схема на БД наричаме съвкупността от:  схемите на всички таблици  връзките между таблиците  Релационната схема описва структурата на БД  не съдържа данни, а само метаданни  Релационните схеми се изобразяват графично чрез 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 GPL проект с отворен код за Windows и Linux)
    • Нормализация  Нормализацията на релационната схема премахва повтарящите се данни  Денормализираните данни съдържат много повторения: продукт произво- цена категория магазин град дител кисело Млекис 0.67 хранителни супермаркет София мляко ООД стоки quot;Ментеquot; хляб Фурна 0.55 хранителни супермаркет София quot;Добруждаquot; quot;Пушекаquot; стоки quot;Ментеquot; бира Загорка АД 0.58 безалкох. павилион quot;24 Варна quot;Загоркаquot; напитки часаquot; бира Шуменско 0.67 безалкох. павилион quot;24 Варна quot;Tuborgquot; пиво АД напитки часаquot;
    • Нормализация  1-ва нормална форма  Данните имат табличен вид  Полетата в редовете са атомарни (неделими) стойности  Няма повторения на данни в рамките на един ред  Дефиниран е първичен ключ за всяка таблица книга ISBN (PK) автор автор_email .NET Framework 3847028437 Бай Киро bai-kiro@abv.bg Beginning SQL 7234534450 Дядо Мраз dedo@mraz.org
    • Нормализация  2-ра нормална форма  Запазва изискванията на 1-ва нормална форма  В таблиците няма колони, зависещи от част от първичния ключ (ако е съставен от няколко колони) Цената зависи E-mail-ът зависи от книгата от автора книга (PK) автор (PK) цена автор_email .NET Framework Бай Киро 37.25 bai-kiro@abv.bg Beginning SQL Дядо Мраз 19.95 dedo@mraz.org
    • Нормализация  3-та нормална форма  Запазва изискванията на 2-ра нормална форма  Единствените зависимости между колоните са quot;колона зависи от първичния ключquot; id продукт производ цена катего магаз град ител_id рия_id ин_id _id 1 кисело мляко 2 0.67 2 4 1 2 хляб quot;Добруждаquot; 3 0.55 2 4 1 3 ракия quot;Пещерскаquot; 6 4.38 5 2 1 4 бира quot;Tuborgquot; 4 0.67 4 1 3
    • Нормализация  4-та нормална форма  Запазва изискванията на 3-та нормална форма  В таблиците има най-много една колона, съдържаща атрибут с няколко възможни стойности (multi- valued attribute) за един ключ Един автор има Един автор има много книги много статии автор_id книга статия 2 .NET Programming Regular Expressions in .NET 4 Mastering J2EE Best Practices in J2EE
    • Нормализация  Пример за нормализирана схема (в 4-та нормална форма): PRODUCT id продукт производ цена катего магаз град ител_id рия_id ин_id _id 1 кисело мляко 2 0.67 2 4 1 2 хляб quot;Добруждаquot; 3 0.55 2 4 1 3 ракия quot;Пещерскаquot; 6 4.38 5 2 1 4 бира quot;Tuborgquot; 4 0.67 4 1 3 VENDOR CATEGORY STORE TOWN id име id име id име id име 2 quot;Млексquot; ООД 4 бира 1 Billa 1 София 4 quot;Загоркаquot; АД 2 хранителни 4 METRO 3 Варна
    • 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 id company town id town countr id country _id y_id 1 България 1 Менте ООД 1 1 София 1 2 Русия 2 BulkSoft Inc. 2 2 New York 3 3 САЩ 3 ХардСофт АД 1 3 Москва 2 4 Спутник АД 3 CREATE VIEW V_BG_COMPANY AS SELECT T_COMPANY.id AS id, V_COMPANY_BG T_COMPANY.company AS company FROM T_COMPANY INNER JOIN id company (T_TOWN INNER JOIN T_COUNTRY ON T_TOWN.country_id=T_COUNTRY.id) 1 Менте ООД ON T_COMPANY.town_id=T_TOWN.id WHERE 3 ХардСофт АД T_COUNTRY.country=quot;Българияquot;;
    • Тригери (triggers)  Тригерите (triggers) са процедури на ниво база, които се активират при някакво условие, например:  при добавяне на запис  при промяна на запис  при изтриване на запис  Тригерите могат да извършват допълнителна обработка на данните  промяна на данните при добавяне  поддръжка на логове и история
    • Тригери – пример  Имаме таблица с имена на фирми: CREATE TABLE T_COMPANY( id int NOT NULL, name varchar(50) NOT NULL)  Тригер, който при добавяне на нова фирма добавя quot;Ltd.quot; към името й: 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) ниво на изолация четене на неповто- фантомни непотвър- ряемост записи дени данни при четене Read uncommitted да да да Read committed не да да Repeatable read не не да Serializable не не не