43
Защо бази от данни и необходим ли е език за работа с тях? Файлово базиран подход Всяка програма дефинира и управлява свои данни Ограничения Разделяне и изолиране на данните Дублиране на данни Зависимост на данните Несъвместимост на файловете Фиксирани заявки фиксирани от приложната програма Подход с бази от данни Споделена колекция от логически свързани данни, предназначени да отговорят на потребностите от информация на една организация

Защо бази от данни и необходим ли е език за работа с тях?

Embed Size (px)

DESCRIPTION

Защо бази от данни и необходим ли е език за работа с тях?. Файлово базиран подход Всяка програма дефинира и управлява свои данни Ограничения Разделяне и изолиране на данните Дублиране на данни Зависимост на данните Несъвместимост на файловете - PowerPoint PPT Presentation

Citation preview

Page 1: Защо бази от данни и необходим ли е език за работа с тях?

Защо бази от данни и необходим ли е език за работа с тях?

Файлово базиран подход Всяка програма дефинира и управлява свои данни Ограничения

Разделяне и изолиране на данните Дублиране на данни Зависимост на данните Несъвместимост на файловете Фиксирани заявки фиксирани от приложната програма

Подход с бази от данни Споделена колекция от логически свързани данни,

предназначени да отговорят на потребностите от информация на една организация

Page 2: Защо бази от данни и необходим ли е език за работа с тях?

Защо бази от данни и необходим ли е език за работа с тях?

Database Management System(DBMS) Софтуерна система, която позволява на

потребителите да дефинират, създават и управляват база от данни и осигурява контролиран достъп до нея.

Компоненти на средата на СУБД (DBMS)хардуер - софтуер - данни - процедури -

потребители

Page 3: Защо бази от данни и необходим ли е език за работа с тях?

Защо бази от данни и необходим ли е език за работа с тях?

Предимства на СУБД (DBMS)- Управление на излишъците- Цялостност на данните- Балансиране на конфликтните ситуации- Повече информация от едно и също

количество данни- Споделяне на данните- Подобряване не достъпа и сигурността

на данните- Подобряване на продуктивността- Подобряване на сигурността- Подобряване на свързаността на

данните - Подобряване на управлението на

данните чрез тяхната независимост- Стандартизиране на работата с данните- Поддържане на резервни копия и услуги

по възстановяване на данните

Недостатъци - Сложност, размер, цени на СУБД,

допълнителни разходи за хардуер

Problem Statement Model

Application Software design

Real Word Abstract World

Problem

Solution

Analysis

Design

Implementation

Page 4: Защо бази от данни и необходим ли е език за работа с тях?

Защо бази от данни и необходим ли е език за работа с тях?

Анализ на изискванията на реалната ситуация, която ще бъде представяна Дефиниране на концептуална схема, която дава описание на базата от

данни и изискванията, на които би трябвало да отговарят данните. Най-популярният начин за представяне на концептуалната схема е Entity-Relationship (ER) моделът, който представя реалността като съвкупност от обекти и връзки между тях

Дефиниране на логически модел, който може да бъде реализиран чрез избрана СУБД. Най-често се използва релационен модел – БД се представя като съвкупност от релации, като всяка релация е таблица със стойности. С цел създаване на релации без излишък на информация, без аномалии на данните, организирани по оптимален начин, така че при модифициране да се запазва цялостта и коректността на данните, се прилага процес на нормализация.

Дефиниране на физически модел, който представя начина на вътрешно съхранение на данните на физическо ниво.

Page 5: Защо бази от данни и необходим ли е език за работа с тях?

Функции на СУБД

Функции на СУБД1. съхранение, достъп и обновяване на данните

2. Достъпен за потребителя каталог

3. Поддържане на транзакции

4. Управление на конкурентния достъп

5. Услуги за възстановяване

6. Функции за управление на достъпа

7. Поддръжка на комуникация на данните

8. Цялостност

9. Независимост на данните

10. Помощни функции

Page 6: Защо бази от данни и необходим ли е език за работа с тях?

Компоненти на СУБД

Application

Programs

Application

ProgramsQueriesQueries

Database

Schema

Database

Schema

DML

preprocessor

DML

preprocessor

