Реляційна алгебра, операції реляційної алгебри. Основи реляційної алгебри

Реляційна алгебра – це мова операцій, що виконуються над відносинами – таблицями реляційної бази даних. Операції реляційної алгебри дозволяють на основі одного або декількох відносин створювати інше відношення без зміни вихідних відносин. Отримане інше відношення зазвичай не записується в базу даних, а існує в результаті виконання SQL-запиту - масиві, створюваному функціями для роботи з базами даних у мовах програмування. Для кожної операції реляційної алгебри буде дана її реалізація як запитів мовою SQL.

Розглянемо операції реляційної алгебри. Щоб Вам не відволікатися на зміст таблиць не Ваших баз даних, таких як "Продукти", "Водії", "зливи", "груші", "чай", "кава", Володимири, Сергії тощо. виконуватимемо операції над відносинами (таблицями) з абстрактними даними, такими як R1, R2 (назви таблиць - відносин) тощо. і А1, А2, А3 (назви атрибутів - стовпців) та h15, w11 і т.п. (Зміст записів таблиць бази даних).

Пріоритети виконання операцій реляційної алгебри (у порядку зменшення пунктів списку, а одному пункті - операції з рівними пріоритетами):

  • селекція, проекція
  • декартове твір, з'єднання, перетин, поділ
  • об'єднання, різницю.

Операція вибірки

Операція вибірки працює з одним ставленням та визначає результуюче відношення R, що містить лише ті кортежі (або рядки, або записи), відносини , які задовольняють заданій умові (предикату P ).

Таким чином, операція вибірки - унарна операція - і записується так:

де P- Предикат (логічне умова).

Запит SQL

Тепер подивимося, що вийде в результаті виконання цієї операції реляційної алгебри та відповідного запиту SQL. У таблиці нижче наведено одне відношення, з яким працює ця операція.

R3
A1A2A3A4
3 hhylms
4 ppa1sr
1 rrylms

Переглядаємо стовпець А3 і встановлюємо, що предикату A3>"d0" задовольняють записи в першому та третьому рядках вихідного відношення (бо номер літери y в алфавіті більший за номер літери d). В результаті отримуємо наступне нове ставлення, в якому два рядки:

R
A1A2A3A4
3 hhylms
1 rrylms

Комбінувати всілякі логічні умови для вибірок Вам допоможе матеріал "Бульова алгебра (алгебра логіки)" .

Запит SQL

SELECT A1, A2, A3 від R1 UNION SELECT A1, A2, A3 від R2

Тепер подивимося, що вийде в результаті виконання цієї операції реляційної алгебри та відповідного запиту SQL. Тепер дано два відносини, оскільки операція об'єднання – бінарна операція:

R1 R2
A1A2A3A1A2A3
Z7aaw11X8ppk21
B7hhh15Q2eeh15
X8ppw11X8ppw11

Об'єднуємо рядки першого та другого відношення і бачимо, що третій рядок, який є третім і в першому, і в другому відношенні - ідентичні, тому його включаємо в нове відношення лише один раз. Отримуємо таке ставлення:

R
A1A2A3
Z7aaw11
B7hhh15
X8ppw11
X8ppk21
Q2eeh15

Важливо наступне: операція об'єднання може бути виконана тільки тоді, коли два відносини мають однакову кількість і назви атрибутів (стовпців), або, кажучи формально, сумісні по об'єднанню.

Операція перетину

Результатом перетину двох множин (відносин) А і В () буде така множина (відношення) С, яке включає в себе ті і тільки ті елементи, які є і в множині А, і в множині В. Операція перетину реляційної алгебри ідентична операції .

Запит SQL

SELECT A1, A2, A3 від R1 INTERSECT SELECT A1, A2, A3 від R2

У деяких діалектах SQL немає ключового слова INTERSECT. Його заміною, наприклад, MySQL та інших, є INNER JOIN. Про те, як працює оператор SQL JOIN взагалі та його різновиди INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN та FULL OUTER JOIN - на уроці SQL JOIN – з'єднання таблиць бази даних .

Запит MySQL

Тепер подивимося, що вийде в результаті виконання цієї операції реляційної алгебри та відповідного запиту SQL. Знову дано два відносини R1 і R2:

R1 R2
A1A2A3A1A2A3
Z7aaw11X8ppk21
B7hhh15Q2eeh15
X8ppw11X8ppw11

Переглядаємо всі записи у двох відносинах, і виявляємо, що і в першому, і в другому відношенні є один рядок - той, який є третім і в першому, і в другому відношенні. Отримуємо нове ставлення:

R
A1A2A3
X8ppw11

Операція різниці

Різниця двох відносин R1 і R2 () складається з кортежів (або записів, або рядків), які є щодо R1, але відсутні щодо R2. Відносини R1 та R2 мають бути сумісні щодо об'єднання. Операція різниці реляційної алгебри ідентична операції.

Запит SQL

SELECT A1, A2, A3 від R2 EXCEPT
SELECT A1, A2, A3 від R1

Встановимо, що вийде в результаті виконання цієї операції реляційної алгебри та відповідного запиту SQL. Знову дано два відносини R1 і R2:

R1 R2
A1A2A3A1A2A3
Z7aaw11X8ppk21
B7hhh15Q2eeh15
X8ppw11X8ppw11

З відношення R2 виключаємо рядок, який є також щодо R2 - третій - і отримуємо нове відношення:

R
A1A2A3
X8ppw11
Q2eeh15

Операція декартового твору

Операція декартового твору () визначає нове відношення R, яке є результатом конкатенації кожного кортежу відношення R1 з кожним кортежем відношення R2.

Запит SQL

SELECT * від R3, R4

Встановимо, що вийде в результаті виконання цієї операції реляційної алгебри та відповідного запиту SQL. Дано два відносини R3 і R4:

