introduction to-rdbms-systems

40
Въведение в Релационните Бази от Данни

Upload: bg-java-ee-course

Post on 13-Jan-2015

2.840 views

Category:

Education


3 download

DESCRIPTION

Introduction to relational databases, tables, relations, primary and foreign keys

TRANSCRIPT

Page 1: Introduction to-RDBMS-systems

Въведение в Релационните Бази от Данни

Page 2: Introduction to-RDBMS-systems

Contents

1. Модели на базите от данни

2. Релационните бази от данни

3. RDBMS системи

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

5. Нормализация

6. Ограничения (constraints)

7. Индекси

Page 3: Introduction to-RDBMS-systems

Contents

8. Езикът SQL

9. Транзакции и изолация

Page 4: Introduction to-RDBMS-systems

Релационни бази от данни

• Модели на базите от данни• йерархичен (дървовиден)• мрежови• релационен (табличен)• обектно-релационен

• Релационни бази от данни• Представляват съвкупности от таблици и

връзки между тях (релации)

Page 5: Introduction to-RDBMS-systems

Системи за управление на БД

• Системи за управление на релационни бази от данни (СУБД) = Relational Database Management System (RDBMS)

• Осигуряват програмни средства за:

• създаване / промяна / изтриване на таблици и връзки между тях

• добавяне, промяна, изтриване, търсене и извличане на данни от таблиците

• поддръжка на езика SQL

• управление на транзакции (незадължително)

Page 6: Introduction to-RDBMS-systems

Системи за управление на БД

• RDBMS системите се наричат още• сървъри за управление на бази от данни• или просто "Database сървъри"

• По-известни RDBMS сървъри:• Oracle Database• Microsoft SQL Server• IBM DB2• PostgreSQL• MySQL• Borland Interbase

Page 7: Introduction to-RDBMS-systems

Таблици

• Таблиците представляват съвкупност от стойности, подредени в редове и колони. Пример (таблица PERSONS):

• Редовете имат еднаква структура• Колоните имат име и тип (число, символен

низ, дата или др.)

id name family employer1 Светлин Наков БАРС

2 Росен Спасов Software AG

3 Марио Пешев Freelancer

Page 8: Introduction to-RDBMS-systems

Схема на таблица

• Схема на таблица е наредена последователност от описания на колони (име и тип)

• Например таблицата PERSONS има следната схема:

PERSONS (PERSONS ( idid:: число,число, namename: символен низ,: символен низ, familyfamily: символен низ,: символен низ, employer: employer: символен низсимволен низ))

Page 9: Introduction to-RDBMS-systems

Типове данни в Oracle

• Числови• bit (1-bit), integer (32-bit), bigint (64-bit)• float, real, number(scale, precision)• money – за парични пресмятания

• Текстови• char(size) – фиксирана дължина• varchar2(size) – символен низ• nvarchar2(size) – Unicode низ• text, ntext – дълъг символен низ

Page 10: Introduction to-RDBMS-systems

Типове данни в Oracle

• Бинарни данни• varbinary(size) – редица от байтове• image – бинарен блок до 1 GB

• Дати и часове• datetime – дата и час• smalldatetime – дата с точност 1 минута

• Други• timestamp – автоматична версия на ред

Page 11: Introduction to-RDBMS-systems

Първичен ключ

• Първичният ключ (primary key) е колона от таблицата, която уникално идентифицира даден неин ред

• Два записа (реда) са различни когато са различни първичните им ключове

• Първичният ключ може да е съвкупност от няколко колони

id name family employer1 Светлин Наков БАРС

2 Бранимир Гюров BSH

3 Мартин Кулов CodeAttest

Primary Primary keykey

Page 12: Introduction to-RDBMS-systems

Връзки (релации)

• Връзките между таблиците се базират на взаимоотношения primary key / foreign key

id name country_id1 София 1

2 Пловдив 1

3 Мюнхен 2

4 Берлин 2

5 Москва 3

id name1 България

2 Германия

3 Русия

TOWNTOWN

COUNTRYCOUNTRY

Primary Primary keykey

Primary Primary keykey

Foreign Foreign keykey

Page 13: Introduction to-RDBMS-systems

Връзки (релации)

• Външният ключ (foreign key) е номер на запис (primary key) в друга таблица

• Връзките спестяват повтарянето на информация• В примера името на държавата не се повтаря

за всеки град

• Връзките имат множественост (multiplicity) :• 1 x много – държава / градове