Query

processor

Query

processor

DDL

compiler

DDL

compiler

Program

object code

Program

object code

Database

manager

Database

manager

Dictionary

manager

Dictionary

manager

Access

methods

Access

methods

File

manager

File

manager

System

buffers

System

buffers

DBMS

Programmers Users DBA

Database and

system catalog

Page 7: Защо бази от данни и необходим ли е език за работа с тях?

История на СУБД

История на СУБД 1960 – проекта за кацане на луната от Apollo - GUAM Средата на 1960те - Information Management Systems - IMS от IBM

(Йерархична СУБД) – свързана също с космическата програма и Apollo. Средата на 1960те - Integrated Data Store (IDS), първата комерсиална

СУБД, разработена от General Electric, (Мрежова СУБД – създател на модела е C. W. Bachman )

1965 – CODASYL (Committee on Data SYStems Language) – езика COBOL – използван за бизнес приложения през 60-те години

1967 – DBTG (Data Base Task Group) 1970 - E.F.Codd от IBM Research Lab. 1974 – започва проекта System R проект на IBM, създаден е SEQUEL

или Structured English Query Language 1976-1977 System R е пренаписана, поддържа многопотребителски достъп и

работа с повече от една таблица, езикът за работа става основа на SQL 1980те – комерсиални релационни СУБД (DB2, Oracle, Informix..) 1990те – навлизане на Интернет, web достъп днес - OODBMS, ORDBMS, SQL е стандарт за работа с БД

Page 8: Защо бази от данни и необходим ли е език за работа с тях?

Въведение в SQL• SQL е съкращение от първите букви на Structured Query

Language (Език за структурирани заявки), и представлява непроцедурен език за работа с релационни бази от данни.

• Непроцедурен език?!

• Дефиниран формално през 1970 от Код (Codd), изследовател то IBM, в неговата статия A Relational Model of Data for Large Shared Data Banks

• 1974 - System/R (Donald Chamberlin) разработен е SEQUEL или Structured English Query Language

• 1976-1977 SEQUEL/2, преименуван на SQL

Page 9: Защо бази от данни и необходим ли е език за работа с тях?

SQL и неговите предшественици

• SQL се базира на релационната алгебра и на релационните изчисления с променливи домейни и кортежи.

• Релационната алгебра е въведена през 1972 от E. F. Codd и представлява основните концепции, стоящи зад компютърния синтаксис на SQL.

• Релационната алгебра е процедурен метод за

конструиране на заявки и касае основно логиката КАК на структурните заявки, докато релационните изчисления използват декларативни изрази, касаещи КАКВО в логиката на структурираните заявки.

Page 10: Защо бази от данни и необходим ли е език за работа с тях?

SQL – допълнителни възможности

• Поддържа добавяне, модифициране и изтриване на данни:Потребителите имат възможност да добавят, изтриват или модифицират съхранените записи от данни.

• Аритметични операцииДопустими са събиране, изваждане, умножение, деление (например,(value1 * 5) + value2), както и операции за сравнение (например, value3 >= value4).

• Визуализация на информацията / даннитеПотребителят може да визуализира генерирани чрез заявки връзки, както и съдържание на таблица (и).

• СъпоставянияПотребителят може да преименува релации, като новото име се преизчислява и обработва от самите заявки. В зависимост от заявката новите имена са имена на колони или имена на функции в зависимост от заявката.

• Обобщаващи функцииПотребителят има възможност да групира свързаните редове в едно и да изчислява различни групиращи функции като average, sum, count, maximum, и minimum.

Page 11: Защо бази от данни и необходим ли е език за работа с тях?

SQL стандарти• American National Standards Institute (ANSI) стандартизира SQL

през 1986 (X3.135) а International Standards Organization (ISO) през 1987. През 1989, този стандарт се редактира и публикува като SQL89 или SQL1.

• SQL92 (SQL2) - Този стандарт отстранява слабите страни на стандарта от 89 и установява четвъртата група SQL характеристики, което по това време разширява значително възможностите на RDBMS от онова време. Като резултат SQL92 е 6 пъти по обемист от предходния стандарт.

