Какво е база от данни?
Базата данни представлява колекция от данни. Обикновено данните са организирани така, че да представят модел от реалността. Тези данни могат да бъдат съхранявани на различни носители – хартия, електронни устройства, магнитни и оптични дискове и др.
Когато става въпрос за компютърни бази от данни се има предвид софтуер, който обслужва данните и предоставя достъп на външни приложения или потребители до тях. Този достъп може да бъде чрез потребителски интерфейс (за потребителите) или чрез стандартизирани интерфейси за програмен достъп – т.нар. драйвери от различни типове (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
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.