R3 R4
A1A2A3A4A5A6
3 hhylms3 hh
4 ppa1sr4 pp
1 rrylms

У новому відношенні повинні бути всі атрибути (стовпці) двох відносин. Спочатку перший рядок відношення R3 зчепляється з кожним з двох рядків відношення R4, потім другий рядок відношення R3, потім третій. В результаті має вийти 3 Х 2 = 6 кортежів (рядків). Отримуємо таке нове ставлення:

R
A1A2A3A4A5A6
3 hhylms3 hh
3 hhylms4 pp
4 ppa1sr3 hh
4 ppa1sr4 pp
1 rrylms3 hh
1 rrylms4 pp
Додати - внести запис до БД і, залежно від режиму включення, або включити їх у групове ставлення, де вона оголошена підлеглої, або включати ні в яке групове ставлення.
Включити до групового відношення - пов'язати існуючий підпорядкований запис із записом-власником.
Переключити - пов'язати існуючий підпорядкований запис з іншим записом-власником у тому самому груповому відношенні.
Оновити - Змінити значення елементів попередньо отриманого запису.
Вилучити - Витягти записи послідовно за значенням ключа, а також використовуючи групові відносини - від власника можна перейти до записів - членам, а від підлеглого запису до власника набору.
видалити - Прибрати з БД запис. Якщо цей запис є власником групового відношення, то аналізується клас членства підлеглих записів. Обов'язкові члени повинні бути попередньо виключені із групового відношення, фіксовані видалені разом із власником, необов'язкові залишаться у БД.
Виключити із групового відношення - розірвати зв'язок між записом-власником та записом-членом.

Реляційна модель бази даних

По перше, всі дані моделі представлені лише як таблиць і зв'язків з-поміж них. Реляційна модель - єдина з усіх забезпечує однаковість уявлення даних.

Другий елементмоделі – реляційно-повна мова. Повнотамови в додатку до реляційної моделі означає, що вона повинна виконувати будь-яку операцію реляційної алгебри. Більш того, мову має описувати будь-яка запитяк операцій із таблицями, а чи не з їх рядками. Однією з таких мов є SQL.

Третій елементреляційної моделі вимагає від реляційної моделі підтримки деяких обмежень цілісності. Кожен рядок у таблиці повинен мати якийсь унікальний ідентифікатор, що називається первинним ключем. Друге обмеження накладається на цілісністьпосилань між таблицями.

Об'єктно-орієнтована модель.

У об'єктно-орієнтованих базах даних, на відміну реляційних, зберігаються не записи, а об'єкти (текст, аудіо- і відеоінформація, документи та інші об'єкти). Також важливим є завдання збереження стану об'єктів між повторними запусками прикладної програми. Проте, розвиненого математичного апарату, який міг би спиратися загальна об'єктно-орієнтована модель даних, не існує.

Більшість ООСУБД є бібліотекою, процедури управління даними якої включаються до прикладної програми. Незважаючи на переваги об'єктно-орієнтованих систем – реалізація складних типів даних, зв'язокз мовами програмування тощо. - найближчим часом перевага реляційних СУБДгарантовано.

Об'єктно-реляційні СУБД

Різниця між об'єктно-реляційними та об'єктними СУБД: перші є надбудовою над реляційною схемою, другі ж спочатку об'єктно-орієнтовані. Головна особливість та відмінність об'єктно-реляційних (як і об'єктних) СУБДвід реляційних у тому, що ОР СУБДінтегровані з Об'єктно-орієнтованою (OO) мовою програмування, внутрішньою або зовнішньою як C++, Java.

Об'єктно-реляційними СУБДє, наприклад, широко відомі Oracle Database, Microsoft SQL Server, PostgreSQL, Microsoft Access.

Реляційний підхід до побудови моделі предметної галузі.

· Наочна область моделюється сукупністю окремих інформаційних об'єктів (сутностей), кожен з яких описується своєю двовимірною таблицею;

· між таблицями існують зв'язки;

· Кожен елемент таблиці - один елемент даних;

· Усі стовпці в таблиці однорідні, тобто. всі елементи в стовпці мають однаковий тип (числовий, символьний і т.д.) та довжину;

· Кожен стовпець описує один атрибут сутності;

· Кожен стовпець має унікальне ім'я;

· Рядок містить значення атрибутів для одного екземпляра сутності;

· однакових рядків у таблиці відсутні (наявність первинного ключа);

· Порядок прямування рядків і стовпців може бути довільним.

Нормалізація відносин- формальний апарат обмежень формування відносин (таблиць), який дозволяє усунути дублювання, забезпечує несуперечність збережених у базі даних, зменшує трудовитрати ведення (введення, коригування) бази даних.

Перша нормальна форма

Відношення (таблиця) називається нормалізованим або наведеним до першої нормальної формиякщо всі його атрибути прості (далі неподільні).

Перетворення ставлення до першої нормальній форміможе призвести до збільшення кількості реквізитів (полів) відношення та зміни ключа.

Таблиця знаходиться в другий нормальній формі, якщо вона відповідає вимогам першої нормальної формиі всі її поля, що не входять до первинного ключа, пов'язані повною функціональною залежністю з первинним ключем, тобто будь-яке не ключове полеоднозначно ідентифікується повним набором ключових полів.

· Таблиця повинна містити дані про один тип об'єктів;

кожна таблиця повинна містити одне поле або кілька полів, що утворюють унікальний ідентифікатор (або первинний ключ) для кожного рядка;

· Усі неключові поля повинні визначатися повним унікальним ідентифікатором даної таблиці.

Третя нормальна форма

Вимога третьої нормальної формизводиться до того що, щоб усі неключові поля залежали тільки від первинного ключа і залежали друг від друга. Іншими словами, необхідно мати можливість змінювати значення будь-якого неключового поля, не змінюючи значення будь-якого іншого поля бази даних.

Типи зв'язків. Властивості відносин

· Відношення "один-до-одного"(1:1) означає, що кожен запис в одній таблиці відповідає не більше одного запису в іншій таблиці.

· Відношення "один-багатьом"(1:М) означає, що кожен запис в одній таблиці відповідає 0 або 1 або кілька записів в іншій таблиці.

· Відношення "багато до одного"(М:1) аналогічно розглянутому раніше типу "один-багатьом". Тип відносини між об'єктами залежить від погляду.

· Відношення "багато хто до багатьох"(М: М). виникає між двома таблицями тоді, коли кожен запис у одній таблиці відповідає 0 чи більше записів на другий таблиці і навпаки.

Прості та складові ключі

Первинний ключможе складатися з єдиного поля таблиці, значення якого є унікальними для кожного запису. Такий первинний ключназивають простим ключем.

Якщо таблицяне має єдиного унікального поля, первинний ключможе бути складений із кількох полів, сукупність значень яких гарантує унікальність.

Такий первинний ключназивають складовим ключем

Усі види зв'язків реалізуються з допомогою первинних ключів і посилань з їхньої значення інших таблицях. Такі посилання, що є копією первинних ключів інших таблиць, називаються зовнішніми ключами.

Розглянутий ієрархічний та мережевий приклад бази даних, що містить відомості про підрозділи підприємства та працівників, що працюють у них, стосовно реляційної моделі матиме вигляд:

З в'язь"багато хто до багатьохреалізується через додаткову таблицю, за допомогою якої ця зв'язокбуде зведена до двох зв'язків типу " одним-багатьом".

Надіслати свою гарну роботу до бази знань просто. Використовуйте форму нижче

Студенти, аспіранти, молоді вчені, які використовують базу знань у своєму навчанні та роботі, будуть вам дуже вдячні.

Розміщено на http://www.allbest.ru/

Міністерство освіти Російської Федерації

Пензенський державний університет

Факультет обчислювальної техніки

Кафедра "Інформаційно-обчислювальні системи"

Дисципліна "Бази даних"

Звіт з лабораторної роботи № 1

"Операції з базою даних"

Виконав: ст-ка грн. 13ВЕ1

Юдіна С.В.

Прийняв: к. т. зв., доцент

Долгова І.А.

  • 1. Мета роботи
  • Завдання
  • 2. Виконання роботи
  • Створення бази даних
  • Реєстрація бази даних
  • Підключення до бази даних
  • Вилучення метаданих
  • Видалення бази даних
  • Висновок
  • Програми

1. Мета роботи

Вивчити операції з базами даних загалом. Отримати навички використання програми "IBExpert" для створення, видалення, реєстрації, підключення, вилучення метаданих, резервного копіювання та відновлення бази даних СУБД Firebird. Вивчити SQL-оператори для створення, підключення та видалення бази даних.

Завдання

1) Вивчити операції з базами даних загалом.

2) Отримати навички використання програми "IBExpert" для створення, видалення, реєстрації, підключення, вилучення метаданих, резервного копіювання та відновлення бази даних СУБД Firebird.