• През 1999 ANSI/ISO представят и приемат SQL99 стандарта (наречен SQL3). Този стандарт касае някои от по-прогресивните и преди това недоразвити идеи на SQL като обектно-релационните концепции, нескаларни типове данни, управление на цялостта на данните, процедурни елементи, тригери и други

Page 12: Защо бази от данни и необходим ли е език за работа с тях?

• 2003 (SQL2003) – Въвежда възможности за използване на XML, стандартизирани последователности (sequences), колони с автоматично генерирани стойности.

• 2006 - SQL2006 – стандартът SO/IEC 9075-14:2006 дефинира начина, по който SQL може да се използва за връзка с XML, начините за импортиране и съхранение на XML данни в SQL бази от данни, манипулирането им в базата от данни и публикуването заедно на XML и SQL-данни в XML формат. В допълнение, разрешава в SQL кода на приложенията да се интегрира XQuery, което е XML Query Language публикуван от World Wide Web Consortium (W3C), за едновременен достъп до обикновени SQL-данни и XML документи.

• 2008 – SQL2008 – легализира ORDER BY клаузата извън дефинициите на курсори. Добавя INSTEAD OF тригери. Добавя TRUNCATE оператор.

SQL стандарти

Page 13: Защо бази от данни и необходим ли е език за работа с тях?

Раздели на SQL3 стандарта• част 1—SQL/Framework—определя основните изисквания за

съгласуване и дефинира фундаменталните концепции на SQL.• част 2—SQL/Foundation— дефинира синтаксиса и операциите

в SQL.• част 3—SQL/Call-Level Interface— дефинира интерфейса за

програмиране на приложения на SQL.• част 4—SQL/Persistent Stored Modules—дефинира

управляващите конструкции и модулите в SQL, съдържащи често повтарящи се последователности от действия.

• част 5—SQL/Host Language Bindings—дефинира как да се използват SQL операторите в приложените програми, написани на стандартни програмни езици от по-високо ниво.

Page 14: Защо бази от данни и необходим ли е език за работа с тях?

MySQL Netezza NonStop SQL Openbase OpenLink Virtuoso (Open Source

Edition) OpenLink Virtuoso Universal

Server Oracle Oracle Rdb for OpenVMS Pervasive PostgreSQL Progress 4GL RDM Embedded RDM Server The SAS system Sav Zigzag ScimoreDB SmallSQL solidDB SQLBase SQLite Sybase Adaptive Server

Enterprise Sybase Adaptive Server IQ

4th Dimension Adabas D Alpha Five Apache Derby BlackRay CA-Datacom CSQL CUBRID Daffodil database DataEase Dataphor DB-Fast Derby aka Java DB ElevateDB EnterpriseDB EffiProz eXtremeDB fastDB FileMaker Pro Firebird FrontBase Gladius DB Greenplum H2 Helix database

HSQLDB

IBM DB2

WCE SQL Plus

IBM DB2 Express-C

Informix

Ingres

InterBase

InterSystems Caché

Kognitio

Linter

MaxDB

Mckoi SQL Database

Microsoft Access

Microsoft Jet Database Engine (part of Microsoft Access)

Microsoft SQL Server

Microsoft SQL Server Express

Microsoft Visual FoxPro

Mimer SQL

MonetDB

mSQL

Sybase SQL Anywhere (formerly known as Sybase Adaptive Server Anywhere and Watcom SQL) tdbengine Teradata TimesTen txtSQL Valentina (Database) Vertica VistaDB VMDS XSPRADA

Релационни СУБД

Page 15: Защо бази от данни и необходим ли е език за работа с тях?

SQL - подезици

Data Manipulation Language (DML) - подезик за манипулиране с данните

UPDATE – обновява данните в таблиците в БДDELETE – изтрива данни от таблиците в БД INSERT INTO – добавя ред/редове в таблиците на БД

Data Definition Language (DDL) - подезик за описание на данните

CREATE TABLE – за създаване на нова таблица в БД ALTER TABLE – променя таблица от БД DROP TABLE – изтрива таблица от БД CREATE INDEX – създава индекс към таблица DROP INDEX - изтрива индекс

Page 16: Защо бази от данни и необходим ли е език за работа с тях?

SQL - подезици

