introduction to-rdbms-systems
DESCRIPTION
Introduction to relational databases, tables, relations, primary and foreign keysTRANSCRIPT
Въведение в Релационните Бази от Данни
Contents
1. Модели на базите от данни
2. Релационните бази от данни
3. RDBMS системи
4. Таблици, връзки, множественост на връзките, E/R диаграми
5. Нормализация
6. Ограничения (constraints)
7. Индекси
Contents
8. Езикът SQL
9. Транзакции и изолация
Релационни бази от данни
• Модели на базите от данни• йерархичен (дървовиден)• мрежови• релационен (табличен)• обектно-релационен
• Релационни бази от данни• Представляват съвкупности от таблици и
връзки между тях (релации)
Системи за управление на БД
• Системи за управление на релационни бази от данни (СУБД) = Relational Database Management System (RDBMS)
• Осигуряват програмни средства за:
• създаване / промяна / изтриване на таблици и връзки между тях
• добавяне, промяна, изтриване, търсене и извличане на данни от таблиците
• поддръжка на езика SQL
• управление на транзакции (незадължително)
Системи за управление на БД
• RDBMS системите се наричат още• сървъри за управление на бази от данни• или просто "Database сървъри"
• По-известни RDBMS сървъри:• Oracle Database• Microsoft SQL Server• IBM DB2• PostgreSQL• MySQL• Borland Interbase
Таблици
• Таблиците представляват съвкупност от стойности, подредени в редове и колони. Пример (таблица PERSONS):
• Редовете имат еднаква структура• Колоните имат име и тип (число, символен
низ, дата или др.)
id name family employer1 Светлин Наков БАРС
2 Росен Спасов Software AG
3 Марио Пешев Freelancer
Схема на таблица
• Схема на таблица е наредена последователност от описания на колони (име и тип)
• Например таблицата PERSONS има следната схема:
PERSONS (PERSONS ( idid:: число,число, namename: символен низ,: символен низ, familyfamily: символен низ,: символен низ, employer: employer: символен низсимволен низ))
Типове данни в 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 – дълъг символен низ
Типове данни в Oracle
• Бинарни данни• varbinary(size) – редица от байтове• image – бинарен блок до 1 GB
• Дати и часове• datetime – дата и час• smalldatetime – дата с точност 1 минута
• Други• timestamp – автоматична версия на ред
Първичен ключ
• Първичният ключ (primary key) е колона от таблицата, която уникално идентифицира даден неин ред
• Два записа (реда) са различни когато са различни първичните им ключове
• Първичният ключ може да е съвкупност от няколко колони
id name family employer1 Светлин Наков БАРС
2 Бранимир Гюров BSH
3 Мартин Кулов CodeAttest
Primary Primary keykey
Връзки (релации)
• Връзките между таблиците се базират на взаимоотношения 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
Връзки (релации)
• Външният ключ (foreign key) е номер на запис (primary key) в друга таблица
• Връзките спестяват повтарянето на информация• В примера името на държавата не се повтаря
за всеки град
• Връзките имат множественост (multiplicity) :• 1 x много – държава / градове
• много x много – студент / учебен курс
• 1 x 1 – например човек / студент
Множественост на връзките
• Връзка 1 x много (или много x 1)
• 1 запис от първата таблица съответства на много записи от втората таблица
• Използва се много често
id name country_id1 София 1
2 Пловдив 1
3 Мюнхен 2
4 Берлин 2
5 Москва 3
id name1 България
2 Германия
3 Русия
TOWNTOWN
COUNTRYCOUNTRY
Множественост на връзките
• Връзка много 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
Множественост на връзките
• Връзка 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
Авторелации(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
Релационна схема
• Релационна схема на БД наричаме съвкупността от:• схемите на всички таблици• връзките между таблиците
• Релационната схема описва структурата на БД• не съдържа данни, а само метаданни
• Релационните схеми се изобразяват графично чрез Entity/Relationship диаграми (E/R Diagrams)
E/R диаграми – пример
Диаграмата е Диаграмата е създадена с създадена с
Microsoft SQL Server Microsoft SQL Server Enterprise ManagerEnterprise Manager
E/R диаграми – пример
Диаграмата е Диаграмата е създадена с създадена с
PLATINUM ERwinPLATINUM ERwin
Инструменти за 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)
Идентификация на същностите (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.nameSELECT Town.name, Country.nameFROM Town, CountryFROM Town, CountryWHERE Town.country_id = Country.idWHERE Town.country_id = Country.id
Транзакции
• Транзакциите са последователности от действия (заявки към базата данни), които се изпълняват атомарно:• или се изпълняват всичките действия заедно (като
едно цяло)• или никое от действията не се изпълнява изобщо
• Пример:• Банково прехвърляне на пари от една сметка в
друга (теглене + внасяне)• Ако тегленето или внасянето на парите пропадне,
пропада цялата операция
Отговорности на транзакциите
• Транзакциите гарантират консистентността и възстановимостта на базата данни
• Промяната не се счита за окончателна докато не се извърши COMMIT
• Всички операции се извършват като едно цяло, включително операциите върху множество от записи
Свойства на транзакциите
• Atomicity – атомарност• Изпълнява се всичко или нищо
• Consistency – цялост на данните• Базата винаги остава консистентна с
логически коректни данни• Isolation – изолация на данните• Отделните транзакции са изолирани една от
друга в зависимост от избраното ниво• Durability – стабилност на данните• Ако една транзакция бъде потвърдена, тя не
може да бъде изгубена
Употреба на транзакции
• Кога се ползват транзакции?• Винаги, когато за една бизнес операция се
осъществява достъп до повече от една таблица
• Ако някоя операция не успее, анулираме транзакцията
Нива на изолация
• За повече информация:http://en.wikipedia.org/wiki/Isolation_(database_systems)
Въпроси?
Упражнения
1. Какви модели на базите от данни познавате?
2. Кои са основните функции, изпълнявани от една система за управление на бази от данни (СУБД)?
3. Дефинирайте понятието таблица в база от данни.
4. Обяснете разликите между първичен и външен ключ.
5. Посочете какви видове връзки между таблици познавате.
Упражнения (2)
7. За какво се използват ограниченията в една база от данни?
8. Какво е основното предназначение на езика SQL?
9. За какво се използват транзакциите? Дефинирайте техните отговорности.