3) Вивчити SQL-оператори для створення, підключення та видалення бази даних.

Для варіанта 17 вихідними даними є ім'я файлу з БД - YudinaDom1. FDB, Логін - TEAM001, Пароль - slave001.

2. Виконання роботи

Створення бази даних

За допомогою інструменту IBExpert було створено базу даних. При цьому як сервер бази даних використовувався віддалений сервер з ім'ям sqledu03.

Файл бази даних має ім'я D: \Data\Лр1\YudinaDom1. FDB, Сервер - віддалений, Ім'я сервера - sqledu03, Протокол - TCP/IP, Client Library File - C:\Program Files\Firebird\Firebird_2_5\bin\fbclient. dll, Ім'я користувача - TEAM001, Пароль - slave001, Розмір сторінки БД - 16384, Кодування - WIN1251, Діалект БД - Діалект 3.

База даних зареєстрована під назвою YudinaDom1. FDB. У цьому використано сервер Firebird версії 2.5 (Див. Додаток A, Рис.1. Створення БД).

Реєстрація бази даних

Для реєстрації бази даних потрібно вибрати пункт меню База даних > Зареєструвати базу. В результаті відкривається діалогове вікно "Реєстрація бази даних", в якому треба заповнити практично такі ж поля, що і при створенні бази даних, потім натиснути кнопку . Після реєстрації вся введена про базу даних інформація запам'ятовується додатком IBExpert і у вікно "Database Explorer", до дерева на вкладці "Бази" додається вузол із зареєстрованою базою даних.

база оператор резервне копіювання

Підключення до бази даних

Щоб підключитися до зареєстрованої бази даних, необхідно вибрати базу даних у списку та виконати команду База даних > Підключитися до бази даних. Назва підключеної бази даних у вікні "Database Explorer" буде виділено жирним шрифтом, а також з'являться вкладені вузли з об'єктами, що містяться в підключеній базі даних.

Вилучення метаданих

Для вилучення метаданих використовується команда головного меню Інструменти > Вилучення метаданих, яка відкриває вікно "Вилучення метаданих". У вікні встановлюємо прапорець "Витягнути все", потім за допомогою випадаючого списку "Видобувати в" вибираємо "Script Executive", в яке будуть вилучені метадані, а потім натискаємо кнопку [Почати вилучення] (Див. Додаток А, Рис.4. Витяг метаданих ). Після вилучення відкривається вікно "Редактор скриптів", в якому будуть вилучені метадані. (Див. Додаток А, Рис.5. Вилучення метаданих (редактор скриптів)).

Видалення бази даних

Для видалення бази даних необхідно вибрати команду меню База даних > Видалити базу, а потім підтверджуємо своє бажання у діалоговому вікні. (Див. Додаток А, Рис.6. Видалення БД (меню База даних)).

Створення бази даних за допомогою "Редактора скриптів"