Data Query Language (DQL) – подезик за заявки

SELECT – за извличане на данни от таблиците в БД

•Проекция: Чрез SQL и операцията проекция могат да бъдат избрани една или повече колони от избрана таблица, съдържанието на които да бъде върнато като резултат от заявката

• Селекция: Чрез тази операция и SQL могат да бъдат избрани определени редове от избрана таблица. За отделяне на избраните редове могат да се използват различни условия.

• Съединение: Чрез тази операция и SQL може да бъде извлечена информация от различни таблици, като се създаде връзка между тези таблици.

Page 17: Защо бази от данни и необходим ли е език за работа с тях?

SQL - подезици

Data administration commands – тази група команди дават възможност на потребителя да проверява и анализира операциите в базата от данни, а така също и да се анализира производителността на системата START AUDITSTOP AUDIT

Transactional control commands – съдържа командите за управление на транзакциите към базата от данни COMMIT ROLLBACK SAVEPOINT SET TRANSACTION

Data Control Language (DCL) – подезик за контрол на достъпа до даннитеALTER PASSWORDGRANTREVOKECREATE SYNONYM

Page 18: Защо бази от данни и необходим ли е език за работа с тях?

Подезик за описание на данните DROP TABLE …

DROP TABLE - изтриване на таблица:

DROP TABLE <table name>

Page 19: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLE

CREATE TABLE <table name> (col-def, …, col-def, tab-constr, …, tab-constr);

Дефиниции на колони<column name> <data type> [default <expr>] [column constraints]

Дефиниции на ограничения<column name> - име на полето/колоната в таблицата<data type> - тип на данните в полето[default <expr>] – стойност по подразбиране[column constraints] –

[constraint <constraint name>] [not] null |

check (<condition>) | unique | primary key |

references <table name> [(<column name>)] [on delete cascade]

[constraint <constraint name>]unique (<column> {,<column>}) |primary key (<column> {,<column>}) |foreign key (<column> {,<column>})

references <table name> [(<column> {,<column>})][on delete cascade]

Page 20: Защо бази от данни и необходим ли е език за работа с тях?

Тип данни Описание

char(n)

Последователност от символи с фиксирана дължина – n. Максималната дължина е 255, а ако не е зададена по подразбиране е 1. Ако в поле от този тип се съхранява последователност от символи с по-малка от зададената дължина, то остатъка до n се допълва от дясно с интервали. Константни стойности от този тип се задават в апострофи (‘асд’)

varchar2(n)Последователност от символи с променлива дължина – n. Максималната стойност на дължината е 2000

dateСлужи за съхранение на дати, обикновено са във формат на символен низ от типа: ’12-DEC-2000’, като може да се задава и променя формата на датата.

number Реални и цели числа, с не повече от 40 цифри.

number(n) Реални и цели числа, с не повече от n цифри.

number(n,d)Реални числа, с не повече от n позиции, като d от тях са след десетичната запетая.

integer Също като number, но не допуска дробни стойности

integer(n) Също като integer, но с не повече от n цифри

Page 21: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLE

Page 22: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLE

Page 23: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15) NOT NULL,LASTNAME VARCHAR2(15) NOT NULL,ID VARCHAR2(2) PRIMARY KEY)

Page 24: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),ID VARCHAR2(2) PRIMARY KEY)

Page 25: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),REGDATE DATE DEFAULT SYSDATE,ID VARCHAR2(2) PRIMARY KEY)

Page 26: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLECREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15),LASTNAME VARCHAR2(15),REGDATE DATE DEFAULT '01-JAN-01' NOT NULL,ID VARCHAR2(2) NOT NULL CHECK (ID>10))

Page 27: Защо бази от данни и необходим ли е език за работа с тях?

CREATE TABLEINSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', '4')

INSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', ‘12')

Page 28: Защо бази от данни и необходим ли е език за работа с тях?

ALTER TABLE•ALTER TABLE за добавяне на ново поле в таблица: ALTER TABLE <table name> ADD ( <column name> <data type> <[not]null> ) ;

•ALTER TABLE за промяна на типа на поле в съществуваща таблица: ALTER TABLE <table name> MODIFY ( <column name> <new data type> <[not]null> ) ;