• много x много – студент / учебен курс

• 1 x 1 – например човек / студент

Page 14: Introduction to-RDBMS-systems

Множественост на връзките

• Връзка 1 x много (или много x 1)

• 1 запис от първата таблица съответства на много записи от втората таблица

• Използва се много често

id name country_id1 София 1

2 Пловдив 1

3 Мюнхен 2

4 Берлин 2

5 Москва 3

id name1 България

2 Германия

3 Русия

TOWNTOWN

COUNTRYCOUNTRY

Page 15: Introduction to-RDBMS-systems

Множественост на връзките

• Връзка много x много

• 1 запис от първата таблица съответства на много записи от втората таблица и обратното

• Реализира се чрез междинна таблица

id name1 Пешо

2 Минка

3 Гошо

4 Пенка

id name1 .NET

2 Java

3 PHP

STUDENTSTUDENTCOURSECOURSEstudent_id course_id

1 1

1 2

3 2

3 3

4 2

STUDENT_COURSESTUDENT_COURSE

Page 16: Introduction to-RDBMS-systems

Множественост на връзките

• Връзка 1 x 1• 1 запис от едната таблица съответства на

точно 1 запис от другата таблица

• Моделира наследяване на таблици

id name age1 Иван 72

2 Петър 26

3 Мария 24

PERSONPERSON

id specialty2 Computer Science

3 Chemistry

STUDENTSTUDENT

Primary Primary keykey

Primary Primary keykey id title

1 Ph.D.

Primary & Primary & Foreign key at Foreign key at the same timethe same time

Primary & Primary & Foreign key at Foreign key at the same timethe same time

Page 17: Introduction to-RDBMS-systems

Авторелации(Self-relationships)

• Връзките primary/foreign key може да са в една и съща таблица

• Пример: служителите в една фирма имат началник, който също е служител

Id Name ManagerId1 Иван Иванов (null)

2 Петър Петров 1

3 Георги Георгиев 1

4 Бай Генчо 3

EmployeesEmployeesPrimary keyPrimary keyPrimary keyPrimary key Foreign keyForeign keyForeign keyForeign key

Page 18: Introduction to-RDBMS-systems

Релационна схема

• Релационна схема на БД наричаме съвкупността от:• схемите на всички таблици• връзките между таблиците

• Релационната схема описва структурата на БД• не съдържа данни, а само метаданни

• Релационните схеми се изобразяват графично чрез Entity/Relationship диаграми (E/R Diagrams)

Page 19: Introduction to-RDBMS-systems

E/R диаграми – пример

Диаграмата е Диаграмата е създадена с създадена с

Microsoft SQL Server Microsoft SQL Server Enterprise ManagerEnterprise Manager

Page 20: Introduction to-RDBMS-systems

E/R диаграми – пример

Диаграмата е Диаграмата е създадена с създадена с

PLATINUM ERwinPLATINUM ERwin

Page 21: Introduction to-RDBMS-systems

Инструменти за E/R дизайн

• E/R диаграмите се създават с инструменти за моделиране на данни (Data Modeling Tools):• CASE Studio

• Oracle Designer

• Microsoft Visio

• Computer Associates ERwin

• SQL Server Enterprise Manager

• IBM Rational Rose

• theKompany Data Architect

• fabForce DBDesigner (GNU GPL проект с отворен код за Windows и Linux)

Page 22: Introduction to-RDBMS-systems

Идентификация на същностите (entities)

• Entity таблиците представляват същности (обекти) от реалния свят

• Най-често са съществителни в текста на заданието (спецификацията)

• Например:

• Същности: студент, курс, град

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

Page 23: Introduction to-RDBMS-systems

Идентификация на колоните в таблиците

• Колоните в таблиците са характеристики на същностите

• Имат име и тип

• Например студентите имат:

• Име (текст)

• Факултетен номер (число)

• Снимка (бинарен блок)

• Дата на регистрация (дата)

Page 24: Introduction to-RDBMS-systems

Идентификация на колоните в таблиците

• Колоните са пояснения за същностите в текста на заданието, например:

• Студентите имат следните характеристики:

• Име, факултетен номер, снимка, дата на регистрация и списък от курсове

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

Page 25: Introduction to-RDBMS-systems

Как да изберем първичен ключ за entity таблиците?

• Винаги дефинирайте допълнителна колона за първичния ключ

• Не използвайте съществуваща колона (например ЕГН)

• Трябва да е число (integer)