Для створення бази даних необхідно виконати в додатку IBExpert команду Інструменти > Редактор скриптів, потім ввести команди, які створюють базу даних у вікні "Редактор скриптів" і натиснути кнопку [Виконати скрипт] (Див. Додаток А, Рис.7. Створення БД (редактор скриптів) ).В результаті має з'явитися повідомлення про успішне виконання скрипта.Для подальшої роботи необхідно знову виконати реєстрацію бази даних і підключитися до неї.

Резервне копіювання бази даних та її відновлення

Для створення резервної копії бази даних за допомогою програми "IBExpert" необхідно виконати команду меню Служби > Резервування бази даних, у діалоговому вікні "Резервування БД", що відкрилося, задати кілька параметрів і натиснути кнопку [Почати резервне копіювання]. В результаті буде створено файл з резервною копією.

Для відновлення бази даних із резервної копії використовується команда Служби > Відновлення бази даних. В результаті відкривається діалогове вікно "Відновлення БД", в якому треба в полі "Restore Info" вибрати рядок "Нову базу", в полі "Database file" ввести ім'я файлу бази даних, що відновлюється (SQLEDU03: D: \DATA\Лр1\YudinaDom1). FDB), в полі "File Name" ввести ім'я файлу, з якого відновлюватиметься база даних, потім натиснути кнопку (Див. Додаток А, Рис.9. Відновлення БД).

Файли, отримані під час виконання лабораторної роботи.

Відредаговано сценарій створення бази даних. (Див. Додаток А, Рис. 10. Редактор сценарію бази даних). Збережено файл сценарію на сервері в папці "ЛР1" з таким самим ім'ям, як і ім'я бази даних, стандартне розширення ".sql".

В результаті виконання лабораторної роботи було створено такі файли:

1) Сценарій - D: \Data\Лр1\ YudinaDom1. sql

2) БД - D: \Data\Лр1\ YudinaDom1. fdb

3) Резервна копія БД - D: \ Data \ Лр1 \ YudinaDom1. fbk

4) Файл зі звітом - D: \ Data \ Лр1 \ Звіт1. odt

Відповіді на контрольні питання

1. Дати визначення терміна "База даних".

БД - це певний набір стійких даних, що відбиває стан об'єктів та його відносин у аналізованої предметної області і використовуваний прикладними системами будь-якого підприємства.

2. Що означають скорочення СУБД та DBMS?

Система управління базами даних. Database Management System.

3. Які операції проводяться з базою даних загалом?

Додавання нових даних, видалення, редагування.

4. Що таке база даних СУБД Firebird? Який вийшов розмір файлу з базою даних? Від чого залежить? Що міститься у файлі з базою даних?

СУБД Firebird – це реляційна СУБД, призначена для використання у додатках з архітектурою клієнт/сервер. У Firebird база даних являє собою один або кілька файлів, в яких зберігаються дані користувача та метадані – 2,40 Мбайта. Від кількості інформації, що міститься. Первинні файли даних, вторинні файли даних та файли журналів.

Розмір впливає ефективність роботи СУБД, розмір сторінки рекомендується робити рівним розміру кластера файлової системи, за замовчуванням розмір сторінок дорівнює 16384.

6. Що треба зробити, щоб у базі даних можна зберігати символи російського алфавіту?

Поле введення кодування призначене для вибору набору символів національного алфавіту для текстових полів бази даних. Російські символи Windows містяться у кодуванні Win1251. Якщо ввести в поле NONE, підтримуватиметься кодування, яке використовується операційною системою.

7. Назвати відмінності між першим та третім діалектами бази даних.

У діалекті 3 на відміну діалекту 1 використовується розширений набір типів даних, відрізняється регістр ідентифікаторів, записаних у подвійних лапках, а також не підтримується неявне приведення типів даних.

8. Які існують способи створення та видалення бази даних?

Для створення бази даних можна використовувати один із двох способів:

1. Виконати команду База даних > Створити базуу додатку IBExpert, ввести параметри створюваної бази даних у діалоговому вікні "Створення бази даних" та натиснути кнопку [ OK].

2. Виконати у додатку IBExpert команду Інструменти > Редактор скриптів, потім ввести команди, які створюють базу даних у вікні "Редактор скриптів" і натиснути [ Виконати скрипт] (F9).

Для видалення:

1. Виконати у програмі "IBExpert" команду меню База даних > Видалити базу, а потім підтвердити своє бажання у діалоговому вікні.

2. Виконати SQL-оператор DROP DATABASE.

3. Видалити файл із базою даних вручну.

9. Як вказується шлях до файлу з базою даних на віддаленому комп'ютері?

Ім'я сервера: Шлях до файлу (sqledu03: D: \Data\Лр1\ YudinaDom1. fdb)

10. Які стандартні розширення мають файли баз даних та сценаріїв?

Файл бази даних ". fdb", сценарію ". sql".

11. Як за допомогою IBExpert підключитися до наявної бази даних, розташованої на локальному комп'ютері?

Щоб підключитися до зареєстрованої бази даних, потрібно вибрати потрібну базу даних у списку та виконати команду База даних > Підключитися до базиабо зробити подвійне клацання мишкою на імені обраної бази даних.

12. Яке ім'я та вихідний пароль має адміністратор сервера Firebird?

Ім'я: SYSDBA, пароль: masterkey.

13. Які види коментарів можуть містити файли сценаріїв для виконання операцій із базою даних?

Сценарій може містити коментарі двох видів: багаторядковий коментар (починається символами "/*" і закінчується символами "*/") і однорядковий коментар, який починається символами "-" і триває до кінця рядка.

14. Скільки системних таблиць містить створена база даних? З яких символів вони починаються? Навести назви будь-яких 3-х системних таблиць.