•ALTER TABLE за дефиниране на ограничения:• PRIMARY KEY : ALTER TABLE <table name> ADD CONSTRAINT <constraint-name> PRIMARY KEY (<column-name>); •FOREIGN KEY : ALTER TABLE <table-name> ADD CONSTRAINT <constraint-name> FOREIGN KEY (<column-name>) REFERENCES <parent-table-name> (column-name);

Page 29: Защо бази от данни и необходим ли е език за работа с тях?

ALTER TABLE

Page 30: Защо бази от данни и необходим ли е език за работа с тях?

ALTER TABLE

Page 31: Защо бази от данни и необходим ли е език за работа с тях?

ALTER TABLE

Page 32: Защо бази от данни и необходим ли е език за работа с тях?

STUDENTS-DEPARTMENTS

Page 33: Защо бази от данни и необходим ли е език за работа с тях?

INSERT INTO…

INSERT INTO <table name> [(column {, column})]VALUES (expression {, expression})

INSERT INTO DepartmentsVALUES (‘001’, ‘Computer Systems’)

INSERT INTO DepartmentsVALUES (‘001’)

INSERT INTO Departments(iddep, depname)VALUES (‘001’, ‘Computer Systems’)

INSERT INTO Departments(iddep)VALUES (‘001’)

Page 34: Защо бази от данни и необходим ли е език за работа с тях?

INSERT INTO…

Page 35: Защо бази от данни и необходим ли е език за работа с тях?

INSERT INTO…Освен структурата на таблиците в базата т данни с ALTER можем да променяме всички обекти, включително и настройките на текущата сесия. В случая се коригира формата на датата.

Page 36: Защо бази от данни и необходим ли е език за работа с тях?

•Няма нужда от VALUES клаузата•Трябва да се съобрази броят на полетата в таблицата, в която добавяме, и броят на стойностите, избрани в SELECT заявката, да бъдат равни•В конкретния пример в таблицата STUDENT е имало два записа, които отговарят на условието IDDEP=‘002’ и затова са добавени два нови реда. Двете таблици имат една и съща структура и затова се използва *

INSERT INTO…

Page 37: Защо бази от данни и необходим ли е език за работа с тях?

UPDATE

UPDATE STUDENTSSET BIRTHDATE='31-MAR-1986'WHERE FNUMBER='063312';

Синтаксис на UPDATE оператора:

UPDATE <table name>SET <column name>=<expression>[,<column name>=< expression >, …][WHERE <condition>];

•Условието в WHERE клаузата определя кои редове ще бъдат обновени;•Ако липсва WHERE клауза се обновяват всички редове.

Page 38: Защо бази от данни и необходим ли е език за работа с тях?

UPDATE

Когато не е зададена WHERE клауза се обновяват всички записи в указаната таблица

Page 39: Защо бази от данни и необходим ли е език за работа с тях?

UPDATE на чужд ключ

При опит да се коригира стойността на поле, което е външен (чужд) ключ за дадената таблица, със стойност, която не е въведена в таблицата, където това поле е ключ се появява съобщение за грешка и не се изпълнява обновяване на записа.

Липсва стойност ‘005’

Page 40: Защо бази от данни и необходим ли е език за работа с тях?

DELETEСинтаксис на DELETE команда:

DELETE FROM <table name>[WHERE <condition>];

•Условието в WHERE клаузата определя кои редове ще бъдат изтрити;•Ако липсва WHERE клауза се изтриват всички редове от указаната таблица.

DELETE FROM STUDENTWHERE IDDEP='002';

DELETE FROM STUDENT;

Page 41: Защо бази от данни и необходим ли е език за работа с тях?

При опит да се изтрие стойността на поле, което е външен (чужд) ключ в друга таблица, се появява съобщение за грешка и не се изпълнява изтриване на записа.

DELETE

Page 42: Защо бази от данни и необходим ли е език за работа с тях?

DELETE

След като бъдат изтрити съответните записи от подчинената таблица, не е проблем да бъде изтрит и записът от главната

Page 43: Защо бази от данни и необходим ли е език за работа с тях?

Създаване на таблица чрез подзаявка

DEPARTMENTS

DEPT