прикладні програми баз даних;
сервери баз даних;
власне бази даних.
Прикладна програма баз даних являє собою програмне забезпечення спеціального призначення, розроблене і реалізоване користувачами чи третіми особами компаніями-розробниками ПЗ. На противагу, клієнтські компоненти - це програмне забезпечення баз даних загального призначення, розроблене і реалізоване компанією-розробником бази даних. За допомогою клієнтських компонентів користувачі можуть отримати доступ до даних, що зберігаються на локальному або віддаленому комп'ютері.
Сервер баз даних виконує завдання управління даними, що зберігаються в базі даних. Клієнти взаємодіють з сервером баз даних, відправляючи йому запити. Сервер обробляє кожен отриманий запит і відправляє результати відповідного клієнта.
можливості СУБД
У загальних рисах, базу даних можна розглядати з двох точок зору - користувача і системи бази даних. Користувачі бачать базу даних як набір логічно пов'язаних даних, а для системи баз даних це просто послідовність байтів, які зазвичай зберігаються на диску. Хоча це два повністю різні погляди, між ними є щось спільне: система баз даних повинна надавати не тільки інтерфейс, що дозволяє користувачам створювати бази даних і витягувати або модифікувати дані, але також системні компоненти для управління збереженими даними. Тому система баз даних повинна надавати такі можливості:
різноманітні інтерфейси;
фізичну незалежність даних;
логічну незалежність даних;
безпеку баз даних.
Всі ці можливості коротко описуються в наступних далі розділах.
Різноманітні інтерфейси
Більшість баз даних проектуються і реалізовуються для роботи з ними різних типів користувачів, що мають різні рівні знань. З цієї причини система баз даних повинна надавати кілька окремих користувацьких інтерфейсів. Інтерфейс може бути графічним або текстовим.
У графічних інтерфейсах введення здійснюється за допомогою клавіатури або миші, а висновок реалізується в графічному вигляді на монітор. Різновидом текстового інтерфейсу, часто використовуваного в системах баз даних, є інтерфейс командного рядка, за допомогою якого користувач здійснює введення за допомогою набору команд на клавіатурі, а система відображає висновок в текстовому форматі на моніторі.
Фізична незалежність даних
Фізична незалежність даних означає, що прикладні програми бази даних не залежать від фізичної структури даних, що зберігаються в базі даних. Ця важлива особливість дозволяє змінювати збережені дані без необхідності вносити будь-які зміни в прикладні програми баз даних.
Наприклад, якщо дані були спочатку впорядковані за одним критерієм, а потім цей порядок був змінений за іншим критерієм, зміна фізичних даних не повинно впливати на існуючі програми баз даних або її схему (опис бази даних, створене мовою визначення даних системи бази даних).
Логічна незалежність даних
При обробці файлів, використовуючи традиційні мови програмування, файли оголошуються прикладними програмами, тому будь-які зміни в структурі файлу зазвичай вимагають внесення відповідних змін до всіх використовують його програми.
оптимізація запитів
Більшість систем баз даних містять подкомпонент, який має назву оптимізатором. який розглядає кілька можливих стратегій виконання запиту даних і вибирає з них найбільш ефективну. Обрана стратегія називається планом виконання запиту. Оптимізатор приймає рішення, беручи до уваги такі фактори, як розмір таблиць, до яких направлено запит, існуючі індекси і логічні оператори (AND, OR та NOT), які використовуються в реченні WHERE.
Цілісність даних
Забезпечення цілісності даних може здійснюватися користувачем в прикладній програмі або ж системою управління базами даних. До максимально можливій мірі це завдання повинне здійснюватися за допомогою СУБД.
управління паралелізмом
Система баз даних являє собою розраховану на багато користувачів систему програмного забезпечення, що означає одночасне звернення до бази даних множинних користувальницьких додатків. Тому кожна система баз даних повинна мати будь-яким типом механізму, що забезпечує управління спробами модифікувати дані декількома додатками одночасно. Далі наводиться приклад проблеми, яка може виникнути, якщо система баз даних не оснащена таким механізмом управління:
На загальному банківському рахунку № 3811 в банку X є $ 1500..
Власники цього рахунку, пані А і пан Б, йдуть в різні відділення банку і одночасно знімають з рахунку по $ 750 кожен.
Сума, що залишилася на рахунку № 3811 після цих транзакцій, повинна бути $ 0, і ні в якому разі не $ 750.
Всі системи баз даних повинні мати необхідні механізми для обробки подібних ситуацій, забезпечуючи управління паралелізмом.
Система баз даних повинна бути оснащена підсистемою для відновлення після помилок в програмному і апаратному забезпеченні. Наприклад, якщо в процесі оновлення 100 рядків таблиці бази даних відбувається збій, то підсистема відновлення повинна виконати відкат всіх виконаних оновлень, щоб забезпечити несуперечливість даних.
Безпека баз даних
Системи реляційних баз даних
Компонент Database Engine сервера Microsoft SQL Server є системою реляційних баз даних. Поняття систем реляційних баз даних було вперше введено в 1970 р Едгаром Ф. Коддом в статті "A Relational Model of Data for Large Shared Data Banks". На відміну від попередніх систем баз даних (мережевих і ієрархічних), реляційні системи баз даних засновані на реляційній моделі даних, яка має потужної математичної теорією.
Модель даних - це набір концепцій, взаємозв'язків між ними та їх обмежень, які використовуються для представлення даних в реальній задачі. Центральним поняттям реляційної моделі даних є таблиця. Тому, з точки зору користувача, реляційна база даних містить тільки таблиці і нічого більше. Таблиці складаються із стовпців (одного або декількох) і рядків (ні однієї або декількох). Кожне припинення рядки і стовпці таблиці завжди містить рівно одне значення даних.
Ця інформація представлена в базі даних SampleDb (знаходиться в исходниках) за допомогою чотирьох таблиць:
Організація цих таблиць показана на малюнках нижче. Таблиця Department представляє всі відділи компанії. Кожен відділ має наступні атрибутами (стовпчиками):
Атрибут Number представляє однозначну номер кожного відділу, атрибут DepartmentName - його назва, а атрибут Location - розташування. Таблиця Employee представляє всіх працівників компанії. Кожен співробітник має наступні атрибутами (стовпчиками):
Атрибут Id являє однозначний табельний номер кожного співробітника, атрибути FirstName і LastName - ім'я та прізвище співробітника відповідно, а атрибут DepartmentNumber - номер відділу, в якому працює співробітник.
Всі проекти компанії представлені в таблиці проектів Project, що складається з наступних стовпців (атрибутів):
У стовпці ProjectNumber вказується однозначний номер проекту, а в стовпчиках ProjectName і Budget - назва і бюджет проекту відповідно.
У таблиці Works_on вказується зв'язок між співробітниками і проектами:
У стовпці EmpId вказується табельний номер співробітника, а в стовпці ProjectNumber - номер проекту, в якому він бере участь. Комбінація значень цих двох стовпців завжди однозначна. У стовпчиках Job і EnterDate вказується посада і початок роботи співробітника в даному проекті відповідно.
На прикладі бази даних SampleDb можна описати деякі основні властивості реляційних систем баз даних:
Рядки таблиці не організовані в якомусь певному порядку.
Також не організовані в якомусь певному порядку стовпці таблиці.
Кожен стовпець таблиці повинен мати однозначне ім'я в будь-якій даній таблиці. Але різні таблиці можуть містити стовпці з одним і тим же ім'ям. Наприклад, таблиця Department містить стовпець Number і стовпець з таким же ім'ям є в таблиці Project.
Кожен елемент даних таблиці повинен містити одне значення. Це означає, що будь-яка осередок на перетині рядків і стовпців таблиці ніколи не містить будь-якого набору значень.
Кожна таблиця містить, принаймні, один стовпець, значення якого визначають таку властивість, що ніякі два рядки не містять однаковою комбінації значень для всіх стовпців таблиці. У реляційної моделі даних такої стовпець називатися потенційним ключем (candidate key). Якщо таблиця містить кілька потенційних ключів, розробник вказує один з них, як первинний ключ (primary key) даної таблиці. Наприклад, первинним ключем таблиці Department буде стовпець Number, а первинними ключами таблиць Employee буде Id. Нарешті, первинним ключем таблиці Works_on буде комбінація стовпців EmpId і ProjectNumber.
Таблиця ніколи не містить однакових рядків. Але це властивість існує тільки в теорії, тому що компонент Database Engine і всі інші реляційні системи баз даних допускають існування в таблиці однакових рядків.
SQL - мова реляційної бази даних
Мова реляційної бази даних в системі SQL Server називається Transact-SQL. Це різновид самого значимого на сьогоднішній день мови бази даних - мови SQL (Structured Query Language - мова структурованих запитів). Походження мови SQL тісно пов'язане з проектом, званим System R, розробленого і реалізованого компанією IBM ще на початку 80-х років минулого століття. За допомогою цього проекту було продемонстровано, що, використовуючи теоретичні основи роботи Едгара Ф. Кодда, можливе створення системи реляційних баз даних.
На відміну від традиційних мов програмування, таких як C #, C ++ і Java, мова SQL є безліч-орієнтованим (set-oriented). Розробники мови також називають його запис-орієнтованим (record-oriented). Це означає, що в мові SQL можна запитувати дані з декількох рядків однієї або декількох таблиць, використовуючи всього лише одну інструкцію. Це одне з найбільш важливих переваг мови SQL, що дозволяє використовувати цю мову на логічно більш високому рівні, ніж традиційні мови програмування.
Іншою важливою властивістю мови SQL є його Непроцедурного. Будь-яка програма, написана на процедурному мовою (C #, C ++, Java), крок за кроком описує, як виконувати певне завдання. На противагу цьому, мову SQL, як і будь-який інший непроцедурного мова, описує, що хоче користувач. Таким чином, відповідальність за знаходження відповідного способу для задоволення запиту користувача лежить на системі.
Мова SQL містить два под'язика: мова опису даних DDL (Data Definition Language) і мову обробки даних DML (Data Manipulation Language). Інструкції мови DDL також застосовуються для опису схем таблиць баз даних. Мова DDL містить три загальні інструкції SQL: CREATE, ALTER і DROP. Ці інструкції використовуються для створення, зміни та видалення, відповідно, об'єктів баз даних, таких як бази даних, таблиці, стовпці та індекси.
На відміну від мови DDL, мова DML охоплює всі операції з маніпулювання даними. Для маніпулювання базами даних завжди застосовуються чотири загальні операції: вилучення, вставка, видалення і модифікування даних (SELECT, INSERT, DELETE, UPDATE).