34 таблиці. Починається із символу "sys.". Приклади: "sys.sysschobjs" - Існує в кожній базі даних. Кожен рядок представляє об'єкт бази даних; "sys. sysscalartypes" - Існує в кожній базі даних. Містить по рядку на кожен системний або тип користувача даних; "sys. sysowners" - Існує у кожній базі даних. Кожен рядок відповідає учаснику бази даних.

15. Які правила оформлення тексту сценарію?

Вирази в операторі завжди починається з нового рядка з відступом в 1 позицію від правого краю батьківського елемента оператора (SELECT, FROM, WHERE, INTO, …). Оператори, що містяться в сценарії, відокремлюються один від одного символом ";". При оголошенні таблиць найменування стовпців, типи, значення за промовчанням, обмеження Nullable вирівнюються ліворуч.

Висновок

У ході виконання лабораторної роботи було вивчено операції з базами даних загалом. Отримано навички використання програми "IBExpert" для створення, видалення, реєстрації, підключення, вилучення метаданих, резервного копіювання та відновлення бази даних СУБД Firebird. Вивчено SQL-оператори для створення, підключення та видалення бази даних.

Розміщено на Allbest.ru

Подібні документи

    Система управління базами даних (СУБД). Програмні засоби, призначені для створення, заповнення, оновлення та видалення бази даних. Структура, моделі та класифікація баз даних. Створення каталогів, псевдонімів, таблиць, шаблонів та форм СУБД.

    презентація , додано 09.01.2014

    Проектування реляційної бази даних за допомогою прикладного програмного засобу MS ACCESS. Опис особливостей використання запитів для вилучення, зміни та видалення інформації з бази даних. Характеристика структури користувача інтерфейсу.

    курсова робота , доданий 19.11.2012

    Класифікація бази даних. Вибір системи управління базами даних для створення бази даних у мережі. Швидкий доступ та отримання конкретної інформації щодо функцій. Розподіл функцій під час роботи з базою даних. Основні особливості ієрархічної моделі.

    звіт з практики, доданий 08.10.2014

    Мова опису даних Oracle. Призначення бази для зберігання інформації. Створення та зміна таблиць за допомогою операторів Create та Alter table. Правила найменування таблиці. Оператори Rename та Truncate. Метод створення та видалення уявлення.

    презентація , додано 14.02.2014

    Механізм та основні етапи створення та адміністрування бази даних для Картотеки книг або бібліотеки за допомогою засобів Microsoft SQL Server. Характеристика цієї бази та вимоги до неї. Основні операції з досліджуваною базою даних.

    курсова робота , доданий 21.06.2011

    Поняття реляційної моделі даних, цілісність її сутності та посилань. Основні етапи створення бази даних, зв'язування таблиць на схемі даних. Проектування бази даних книжкового каталогу "Books" за допомогою СУБД Microsoft Access та мови запитів SQL.

    курсова робота , доданий 25.11.2010

    Проектування фізичної та логічної моделей віддаленої бази даних для АЗС. Розробка бази даних у СУБД Firebird за допомогою утиліти IBExpert. Створення клієнтської програми для Windows з використанням клієнт-серверної технології серед C++ Builder.

    курсова робота , доданий 18.01.2017

    Створення бази даних серед MS Access. Створення та робота з базою даних в ательє. Алгоритм розв'язання задачі. Вибір пакету прикладних програм. Проектування форм вихідних документів із використанням СУБД MS Access. Структура запису таблиць бази даних.

    курсова робота , доданий 30.01.2009

    СУБД - розраховані на багато користувачів системи управління базою даних, що спеціалізуються на управлінні масивом інформації. Запити на вибірку та зміну даних, формування звітів на запити вибірки. Схема бази даних Програма управління базою даних.

    реферат, доданий 27.12.2013

    Призначення бази даних забезпечення роботи автобусного парку. Основні можливості адмінпанелі. Виконувані базою даних та додатком функції. Інфологічне моделювання даних. Опис розробленого веб-додатку. Проектування баз даних.

Реляційна алгебра виходить з теорії множин і є основою логіки роботи баз даних.
Коли я тільки вивчав пристрій баз даних і SQL, попереднє ознайомлення з реляційною алгеброю дуже допомогло подальшим знанням правильно вкластися в голові, і я постараюся, щоб ця стаття справила подібний ефект.

Так що якщо ви збираєтеся почати своє навчання в цій галузі, або вам просто стало цікаво, прошу під кат.

Реляційна база даних

Для початку введемо поняття реляцинної бази даних, у якій виконуватимемо всі дії.

Реляційною базою даних називається сукупність відносин, містять всю інформацію, що має зберігається у базі. У даному визначенні нам цікавий термін відношення, але поки що залишимо його без строго визначення.
Краще уявімо таблицю продуктів.

Таблиця PRODUCTS

ID NAME COMPANY PRICE
123 Печінки ТОВ ”Темна сторона” 190
156 Чай ТОВ ”Темна сторона” 60
235 Ананаси ВАТ ”Фрукти” 100
623 Томати ТОВ ”Овочі” 130

Таблиця складається з 4-х рядків, рядок у таблиці є кортежем у реляційній теорії. Безліч упорядкованих кортежів називається ставленням.
Перед тим, як дати визначення відносини, введемо ще один термін - домен. Домени стосовно таблиці це стовпці.

Для ясності тепер введемо суворе визначення відносини.

Нехай дані N множин D1, D2, …. Dn (домени), ставленням R над цими множинами називається безліч упорядкованих N-кортежів виду де d1 належить D1 і тд. Безліч D1,D2,..Dn називаються доменами відношення R.
Кожен елемент кортежу є значенням одного з атрибутів, відповідного одному з доменів.