• Трябва да се обяви като primary key

• Слагайте първичния ключ като първа колона

Page 26: Introduction to-RDBMS-systems

Идентификация на връзките (релации / relations)

• Връзките са отношения между същностите:

• "Студенти се обучават в курсове" – релация много към много

• "Курсовете се провеждат в градове" – релация много към едно

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

Page 27: Introduction to-RDBMS-systems

Нормализация

• Нормализацията на релационната схема премахва повтарящите се данни

• За повече информация: http://en.wikipedia.org/wiki/Database_normalization

Page 28: Introduction to-RDBMS-systems

Ограничения (Constraints)

• Ограниченията задават правила за данните, които не могат да бъдат нарушавани

• Ограничения по първичен ключ (primary key constraint)• Първичният ключ е уникален за всеки

запис

• Ограничения по уникален ключ (unique key constraint)• Стойностите в дадена колона (или група

колони) са уникални

Page 29: Introduction to-RDBMS-systems

Ограничения (Constraints)

• Ограничение по външен ключ (foreign key constraint)• Стойността в дадена колона е ключ от

друга таблица • Ограничение по стойност (check

constraint)• Стойностите в дадена колона изпълняват

дадено условие. Пример:• (hour>=0) AND (hour<=24)• name = upper(name)

Page 30: Introduction to-RDBMS-systems

Индекси

• Индексите ускоряват скоростта на търсене на стойност в дадена колона или група от колони

• Ползват се при големи таблици

• Добавянето и изтриването от индексирани таблици е по-бавно

Page 31: Introduction to-RDBMS-systems

Езикът SQL

• SQL (Structured Query Language)• Стандартизиран декларативен език

(стандарт) за манипулация на релационни бази от данни

• SQL поддържа:• Създаване, промяна и изтриване на

таблици и други обекти в БД• Търсене, извличане, добавяне, промяна и

изтриване на данни

Page 32: Introduction to-RDBMS-systems

Езикът SQL

• SQL се състои от:

• DDL – Data Definition Language

• Команди CREATE, ALTER, DROP

• DML – Data Manipulation Language

• Команди SELECT, INSERT, UPDATE, DELETE

• Пример за SQL SELECT заявка:

SELECT Town.name, Country.nameSELECT Town.name, Country.nameFROM Town, CountryFROM Town, CountryWHERE Town.country_id = Country.idWHERE Town.country_id = Country.id

Page 33: Introduction to-RDBMS-systems

Транзакции

• Транзакциите са последователности от действия (заявки към базата данни), които се изпълняват атомарно:• или се изпълняват всичките действия заедно (като

едно цяло)• или никое от действията не се изпълнява изобщо

• Пример:• Банково прехвърляне на пари от една сметка в

друга (теглене + внасяне)• Ако тегленето или внасянето на парите пропадне,

пропада цялата операция

Page 34: Introduction to-RDBMS-systems

Отговорности на транзакциите

• Транзакциите гарантират консистентността и възстановимостта на базата данни

• Промяната не се счита за окончателна докато не се извърши COMMIT

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

Page 35: Introduction to-RDBMS-systems

Свойства на транзакциите

• Atomicity – атомарност• Изпълнява се всичко или нищо

• Consistency – цялост на данните• Базата винаги остава консистентна с

логически коректни данни• Isolation – изолация на данните• Отделните транзакции са изолирани една от

друга в зависимост от избраното ниво• Durability – стабилност на данните• Ако една транзакция бъде потвърдена, тя не

може да бъде изгубена

Page 36: Introduction to-RDBMS-systems

Употреба на транзакции

• Кога се ползват транзакции?• Винаги, когато за една бизнес операция се

осъществява достъп до повече от една таблица

• Ако някоя операция не успее, анулираме транзакцията

Page 38: Introduction to-RDBMS-systems

Въпроси?

Page 39: Introduction to-RDBMS-systems

Упражнения

1. Какви модели на базите от данни познавате?

2. Кои са основните функции, изпълнявани от една система за управление на бази от данни (СУБД)?

3. Дефинирайте понятието таблица в база от данни.

4. Обяснете разликите между първичен и външен ключ.

5. Посочете какви видове връзки между таблици познавате.

Page 40: Introduction to-RDBMS-systems

Упражнения (2)

7. За какво се използват ограниченията в една база от данни?

8. Какво е основното предназначение на езика SQL?

9. За какво се използват транзакциите? Дефинирайте техните отговорности.