1 / 43

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

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

xena-lynch
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Защо бази от данни и необходим ли е език за работа с тях? • Database Management System(DBMS) • Софтуерна система, която позволява на потребителите да дефинират, създават и управляват база от данни и осигурява контролиран достъп до нея. • Компоненти на средата на СУБД (DBMS) • хардуер - софтуер - данни - процедури - потребители

  3. Защо бази от данни и необходим ли е език за работа с тях? • Предимства на СУБД (DBMS) • Управление на излишъците • Цялостност на данните • Балансиране на конфликтните ситуации • Повече информация от едно и също количество данни • Споделяне на данните • Подобряване не достъпа и сигурността на данните • Подобряване на продуктивността • Подобряване на сигурността • Подобряване на свързаността на данните • Подобряване на управлението на данните чрез тяхната независимост • Стандартизиране на работата с данните • Поддържане на резервни копия и услуги по възстановяване на данните • Недостатъци - Сложност, размер, цени на СУБД, допълнителни разходи за хардуер

  4. Защо бази от данни и необходим ли е език за работа с тях? • Анализ на изискванията на реалната ситуация, която ще бъде представяна • Дефиниране на концептуална схема, която дава описание на базата от данни и изискванията, на които би трябвало да отговарят данните. Най-популярният начин за представяне на концептуалната схема е Entity-Relationship (ER) моделът, който представя реалността като съвкупност от обекти и връзки между тях • Дефиниране на логически модел, който може да бъде реализиран чрез избрана СУБД.Най-често се използва релационен модел – БД се представя като съвкупност от релации, като всяка релация е таблица със стойности. С цел създаване на релации без излишък на информация, без аномалии на данните, организирани по оптимален начин, така че при модифициране да се запазва цялостта и коректността на данните, се прилага процес на нормализация. • Дефиниране на физически модел, който представя начина на вътрешно съхранение на данните на физическо ниво.

  5. Функции на СУБД • Функции на СУБД 1. съхранение, достъп и обновяване на данните 2. Достъпен за потребителя каталог 3. Поддържане на транзакции 4. Управление на конкурентния достъп 5. Услуги за възстановяване 6. Функции за управление на достъпа 7. Поддръжка на комуникация на данните 8. Цялостност 9. Независимост на данните 10. Помощни функции

  6. Programmers Users DBA Application Programs Queries Database Schema DBMS DML preprocessor Query processor DDL compiler Program object code Database manager Dictionary manager Access methods File manager Database and system catalog System buffers Компоненти на СУБД

  7. История на СУБД • История на СУБД • 1960 – проекта за кацане на луната от Apollo - GUAM • Средата на 1960те - Information Management Systems - IMS от IBM (Йерархична СУБД) – свързана също с космическата програма и Apollo. • Средата на 1960те - Integrated Data Store (IDS), първата комерсиална СУБД, разработена от General Electric,(Мрежова СУБД – създател на модела е C. W. Bachman ) • 1965 – CODASYL(Committeeon 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-1977System R е пренаписана, поддържа многопотребителски достъп и работа с повече от една таблица, езикът за работа става основа на SQL • 1980те – комерсиални релационни СУБД (DB2, Oracle, Informix..) • 1990те – навлизане на Интернет, web достъп • днес - OODBMS, ORDBMS, SQL е стандарт за работа с БД

  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

  9. SQL и неговите предшественици • SQL се базира на релационната алгебра и на релационните изчисления с променливи домейни и кортежи. • Релационната алгебра е въведена през 1972 от E. F. Codd и представлява основните концепции, стоящи зад компютърния синтаксис на SQL. • Релационната алгебра е процедурен метод за конструиране на заявки и касае основно логиката КАК на структурните заявки, докато релационните изчисления използват декларативни изрази, касаещи КАКВО в логиката на структурираните заявки.

  10. SQL – допълнителни възможности • Поддържа добавяне, модифициране и изтриване на данни: Потребителите имат възможност да добавят, изтриват или модифицират съхранените записи от данни. • Аритметични операции Допустими са събиране, изваждане, умножение, деление (например,(value1 * 5) + value2), както и операции за сравнение (например, value3 >= value4). • Визуализация на информацията / данните Потребителят може да визуализира генерирани чрез заявки връзки, както и съдържание на таблица (и). • Съпоставяния Потребителят може да преименува релации, като новото име се преизчислява и обработва от самите заявки. В зависимост от заявката новите имена са имена на колони или имена на функции в зависимост от заявката. • Обобщаващи функции Потребителят има възможност да групира свързаните редове в едно и да изчислява различни групиращи функции като average, sum, count, maximum, и minimum.

  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 като обектно-релационните концепции, нескаларни типове данни, управление на цялостта на данните, процедурни елементи, тригери и други

  12. SQL стандарти • 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 оператор.

  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 операторите в приложените програми, написани на стандартни програмни езици от по-високо ниво.

  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

  15. SQL - подезици Data Definition Language (DDL) - подезик за описание на данните CREATE TABLE – за създаване на нова таблица в БД ALTER TABLE – променя таблица от БД DROP TABLE – изтрива таблица от БД CREATE INDEX – създава индекс към таблица DROP INDEX - изтрива индекс Data Manipulation Language (DML) - подезик за манипулиране с данните UPDATE – обновява данните в таблиците в БД DELETE – изтрива данни от таблиците в БД INSERT INTO – добавя ред/редове в таблиците на БД

  16. SQL - подезици Data Query Language (DQL) – подезик за заявки SELECT – за извличане на данни от таблиците в БД • Проекция: Чрез SQL и операцията проекция могат да бъдат избрани една или повече колони от избрана таблица, съдържанието на които да бъде върнато като резултат от заявката • • Селекция: Чрез тази операция и SQL могат да бъдат избрани определени редове от избрана таблица. За отделяне на избраните редове могат да се използват различни условия. • • Съединение: Чрез тази операция и SQL може да бъде извлечена информация от различни таблици, като се създаде връзка между тези таблици.

  17. SQL - подезици Data Control Language (DCL) – подезик за контрол на достъпа до данните ALTER PASSWORD GRANT REVOKE CREATE SYNONYM Data administration commands – тази група команди дават възможност на потребителя да проверява и анализира операциите в базата от данни, а така също и да се анализира производителността на системата START AUDIT STOP AUDIT Transactional control commands – съдържа командите за управление на транзакциите към базата от данни COMMIT ROLLBACK SAVEPOINT SET TRANSACTION

  18. Подезик за описание на даннитеDROP TABLE … DROP TABLE - изтриване на таблица: DROP TABLE <table name>

  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]

  20. CREATE TABLE

  21. CREATE TABLE

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

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

  24. CREATE TABLE CREATE TABLE PERSONS (FIRSTNAME VARCHAR2(15), LASTNAME VARCHAR2(15), REGDATE DATE DEFAULTSYSDATE, ID VARCHAR2(2) PRIMARY KEY)

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

  26. CREATE TABLE INSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', '4') INSERT INTO PERSONS VALUES('IVAN', 'IVANOV', '02-JAN-10', ‘12')

  27. 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);

  28. ALTER TABLE

  29. ALTER TABLE

  30. ALTER TABLE

  31. STUDENTS-DEPARTMENTS

  32. INSERT INTO… INSERT INTO <table name> [(column {, column})] VALUES (expression {, expression}) INSERT INTODepartments(iddep, depname) VALUES (‘001’, ‘Computer Systems’) INSERT INTODepartments VALUES (‘001’, ‘Computer Systems’) INSERT INTODepartments VALUES (‘001’) INSERT INTODepartments(iddep) VALUES (‘001’)

  33. INSERT INTO…

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

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

  36. UPDATE UPDATE STUDENTS SET BIRTHDATE='31-MAR-1986' WHERE FNUMBER='063312'; • Синтаксис на UPDATE оператора: • UPDATE <table name> • SET <column name>=<expression>[,<column name>=< expression >, …] • [WHERE <condition>]; • Условието в WHERE клаузата определя кои редове ще бъдат обновени; • Ако липсва WHERE клауза се обновяват всички редове.

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

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

  39. DELETE • Синтаксис на DELETE команда: • DELETE FROM <table name> • [WHERE <condition>]; • Условието в WHERE клаузата определя кои редове ще бъдат изтрити; • Ако липсва WHERE клауза се изтриват всички редове от указаната таблица. DELETE FROM STUDENT WHERE IDDEP='002'; DELETE FROM STUDENT;

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

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

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

More Related