Ключі у відносинах
Щодо вимогою і те, що це кортежі мають різнитися. Для однозначної ідентифікації кортежу є первинний ключ. Первинний ключ це атрибут або набір з мінімальної кількості атрибутів, який однозначно ідентифікує конкретний кортеж і не містить додаткових атрибутів.
Мається на увазі, що всі атрибути в первинному ключі повинні бути необхідними та достатніми для ідентифікації конкретного кортежу, і виключення будь-якого з атрибутів у ключі зробить його недостатнім для ідентифікації.
Наприклад, у такій таблиці ключем буде поєднання атрибутів з першого та другого стовпця.

Таблиця DRIVERS

Видно, що в організації може бути кілька водіїв, і щоб однозначно ідентифікувати водія необхідно і значення зі стовпця “Назва організації” та “Ім'я водія”. Такий ключ називається складеним.

У реляційної БД таблиці взаємопов'язані і співвідносяться один з одним як основні та підлеглі. Зв'язок головної та підлеглої таблиці здійснюється через первинний ключ (primary key) головної таблиці та зовнішній ключ (foreign key) підлеглої таблиці.
Зовнішній ключ - це атрибут або набір атрибутів, який у головній таблиці є первинним ключем.

Цієї підготовчої теорії буде достатньо для знайомства з основними операціями реляційної алгебри.

Операції реляційної алгебри

Основні вісім операцій реляційної алгебри були запропоновані Е. Коддом.
  • Об'єднання
  • Перетин
  • Віднімання
  • Декартове твір
  • Вибірка
  • Проекція
  • З'єднання
  • Поділ
Перша половина операцій аналогічна таким операціям над множинами. Частину операцій можна виразити через інші операції. Розглянемо більшу частину операцій із прикладами.

Для розуміння важливо запам'ятати, що результатом будь-якої операції алгебри над відносинами є ще одне відношення, яке можна потім використовувати в інших операціях.
Створимо ще одну таблицю, яка стане в нагоді в прикладах.

Таблиця SELLERS

ID SELLER
123 ТОВ "Дарт"
156 ВАТ ”Відро”
235 ЗАТ "Овоче База"
623 ВАТ ”Фірма”

Умовимося, що у таблиці ID це зовнішній ключ, пов'язані з первинним ключем таблиці PRODUCTS.

Спочатку розглянемо найпростішу операцію - ім'я відносини. Її результатом буде таке саме відношення, тобто виконавши операцію PRODUCTS, ми отримаємо копію відношення PRODUCTS.

Проекція
Проекція є операцією, коли з відношення виділяються атрибути лише з зазначених доменів, тобто з таблиці вибираються лише потрібні стовпці, у своїй, якщо вийде кілька однакових кортежів, то в результуючому відношенні залишається лише з одному екземпляру подібного кортежу.
Наприклад зробимо проекцію на таблиці PRODUCTS вибравши з неї ID і PRICE.

Синтаксис операції:
π (ID, PRICE) PRODUCTS

За умови вибірки ми можемо використовувати будь-який логічний вираз. Зробимо ще одну вибірку з ціною більше 90 та ID товару менше 300:

σ (PRICE>90 ^ ID<300) PRODUCTS

множення
Множення або декартове твір є операцією, що виробляється над двома відносинами, в результаті якої ми отримуємо відношення з усіма доменами двох початкових відносин. Кортежі в цих доменах будуть являти собою всі можливі поєднання кортежів з початкових відносин. На прикладі буде зрозуміліше.

Отримаємо декартові твори таблиць PRODUCTS та SELLERS.
Синтаксис операції:

PRODUCTS × SELLERS
Можна помітити, що у цих таблиць є однаковий домен ID. У подібній ситуації домени з однаковими назвами одержують префікс у вигляді назви відповідного відношення, як показано нижче.
Для стислості перемножимо не повні стосунки, а вибірки з умовою ID<235

(кольором виділені одні й самі кортежі)

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печінки ТОВ ”Темна сторона” 190 123 ТОВ "Дарт"
156 Чай ТОВ ”Темна сторона” 60 156 ВАТ ”Відро”
123 Печінки ТОВ ”Темна сторона” 190 156 ВАТ ”Відро”
156 Чай ТОВ ”Темна сторона” 60 123 ТОВ "Дарт"

Для використання цієї операції уявімо необхідність вибрати продавців з цінами менше 90. Без твору необхідно було б спочатку отримати ID продуктів з першої таблиці, потім за цим ID з другої таблиці отримати потрібні імена SELLER, а з використанням твору буде такий запит:

π (SELLER) σ (RODUCTS.ID=SELLERS.ID ^ PRICE<90) PRODUCTS × SELLERS

В результаті цієї операції отримаємо відношення:

SELLER
ВАТ ”Відро”
З'єднання та природне з'єднання
Операція з'єднання зворотна операції проекції і створює нове відношення з двох існуючих. Нове ставлення виходить конкатенацією кортежів першого і другого відносин, у своїй конкатенації піддаються відносини, у яких збігаються значення заданих атрибутів. Зокрема, якщо з'єднати відносини PRODUCTS та SELLERS, цими атрибутами будуть атрибути доменів ID.

Також для зрозумілості можна уявити з'єднання як результат двох операцій. Спочатку береться твір вихідних таблиць, та був з отриманого відношення ми вибираємо з умовою рівності атрибутів з однакових доменів. У разі умовою є рівність PRODUCTS.ID і SELLERS.ID.

Спробуємо поєднати відносини PRODUCTS та SELLERS та отримаємо відношення.

PRODUCTS.ID NAME COMPANY PRICE SELLERS.ID SELLER
123 Печінки ТОВ ”Темна сторона” 190 123 ТОВ "Дарт"
156 Чай ТОВ ”Темна сторона” 60 156 ВАТ ”Відро”
235 Ананаси ВАТ ”Фрукти” 100 235 ЗАТ "Овоче База"
623 Томати ТОВ ”Овочі” 130 623 ВАТ ”Фірма”

