Бази данни

Какво е база от данни?

Базата данни представлява колекция от данни. Обикновено данните са организирани така, че да представят модел от реалността. Тези данни могат да бъдат съхранявани на различни носители – хартия, електронни устройства, магнитни и оптични дискове и др. 

Когато става въпрос за компютърни бази от данни се има предвид софтуер, който обслужва данните и предоставя достъп на външни приложения или потребители до тях. Този достъп може да бъде чрез потребителски интерфейс (за потребителите) или чрез стандартизирани интерфейси за програмен достъп – т.нар. драйвери от различни типове (ODBC, JDBC и т.н.). 

Една система за управление на бази от данни (СУБД) има за цел да съхранява данни, позволявайки операции с тях – добавяне, изтриване, промяна и извличане. Широко известни към момента в световен мащаб системи са Oracle, IBM DB2, Sybase, Microsoft SQL Server, MySQL, MongoDB и много други. 

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

История на базите данни

Често еволюцията на СУБД се дели на три етапа: навигационни, релационни/SQL и пост-релационни бази от данни. 

Навигационните бази от данни включват йерархични и мрежови модели. Те са известни още от 60-те години. 

Релационният модел е предложен през 1970 от д-р Едгар Код, наричан по-късно баща на релационния модел. Базиран на теория на множествата и релационната алгебра, той е сред малкото концепции в софтуерния свят, който е само допълван и основата му остава непроменена от тогава. През 80-те години релационните системи се развиват в широк мащаб, а през 90-те те стават доминиращи в глобален мащаб – вероятно заради свойства като ефективност, простота и интуитивност, но тази доминация е актуална и днес. 

В ерата на пост-релационните бази биват разработени обектно-ориентираният модел (80-те години), както и хибридният обектно-релационен. През последните няколко години известност добиват т.нар. NoSQL и бази от данни, често известни като документно-ориентирани. Тяхната основна концепция е да съхраняват ключ-стойност, позволявайки по този начин съхранение на цели документи – изображения, видео и др. Комбинация от релационен модел и NoSQL води пък до NewSQL базите данни, чиято идея е да комбинират най-доброто от двата модела.

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

  • Йерархичен
  • Мрежов
  • Релационен
  • Обектен
  • Документен
  • XML
  • И др., често хибридно от изброените

Модели бази данни

 

Езици

Езиците съдържат множества от оператори, чрез които могат да бъдат управлявани както данните, така и структурите на обектите от каталога. Тези езици са специфични за конкретни модели:

  • Data Definition Language (DDL) – подмножество от оператори, свързани с дефинирането и управлението на обектите от каталога – структури за съхранение, типове данни и др.;
  • Data Manipulation Language (DML) – подмножество от оператори за манипулиране на данните;
  • Data Control Language (DCL) – оператори за контрол на достъпа;
  • Query Language – за извличане на данни.

SQL езици

 

SQL

Structured Query Language е стандарт за релационни езици, използвани в релационните бази от данни. Комбинира в себе си DDL, DML и DCL операторите. Стандартизиран от American National Standards Institute (ANSI) през 1986 и от International Organization for Standardization (ISO) през 1987. От тогава множество версии на този стандарт добавят нови специфики. 

Ревизии на SQL:

Година Име Псевдоним Коментар
1986 SQL-86 SQL-87 Първият формализиран от ANSI.
1989 SQL-89 FIPS 127-1 Кратка ревизия, одобрен като FederalInformationProcessingStandard 127-1
1992 SQL-92 SQL2, FIPS 127-2 Главна ревизия (ISO 9075).
1999 SQL:1999 SQL3 Добавени регулярни изрази, рекурсивни заявки, тригери, комплексни типове и др. като обектно-ориентирани характеристики.
2003 SQL:2003 SQL 2003 XML-обработка, колони с автоматично генерирани стойности, window функции.
2006 SQL:2006 SQL 2006 ISO/IEC 9075-14:2006 дефинира начините, чрез които се съхранява и манипулира XML чрез SQL (XQuery).
2008 SQL:2008 SQL 2008 Легализира ORDER BY извън дефиницията на курсори; INSTEAD OF тригери, добавен е TRUNCATE оператор и др.
2011 SQL:2011 Дефиниции и работа с периоди от време.

Известни реализации на SQL

Източник Име Пълно име
ANSI/ISO Standard SQL/PSM SQL/Persistent Stored Modules
Interbase/Firebird PSQL Procedural SQL
IBM DB2 SQL PL SQL Procedural Language (реализира SQL/PSM)
IBM Informix SPL Stored Procedural Language
Microsoft/Sybase T-SQL Transact-SQL
Mimer SQL SQL/PSM SQL/Persistent Stored Module (реализира SQL/PSM)
MySQL SQL/PSM SQL/Persistent Stored Module (реализира SQL/PSM)
Oracle PL/SQL Procedural Language/SQL (базиран на Ada)
PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language (базиран на Oracle PL/SQL)
Sybase Watcom-SQL SQL Anywhere Watcom-SQL Dialect

Базите от данни и MyDeLC

MyDeLC предлага различни лекционни курсове, представящи различни системи и модели бази от данни. Следното учебното съдържание е достъпно за студентите в бакалавърските и магистърските програми на Факултетата по Математика и Информатика на Пловдивския университет „Паисий Хилендарски:

  • Бази от данни – лекционният курс представя базовите принципи на системите за управление на бази от данни. Представят се архитектури и различни модели и се прави сравнение между тях. Основно внимание се обръща на релационния модел, който е засегнат и в лабораторните занятия. Засегната е темата за проектиране като са представени темите за функционалните зависимости и теорията на нормализацията. Демонстрирани са също основните принципи за работа с транзакции и конкурентност. Представени са примери от различни приложни области; 
  • Програмиране за Oracle с PL/SQL – в тази дисциплина се демонстрират както базовите възможности на езика: деклариране на променливи, писане на изрази и управляващи изпълнението структури, така и по-сложни концепции като комплексни типове данни, използване на курсори, управление на изключения и съхранени процедури и функции. Тази дисциплина се преподава със съдействието на Oracle Academy, откъдето са предоставени и материалите за обучение. Използваната версия в лабораторните материали е Oracle 11g; 
  • "Достъп до бази от данни с Java" – в този лекционен курс се представят техниките за достъп до бази от данни чрез езика Java. Демонстрирани са различни типове драйвери. Примерите включват изпълнение на SQL изрази, обработка на резултати, извикване на съхранени процедури и функции. Обръща се внимание също на темите за connection pooling и вграден SQL чрез използване на SQLJ.