Натуральне з'єднання отримує схоже ставлення, але у разі, якщо ми коректно налаштована схема у базі (у разі первинний ключ таблиці PRODUCTS ID пов'язані з зовнішнім ключем таблиці SELLERS ID), то в результуючому відношенні залишається один домен ID.

Синтаксис операції:
PRODUCTS ⋈ SELLERS;

Вийде таке ставлення:

PRODUCTS.ID NAME COMPANY PRICE SELLER
123 Печінки ТОВ ”Темна сторона” 190 ТОВ "Дарт"
156 Чай ТОВ ”Темна сторона” 60 ВАТ ”Відро”
235 Ананаси ВАТ ”Фрукти” 100 ЗАТ "Овоче База"
623 Томати ТОВ ”Овочі” 130 ВАТ ”Фірма”
Перетин та віднімання.
Результатом операції перетину буде відношення, яке складається з кортежів, що повністю входять до складу обох відносин.
Результатом віднімання буде відношення, що складається з кортежів, які є кортежами першого відношення і не є кортежами другого відношення.
Дані операції аналогічні таким самим операціям над безліччю, отже, гадаю, немає необхідності докладно їх розписувати.
Джерела інформації
  • Основи використання та проектування баз даних - В. М. Ілюшечкін
  • курс лекцій Introduction to Databases - Jennifer Widom, Stanford University

Буду вдячний за аргументовані зауваження

Починати вивчати SQL найкраще з азів реляційних баз даних. Я дам пояснення, що таке реляційна база даних, що таке відношення і які операції над ними можна робити.

Поїхали …

Що таке SQL?

SQL (Structured Query Language)– структурована мова запитів, універсальна комп'ютерна мова, що використовується для створення, модифікації та керування даними в реляційних базах даних

Що таке реляційна база даних?

Це сукупність взаємопов'язаних даних, що зберігаються у вигляді відносин.

Що таке стосунки?

Ставлення це кілька картежів

Що таке кортеж?

Картеж це певний набір елементів, причому кожен елемент набору належить деякій множині (можна сказати типу елемента). Якщо говорити простіше, то це кортеж список елементів, між якими є зв'язокабо як кажуть, є відношення. Уявити кортеж можна за допомогою графа або таблиці, що складається з одного рядка.

Продемонструю кортеж із двох елементів за допомогою графа:

Вершини графа це елементи їх деякої множини, в даному випадку, це елемент а1з множини Ата елемент b1з множини B. Ребро між вершинами позначає зв'язокміж елементами або як кажуть елемент а1 ставиться до b1.

Продемонструю цей кортеж за допомогою таблиці:

Номер 1 у а1і b1, був обраний довільно.

Отже, ми дісталися елементарної цеглинки, тобто. до кортежу, почнемо розмотувати нашу логіку назад, щоб зрозуміти, що таке реляційна база данихі SQL.

Як я сказав, ставлення це безліч кортежів, причому обмежена (якщо відійти від теорії). Уявити відносини можна як матриці, графа, таблиці.

Продемонструю, як уявити ставлення у вигляді графа:

На графіку видно, що є кілька кортежів, причому який кортеж перший, а який другий та третій неважливоЦе просто безліч кортежів. У багатьох немає такого поняття «перший», «другий» і «третій», це все відразу і черговість не важлива.

Продемонструю, як подати ставлення у вигляді таблиці:

Послідовність рядківабо кортежівв таблиці не важлива, З графа я їх взяв у довільному порядку.

Також важливо зауважити, що послідовність стовпцівтеж не важливаякщо ми поміняємо їх місцями, то з точки зору теорії множин, ставлення залишиться не низьким. В цьому якраз і полягає негативна сторона таблиці, як способу візуалізації відносини, адже нам психологічно важко буде назвати таблиці рівними, якщо у них у різній послідовності йдуть стовпи та рядки.

Як було сказано на самому початку, що реляційна база даних це сукупність взаємопов'язаних даних, що зберігаються у вигляді відносин. Якщо уявляти відносини у вигляді таблиць, то реляційна БД це якийсь набір взаємопов'язаних таблиць. Виходить SQL це мова створення, модифікації та управління таблицями в реляційній БД.

Отже, з логічним ланцюжком ми розібралися: SQL, реляційна БД, відносини, кортеж.. Тепер ми торкнемося мову SQL, тобто. тему маніпулювання з відносинами, важливо розібратися які операції ми можемо проводити над відносинами.

Всі операції продемонструвати неможливо, у зв'язку з їх великою кількістю, наведу лише базові:

1. Селекція (інші імена операції - вибірка, обмеження)

Операція «селекція»або «вибірка»виконується над одним ставленням, сенс його полягає в тому, що за заданою умовою здійснюється вибірка підмножини кортежів. Результат операції – відношення, що відрізняються від вихідного меншим числом кортежів. Приклад:

Нехай є відношення, назвемо його «вихідна таблиця №1»:

Результат «вибірки»з вихідної таблиці №1, за умови що А = а3

Мовою SQL:

синтаксис SELECT * FROM имя_таблицы WHERE имя_столбца=значение

SELECT * FROM вихідна_таблиця WHERE А=a3

2. Проекція

Операція "проекція"виконується над одним ставленням, в результаті її формується нове відношення із зазначеними стовпцями таблиці.

Наприклад, є відношення, назвемо її «вихідна таблиця №2»:

Зробимо над цим ставленням операцію "проекція"за атрибутами Аі З, результат:

В результаті ми отримали два однакові картежі, щодо такого бути не може, тому скоротимо їх (у СУБД скорочення відбуваються автоматично):

Виходить, при проекції у нас може скорочуватися кількість кортежів, це буває, за помилку це рахувати не треба.

Мовою SQL:

синтаксис SELECT список_стовпців FROM имя_таблицы

реалізація для цього випадку - SELECT А,С FROM вихідна_таблиця_№2

3. Природне поєднання

Операція « природне з'єднання» виконується над двома логічними пов'язаними відносинами, в результаті неї формується нове відношення зі стовпцями першого та другого відношення та з кортежами, які виходять в результаті з'єднання кожного кортежу першого та другого відношення . На прикладі має бути зрозуміліше, нехай є два відносини, назвемо їх вихідна таблиця №3.1 і вихідна таблиця №3.2:

Початкова таблиця №3_1

Початкова таблиця №3_2

Проведемо операцію «з'єднання»першого та другого відношення, результат:

Цікаво помітити, що ми отримали вихідне ставлення до розділу «2. Проекція», послідовність стовпців щодо значення не має.

Мовою SQL:

реалізація для цього випадку - SELECT вихідна_таблиця_№3_1.*, вихідна таблиця №3_2.В FROM вихідна_таблиця_№3_1, вихідна таблиця №3_2 WHERE вихідна таблиця №3_1.A= вихідна таблиця №3_2.

4. Об'єднання

Операція «об'єднання»виконується над двома відносинами мають однаковий набір стовпців і тип даних у цих стовпцях, результат операції нове ставлення, яке включає всі кортежі «першого» і «другого» відносини(повторювані скорочуються).

Початкова таблиця №4_1

Початкова таблиця №4_2

Зробимо операцію «об'єднання»відносини №4.1 та відносини №4.2 , результат:

Мовою SQL:

синтаксис SELECT список_стовпців_таблиці1 FROM таблиця1 UNION SELECT список_стовпців_таблиці2 FROM таблиця2

реалізація для цього випадку - SELECT А, FROM вихідна_таблиця_№4_1 UNION SELECT А,В FROM вихідна_таблиця_№4_2

5. Перетин

Операція «перетин»виконується результат операції нове ставлення, яке включає однакові кортежі «першого» і «другого» відносини.

Наприклад, нехай є два відносини:

Початкова таблиця №5_1

Початкова таблиця №5_2

Зробимо операцію «перетинання»з даними відносинами, результат:

Тобто. у результуюче ставлення, потрапили повторювані кортежіз «першого»і «другого»відносини.

Мовою SQL:

синтаксис - SELECT одна_з_таблиць.стовпець1, одна_з_таблиць.стовпець2, … FROM таблиця1,таблиця2 WHERE таблиця1.стовпець1=таблиця2.стовпець1 AND таблиця1.стовпець2= таблиця2.стовпець2 AND …

реалізація для цього випадку –

SELECT вихідна_таблиця_№5_1.А, вихідна_таблиця_№5_1.В FROM вихідна_таблиця_№5_1, вихідна_таблиця_№5_2 WHERE вихідна_таблиця_№5_1.А = вихідна_таблиця_№5_2.А AND вихідна_таблиця_№_1.

6. Віднімання (різниця)

Операція «віднімання»виконується над двома відносинами мають однаковий набір стовпців і тип даних у цих стовпцях, результат операції нове відношення, яке включає в себе кортежі «першого» відношення відмінні від кортежів «другого» відношення, на прикладі думаю повинно бути зрозуміліше.

Наприклад, нехай є два відносини:

Вихідна таблиця №6_1

Вихідна таблиця №6_2

Зробимо операцію «різниця», тобто. від вихідної таблиці №6_1 віднімемо вихідну таблицю №6_2, результат:

Тобто. результуюче ставлення, це «перше» відношення без кортежів «другого» відношення, що повторюються.

Мовою SQL:

реалізація для даного випадку - SELECT вихідна_таблиця_№6_1.А, вихідна_таблиця_№6_1.В FROM вихідна_таблиця_№6_1 WHERE NOT EXISTS
WHERE вихідна_таблиця_№6_2.А= вихідна_таблиця_№6_1.А AND вихідна_таблиця_№6_2.В= вихідна_таблиця_№6_1.В)

7. Декартове твір

Декартове твір виконується над двома довільними відносинами, результат операції нове відношення до кількості стовпців дорівнює сумі кількості стовпців «першого» і «другого» відношення, а кількість рядків дорівнює добутку кількості рядків «першого» і «другого» відношення . Кортежі результуючого ставлення, якщо говорити по-простому, виходять шляхом комбінації кожного кортежу «першого» зв'язку з кортежами «другого» зв'язку.

Наприклад, нехай є два довільні відносини:

Початкова таблиця №7_1

Початкова таблиця №7_2

Виробимо «декартовий твір»даних двох відносин, результат:

Мовою SQL:

реалізація для цього випадку - SELECT вихідна_таблиця_№7_1.А, вихідна_таблиця_№7_1.В, вихідна_таблиця_№7_2.А, вихідна_таблиця_№7_2.В FROM вихідна_таблиця_№7_1, вихідна_таблиця_№7_2

Ми розібралися з основними операціями над відносинами і наприкінці теоретичної частини посту розберемося що таке ключ.

Що таке ключ?

Ключ – це один чи кілька стовпців таблиці, які однозначно визначають запис (рядок). Наприклад, нехай є відношення представлене у вигляді таблиці:

Ключемданого відношення може бути стовпець А. Т.к. значення тільки даного стовпця стосовно, наприклад: а3визначає запис "а3 b1 d3", a2визначать запис "a2 b2 d3", a1визначає запис "a1 b2 d1". Інші стовпці цю функцію не можуть нести.

Якщо ключ складається з одного стовпця, то його називають простим, якщо з кількохйого називають складовим. У цій таблиці, крім простого ключа, є ще один – складовий, що складається зі стовпців B і D. Значення цих стовпців однозначно визначать запис (рядки), приклад: b1 та d3однозначно визначає запис "a3 b1 d3", b2 та d3однозначний визначає запис "a2 b2 d3", b2 та d1однозначно визначає запис "a1 b2 d1".

На практиці зазвичай обирають один ключ, причому найпростіший, в даному випадку це стовпець А. Такий ключ також називають « первинний ключ».

Вам буде цікаво: