Іспит 📚 Бази Даних
1. Основні поняття та архітектура. Основні вимоги до систем керування базами даних.
--Бази даних зазвичай допускають наступні чотири типи взаємодії: ● Визначення: створення, модифікація, та видалення визначень; ● Оновлення: вставка, зміна та видалення даних; ● Отримання: надання доступу до збережених даних; ● Адміністрування: керування користувачами, безпекою, моніторинг продуктивності тощо. --Керування формою та структурою даних у системі У базах даних, які працюють з регулярними даними, такі як реляційні БД, ці визначення часто називають схемою бази даних. Схема бази даних - це чіткий план того, як дані повинні бути відформатовані, щоб їх прийняла конкретна БД. Охоплює конкретні поля, які повинні бути присутніми в окремих записах, а також вимоги до таких значень, як тип даних, довжина поля, мінімальні чи максимальні значення --Оновлення даних для передачі, зміни та видалення даних із системи Повернення даних не впливає на жодну інформацію, що в даний час зберігається в базі даних, ці дії називаються операціями зчитування (read) - це основний спосіб збору даних, які вже зберігаються в
7. Ієрархічна модель даних.
Ієрархічна модель даних. --Ієрархічна модель дозволяє будувати бази даних з деревовидною структурою, де кожен вузол містить свій тип даних (сутність (entity) - це дещо, про що зберігає інформацію) На верхньому рівні дерева в цій моделі є один вузол - корінь, на наступному рівні розташовуються вузли, пов'язані з цим коренем, потім вузли, пов'язані з вузлами попереднього рівня і т.д. При цьому кожен вузол може мати тільки одного предка. Графічно: Предок - вузол на кінці стрілки, а Нащадок - вузол на вістрі стрілки (рис. 2.1). Пошук даних в ієрархічній системі завжди починається з кореня. Потім проводиться спуск з одного рівня дерева на інший, поки не буде досягнутий шуканий рівень. Переміщення між пунктами від одного запису до іншого здійснюються за допомогою посилань. У базах даних визначено, що вузли - це типи записів, а стрілки представляють відносини один-до-одного або один-до-багатьох. Основна перевага ієрархічної моделі: - простота опису ієрархічних структур (обсяг займаного ОЗУ невеликий). Недолік: - щоразу п
35.Агрегатні (статичні) функції SQL. COUNT, SUM, AVG, MIN, MAX.
Агрегатні (статичні) функції SQL -Агрегатні функції призначені для обчислення підсумкових значень на основі всіх записів набору даних або на основі певної групи рядків. Запити можуть виконувати узагальнене групове значення полів так як і значення одного поля. Це робиться за допомогою агрегатних функцій. Агрегатні функції виконують одиночне значення для всієї групи таблиці. Є список цих функцій: COUNT (вираз) - ця функція обчислює кількість входжень відповідного виразу у всі рядки чи у групу рядків результуючого набору даних SUM (вираз) - ця функція обчислює суму значень виразу по всіх рядках чи по групі рядків результуючої таблиці AVG (вираз) - ця функція обчислює середнє арифметичне виразу MAX (вираз) - ця функція обчислює максимальне значення виразу MIN (вираз) - ця функція обчислює мінімальне значення виразу -Слід розрізняти два випадки застосування агрегатних функцій. • Перший: агрегатні функції використовуються самі по собі і повертають одне результуюче значення. • Другий: агрегатні функції використо
29.Операції над множинами. Вибірка. Проекція.
Вибірка S предикат (R) Операція вибірки застосовується до одного відношення R і визначає результуюче відношення, яке містить тільки ті кортежі (рядки) з відношення R, які задовольняють заданій умові (предикату). R і S - це два відношення, визначені на атрибутах А = (а1, а2,.. Аn) і В = (b1, b 2,..., B м) відповідно. 8 Вибірка - це скорочена назва -вибірки, де позначає будь-який скалярний оператор порівняння (=, , >, , ≤, <). -вибіркою з відношення А по атрибутам X Y (у цьому порядку). A WHERE X Y називається відношення, що має той самий заголовок, що і відношення А і тіло, що містить множину всіх кортежів відношення А, для яких перевірка умови X Y дає значення true. Атрибути X і Y повинні бути визначені на одному і тому ж домені, а оператор повинен мати сенс для цього домену. --Проекція P аi, аj, ..., az (R) застосовується до одного відношення, (R) і визначає нове відношення містить вертикальну підмножину відношень R, створювану за допомогою вилучення значень зазначених атрибутів. Проекцією відношення А по атрибутам X, Y, ..., Z, де кожен з атрибутів належи
57.Тригери. Визначення. Використання.
Визначення тригерів -Тригер - це механізм, який викликається, коли в зазначеній таблиці відбувається певна дія. Кожен тригер має такі основні складові: • ім'я, • дія, • виконання. Ім'я тригера може містити максимум 128 символів. Дією тригера може бути або інструкція DML, або інструкція DDL. Виконавча складова тригера зазвичай складається з збереженої процедури або пакета. Тригери виконуються після застосування правил та інших перевірок цілісності посилань, тому якщо операція не проходить ці попередні перевірки, тригери не виконуються. SQL підтримує два основних типи тригерів: • DML-тригери • DDL-тригери. Тригери - це збережені процедури особливого типу, що автоматично вступають в силу, якщо відбувається подія, що зачіпає таблицю або відношення, визначене в тригері. --Використання тригерів DML-тригери виконуються при виникненні подій мови маніпулювання даними (INSERT, UPDATE, DELETE) в базі даних. Тригери DML можуть використовуватися для написання бізнес-правил та правил цілісності даних, виконання запитів до інших та
6. Дані та їхня семантика. Моделювання даних.
Дані та їхня семантика. Моделювання даних. --Одними з основних у концепції БД є узагальнені категорії «дані та модель даних». Слово «дані» походить від латинського «datum» - факт, проте дані не завжди відповідають конкретним чи навіть реальним фактам. Іноді вони не точні або описують те, чого насправді не існує. Даними ми вважатимемо опис будьякого явища, що викликає зацікавленість через певні потреби. З даними нерозривно пов'язана їхня інтерпретація (або семантика), тобто той зміст, який їм приписується. Інтерпретація даних може бути статичною та незмінною, а може різнитися. Наприклад, розробника ПЗ можна розглядати, як працівника фірми, з точки зору замовника - як виконавця замовлення, а з точки зору медичного страхування - як споживача. Так, системні адміністратори, розробники, тестери, менеджери незалежно від роду своєї діяльності можуть розглядатися в кадровій системі, як працівники фірми (в нашому випадку, як ФОПи). Дані - це набір конкретних значень та параметрів, що характеризують об'єкт. Існує ба
20.Теорія нормалізації даних. Визначення другої нормальної форми.
Друга нормальна форма (2НФ, 2NF) — нормальна форма, що використовується для нормалізації баз даних. 2НФ первісно була визначена 1971 року Едгаром Коддом.[1] Щоб перебувати в другій нормальній формі, таблиця, що перебуває в першій нормальній формі, має відповідати додатковим критеріям. А саме: 1НФ таблиця перебуватиме в 2НФ тоді й лише тоді, коли для будь-якого потенційного ключа K і будь-якого атрибута A, який не є частиною потенційного ключа, A залежить саме від цілого потенційного ключа, а не від його частини. Тобто, 1НФ таблиця перебуває в 2НФ тоді й тільки тоді, коли всі її неключові атрибути функціонально залежні від потенційного ключа в цілому. У разі, якщо 1НФ таблиця не має складних потенційних ключів (таких, що складаються більш ніж з одного атрибута), тоді вона автоматично перебуватиме в 2НФ.
22.Проектування схем баз даних. Діаграми види діаграм.
Діаграми. Види діаграм -Виділяють три рівня логічної моделі. Цим рівням відповідають наступні діаграми: • презентаційна діаграма; • ключова діаграма; • повна атрибутивна діаграма. -1. Презентаційна діаграма. Такі діаграми описують тільки найосновніші класи сутностей і їх зв'язки. Ключі в таких діаграмах можуть не описуватися зовсім, і відповідно, зв'язки - ніяк не індивідуалізуватися. Тому допустимими є зв'язки типу «багато до багатьох», хоча зазвичай їх намагаються уникати або, якщо вони все-таки присутні, - деталізувати. -2. Ключова діаграма На відміну від презентаційних діаграм ключові діаграми описують обов'язково всі класи сутностей і їх зв'язки, правда, в термінах тільки первинних ключів. Тут зв'язки «багато до багатьох» вже неодмінно деталізуються (тобто зв'язку такого типу, у чистому вигляді тут просто не може бути задано). Багатозначні атрибути все ще допускаються так само, як і в презентаційній діаграмі, але якщо вони присутні в ключовій діаграмі, то, як правило, вони перетворюються в самост
30.Операції над множинами. Ділення. З'єднання.
З'єднання Операція з'єднання має кілька різновидів. Однак найбільш важливим, без сумніву, є природне з'єднання, причому настільки, що для позначення виключно природного з'єднання майже постійно використовується загальний термін "з'єднання". Нехай відношення А і В мають заголовки {Xl, X2, ..., Xm, Y1, Y2, ..., Yn} і {Yl, Y2, ..., Yn, Zl, Z2, ..., Zp} відповідно, тобто атрибути Yl, Y2, ..., Yn і тільки вони - спільне для двох відношень Х1, Х2, ... ,Хm - інші атрибути відношення А; Zl, Z2, ..., Zp - інші атрибути відношення В. Припустимо також, що відповідні атрибути (тобто атрибути з однаковими іменами) визначені на одному і тому ж домені. Розглядати вираз {X1, Х2, ..., Хm}, {Y1, Y2, ..., Yn} та {Zl, Z2, ..., Zp}, як три складових атрибуту X, Y та Z, відповідно. Тоді природним з'єднанням відношення А і В (A JOIN B) називається відношення з заголовком {X, Y, Z} і тілом, що містить множину всіх кортежів {Х: х, Y: y, Z: z}, таких, для яких у відношенні А значення атрибута X дорівнює х, а атрибуту Y рівне у, і у відношенні В значення атрибута Y рівне у, а атрибуту Z дорівнює z. Приклад операції природного з
40.З'єднання таблиць. SQL Join
З'єднання таблиць. SQL Join Приєднання таблиць в запитах - це базовий інструмент при роботі з базами даних. Давайте розглянемо, які приєднання (JOIN) існують, і як від них залежать результати запитів. Наприклад, дано наступні дві таблиці: це таблиця з іменами співробітників і словник з переліком посад. -Команда INNER JOIN використовуються для зв'язування таблиць за певними полями зв'язку. Тобто це внутрішнє приєднання, яке рівносильно просто JOIN або CROSS JOIN. Синтаксис: SELECT поле FROM ім'я_таблиці INNER JOIN ім'я_зв'язаної_таблиці ON умова_зв'язку WHERE умова_вибірки -Наприклад, вивести дані з таблиць тільки якщо умова зв'язування дотримується - тобто для співробітника зазначений існуючий в словнику ідентифікатор посади: -SELECT p.id, p.name `Ім'я співробітника`, ps.id `pos.id`, ps.name `Посада` FROM `persons` p INNER JOIN `positions` ps ON ps.id = p.post_id -Умовно представимо собі ці таблиці, як дві множини, що перетинаються, де перетин - це наявність зв'язку між таблицями. -Зовнішнє приєднання. Розрізняють LEFT OUTER JOIN і RIGHT OUTER JOIN, і зазвичай опускають слово «OUTER». Зовнішнє приєдна
25.Реляційна алгебра. Замкнутість в реляційній алгебрі.
Замкнутість в реляційній алгебрі. -Результатом кожної операції над відношеннями (чи реляційної операції) також є відношенням. Ця реляційна властивість називається властивістю замкнутості. Оскільки результат будь-якої операції має той же тип, що і вихідні об'єкти (відношення), то результат однієї операції може використовуватися в якості вихідних даних для іншої. -Якщо розглядати замкнутість більш строго, кожна реляційна операція повинна бути визначена таким чином, щоб видавати результат з належним заголовком (тобто з відповідним набором необхідних імен атрибутів). Причина такої вимоги до результуючих відношень полягає у необхідності мати можливість звертатися до імен атрибутів в подальших операціях.
23.Проектування схем баз даних. Зв'язки та міграції ключів
Зв'язки та міграції ключів -Процес встановлення зв'язків пов'язаний з переносом простого або складеного первинного ключа одного класу сутностей в інший клас. Сам процес такого перенесення ще називають міграцією ключів. При цьому клас сутностей, первинні ключі якого переносяться, називається батьківським класом, а клас сутностей, в чиї зовнішні ключі і відбувається міграція, називається дочірнім класом сутностей. -У дочірньому класі сутностей атрибути ключа отримують статус атрибутів зовнішнього ключа і при цьому можуть брати участь або навпаки, не брати участь у формуванні його власного первинного ключа. Таким чином, при міграції первинного ключа з батьківського класу сутностей в дочірній в дочірньому класі виникає зовнішній ключ, що посилається на первинний ключ батьківського класу. -Для зручності формулярного уявлення міграції ключів, введемо такі маркери ключів: • PK - так ми будемо позначати будь-який атрибут первинного ключа (primary key); • FK - цим маркером ми будемо позначати атрибути зовніш
11.Модель «Сутність-зв'язок». Зв'язки.
Зв'язки. --Прикладний зв'язок, або просто зв'язок - це поіменована асоціація двох або більше сутностей. Зв'язок двох або більше сутностей називається бінарним. З кожного боку бінарний зв'язок має такі характеристики: - Ім'я; - Множинність, або потужність; - Обов'язковість - зв'язок може бути обов'язковим або факультативним. --Розрізняють дві множинності зв'язку - «один» і «багато». Якщо зв'язок між сутностями А і В з боку сутності А має множинність «один», то це означає, що кожний екземпляр B асоціюється даним зв' язком не більше ніж з одним екземпляром А. І навпаки, якщо екземпляр В може асоціюватися певним зв'язком із довільною кількістю екземплярів A, то зв'язок з боку сутності А має множинність «багато». --На діаграмах бінарні зв'язки зображуються лініями, що сполучають два прямокутники сутностей або рекурсивно один і той же прямокутник з самим собою.
13.Модель «Сутність-зв'язок». Ключі.
Ключі відношення. Відношення з математичної точки зору є множиною і не може містити співпадаючих елементів, тобто в будь-який момент часу ніякі два кортежі відношення не можуть бути дублікатами один одного. Таким чином, у відношенні повинен бути присутнім певний атрибут (або набір атрибутів), який однозначно визначає кожен кортеж відношення і забезпечує унікальність рядків таблиці. Такий атрибут (або набір атрибутів) називають первинним ключем відношення. Властивості первинного ключа: - унікальність: у будь-який момент часу ніякі два кортежі відношення не повинні мати одного і того ж значення; - мінімальність: жоден з атрибутів не може бути виключений з набору атрибутів первинного ключа, без порушення властивостей унікальності. В залежності від кількості атрибутів, що входять у ключ, розрізняють прості і складні (складені) ключі. Простий ключ - ключ, що містить тільки один атрибут. Як правило, в якості нього використовують найкоротший і найпростіший з можливих типів 7 даних (цілочисловий тип), при
36.Групування записів. Команда GROUP BY
Команда GROUP BY дозволяє групувати результати при вибірці з бази даних. Інколи потрібно отримати агрегатні значення не для всього результуючого набору даних, а оремо для кожної із груп, які входять у цей результуючий набір. Кожна група рядків характеризується однаковим значенням деякого стовпчика. -Правила виконання SQL-запиту на вибірку із врахуванням секції GROUP BY: 1) Сформувати декартовий добуток таблиць, вказаних в секції FROM. Якщо в секції FROM вказана одна таблиця, то декартовим добутком буде вона сама. -2) Якщо є секція WHERE, то умову вказану в цій секції слід застосувати до кожного рядка таблиці, утвореної в результаті декартового добутку, і залишити лише ті рядки, для яких результат умови має значення TRUE. Рядки, для яких умова має значення NULL або FALSE відкидаються. 3) Якщо є секція GROUP BY, то потрібно розділити рядки, які залишились в результуючій таблиці на групи так, щоб рядки в кожній групі мали однакові значення у всіх стовпчиках групування одночасно. -Стовпчик групування - це той стовпчик, який визначає
37.Команда HAVING - умова відбору груп.
Команда HAVING - умова відбору груп Якщо в результуючому наборі даних потрібно виводити підсумкові значення не для всіх груп, а лише для тих, які задовольняють певній умові, то після секції GROUP BY перед секцією ORDER BY вказується секція HAVING. Синтаксис: GROUP BY поле HAVING умова Загальний вигляд оператора SELECT описується так: Умова відбору груп секції HAVING має вигляд: Подібно до того, як секція WHERE використовується для відбору окремих рядків, так і секція HAVING використовується для відбору груп. Формат секції HAVING такий як і в секції WHERE, за одним дуже важливим винятком: в секції WHERE не можна вказувати агрегатних функцій. 11 Порядок виконання секцій в операторі SELECT такий: 1) FROM. 2) WHERE. 3) GROUP BY. 4) HAVING. 5) SELECT. 6) ORDER BY. Наприклад дано наступну таблицю workers. id name age salary 1 Дмитро 23 100 2 Петро 23 200 3 Василь 23 300 4 Микола 24 1000 5 Іван 24 2000 6 Кирило 25 1000 Приклад 1. В даному прикладі демонструється робота GROUP BY без умови HAVING: SELECT age, SUM(salary) as sum FROM workers GROUP BY age SQL-запит вибере наступні рядки: age sum 23 600 24 3000 25 1000 А тепер за допомогою умови HAVING залишимо тільки ті ря
34.Команди вибірки. IS NULL, DISTINCT. Булеві операції: AND, OR, NOT.
Команда IS NULL Команда IS NULL перевіряє поле на NULL. Синтаксис команди IS NULL: WHERE поле IS NULL --Команда IS NOT NULL Команда IS NOT NULL перевіряє поле на НЕ NULL. Синтаксис команди IS NULL: WHERE поле IS NOT NULL Приклад 1. Обрати всі записи у яких зарплата НЕ рівна NULL: SELECT * FROM workers WHERE salary IS NOT NULL -Команда DICTINCT Команда DISTINCT дозволяє вибирати тільки унікальні значення з бази даних (тобто відсіювати дублювання: наприклад, в таблиці є дві Маші - тоді запит виведе тільки першу). Замість DISTINCT можна використовувати DISTINCTROW - в mySQL це одне і те ж. Синтаксис команди DICTINCT: При вибірці: SELECT DISTINCT поле FROM ім'я_таблиці WHERE умова 13 При підрахунку: SELECT COUNT(DISTINCT поле) FROM ім'я_таблиці WHERE умова При сумуванні: SELECT SUM(DISTINCT поле) FROM ім'я_таблиці WHERE умова Приклад 1. Обрати всі унікальні значення зарплат: SELECT DISTINCT salary FROM workers -Команда NOT Команда NOT задає заперечення для інших команд: замість IN можна написати NOT IN, замість BETWEEN - NOT BETWEEN і так далі. Як це працює на практиці: Наприклад, візьмемо, команду IN і з її допомогою виберемо записи, у яких id має значення 1, 3, 7, 14, 28. Це буде вигляда
33.Команди вибірки. WHERE, IN, BETWEEN, LIKE.
Команда WHERE. Команда WHERE задає умову, за якою обиратимуться рядки з бази даних. Дана команда може використовуватися для вибірки рядків за допомогою SELECT, видалення рядків з допомогою DELETE, редагування рядків за допомогою UPDATE. Синтаксис команди WHERE: WHERE умова ------- Команда IN Команда IN вибирає записи з бази даних по певним значенням поля. Наприклад, можна вибрати записи, у яких id має значення 1, 3, 7, 14, 28. Це буде виглядати так: WHERE id IN (1, 3, 7, 14, 28) Або ж всі записи, у яких поле name має значення 'Дмитро', 'Василь' або 'Миколя'. Це буде виглядати так: WHERE id IN (' Дмитро ', ' Василь ', ' Миколя ') 9 В принципі, для таких речей можна користуватися і командою OR, тоді перший приклад буде виглядати так: WHERE id=1 OR id=3 OR id=7 OR id=14 OR id=28. Варіант з IN виглядає простіше та читабельно. Синтаксис команди IN: SELECT * FROM ім'я_таблиці WHERE поле IN (значення1, значення2...) --Команда BETWEEN Команда BETWEEN задає діапазон значень, за яким вибираються записи з бази даних. Наприклад, можна вибрати записи для поля id від 3 до 10-ти. Синтаксис команди BETWEEN: SELECT * FROM ім'я_таблиці WHERE поле B
44.Команди модифікації мови DML. INSERT.
Команди модифікації мови DML -Дані в реляційних базах даних керуються за допомогою DML команд (Data Manipulation Language). На даний момент найбільш популярною мовою DML є SQL. Функції мови DML визначаються першим словом в реченні (яке часто називають запитом), яке майже завжди є дієсловом. У випадку з SQL цими дієсловами є - «select» («вибрати»), «insert» («вставити»), «update» («оновити»), і «delete» («видалити»). Строго кажучи існує п'ять DML команд: • SELECT • INSERT • UPDATE • DELETE • MERGE На практиці професіонали в області баз даних, SELECT зазвичай не розглядають як частину DML. Зазвичай SELECT розглядається окремо. Команда MERGE теж часто не розглядається. MERGE можна розглядати, як ярлик для виклику команд INSERT та DELETE або UPDATE в залежності від поставлених умов --Оператор SQL INSERT Оператор SQL INSERT призначений для вставки значень стовпців в таблицю баз даних. Синтаксис: INSERT INTO ім'я_таблиці [(імена стовпців)] VALUES (значення_що_вставляються) Квадратні дужки [], в які вкладено елемент запиту (імена стовпців), означають, що цей елемент є необов'язковим. Вставка значень в табл
46.Команди опису мови DDL. CREATE
Команди опису мови DDL. CREATE, ALTER, DROP Data Definition Language - мова визначення даних. DDL, як і DML, є підмножиною мови SQL. Команди DDL використовуються для створення нових баз даних, таблиць і стовпців. Мова DDL служить для створення і модифікації структури БД, тобто для створення / зміни / видалення таблиць та зв'язків. У цю групу входять наступні оператори: - CREATE - ALTER - DROP Команди CREATE (створення), ALTER (модифікація) і DROP (видалення) мають більшість типів об'єктів баз даних (таблиць, уявлень, процедур, тригерів, табличних областей, користувачів і ін.). 13 Дехто вважає, що застосування DDL є прерогативою адміністраторів бази даних, а команди DML повинні писати розробники, але ці дві мови не так просто розділити. Складно організувати афективний доступ до даних і їх обробку, не розуміючи, які структури доступні і як вони пов'язані. Також складно проектувати відповідні структури, не знаючи, як вони будуть оброблятися. Створення бази даних SQL і таблиць бази даних Перша команда, яку ми будемо застосовувати для створення бази даних - це команд
19.Теорія нормалізації даних. Нормальна форма Бойса-Кодда.
Нормальна форма Бойса - Кодда (НФБК) Виникнення перекриваються потенційних ключів, коли частина одного ключа входить до складу іншого ключа, є досить частим випадком, і використання правил приведення відносин до тієї чи іншої нормальній формі сильно проблематично. Зокрема, для таких випадків була сформульована нормальна форма Бойса - Кодда (НФБК). Відношення знаходиться в нормальній формі Байса - Кодда тоді і тільки тоді, коли кожна його нетривіальна і не приводиться зліва функціональна залежність має в якості свого детермінанта деякий потенційних ключ [1] . Припустимо, що розглядається відношення містить три атрибути - "Замовлення", "Товар" і "Постачальник" (рис. 2.79), при цьому володіє деякими обмеженнями: • в кожному замовленні вказується певний товар від одного постачальника; • кожен постачальник поставляє тільки один товар; • певний товар можуть поставляти кілька постачальників. В даному прикладі є перекриваються потенційні ключі: { "Замовлення", "Товар"} і { "Замовлення", "Постачальник"}. Наявне ві
60.Програмування тригерів. Оператор DROP TRIGGER. Застосування тригерів для створення логу таблиці.
Оператор DROP TRIGGER. -Оператор DROP TRIGGER дозволяє видаляти існуючі тригери і має наступний синтаксис: DROP TRIGGER TBL_NAME.trigger_name Оператор видаляє тригер з ім'ям trigger_name таблиці TBL_NAME. У прикладі демонструється видалення тригера restrict_user таблиці users, створеного в прикладах вище: DROP TRIGGER USERS.restrict_user; --Застосування тригерів для створення логу таблиці Одним з визначення логу, може бути наступне: логи - це текстові файли, в яких зберігається інформація про відвідування, параметри відвідувань вашого сайту і помилки, які виникали на ньому. Також ведуть логи змін даних користувачами в базі даних. До прикладу, створимо таблицю, за якою ми будемо стежити: CREATE TABLE `test` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `content` TEXT NOT NULL) ENGINE = MYISAM Лог: CREATE TABLE `log` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `msg` VARCHAR(255) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `row_id` INT(11) NOT NULL) ENGINE = MYISAM Тригер: CREATE TRIGGER `update_test` AFTER INSERT ON `test` FOR EACH ROW BEGIN INSERT INTO log Set msg = 'insert', row_id = NEW.id; END;// Тепер додайте запис в таблицю test. У таблиці log теж з'явиться запис, зверніть увагу на поле row_id, в ньому зберігається
10.Модель «Сутність-зв'язок». Сутності.
Одна з найбільш важливих і розповсюджених семантичних моделей є модель "сутність-зв'язок", ER-модель (Entity Relationship). Основними поняттями ER-моделі є сутність, зв'язок і атрибут. Як і в реляційних схемах, в ER-моделях вводиться поняття нормальних форм, їх зміст дуже близький до змісту реляційних нормальних форм. Цей підхід дозволяє на початковій стадії правильно спроектувати логічну структуру БД. --------------------- Сутності. --Сутність - це реальний або уявний об'єкт, інформація про який має бути зібрана або збережена. Графічно сутність зображується поіменованим прямокутником із заокругленими кутами. Ім'я сутності подається в однині і пишеться великими літерами --Властивості сутностей: - будь-який предмет або об'єкт може бути відображений лише однією сутністю, тобто сутності завжди є взаємовиключаючими; - кожна сутність має бути унікально ідентифікована, тобто має існувати спосіб залежної ідентифікації кожного екземпляра сутності, що дає змогу відрізняти його від інших її екземплярів.
26.Реляційна алгебра. Операції над множинами
Операції над множинами -Об'єднання Об'єднання двох відношень R та S визначає нове відношення, яке включає всі кортежі, що містяться тільки в R і тільки в S, одночасно в R і S причому всі дублікати кортежів виключені. При цьому відношення R і S мають бути сумісними з об'єднанням. -Будемо говорити, що два відношення сумісні за типом, якщо у них ідентичні заголовки, точніше: 1. Якщо кожна з них має оду і ту ж множину імен атрибутів (отже, зауважте, вони повинні мати один і той же степінь); 2. Якщо відповідні атрибути (тобто атрибути з тими ж самими іменами в двох відношеннях) визначені на одному і тому ж домені. -Об'єднанням двох сумісних по типу відносин А і В (A UNION B) називається відношення з тим же заголовком, як і в відношеннях А і В, з тілом, що складається з безлічі всіх кортежів, що належать А або В або обом відносинам. -R Ώ S. Операція перетину визначає відношення, яке містить кортежі, присутні як у відношенні R, так і у відношенні S. Відношення R і S мають бути сумісними з об'єднанням. Перетином двох сумісних по типу відно
5. Основні поняття і архітектура. Основи роботи з базами даних.
Основи роботи з базами даних. --Перевід даних між додатком та базою даних. Вам потрібно буде створювати або використовувати існуючий інтерфейс для зв'язку з базою даних. Ви можете безпосередньо підключатися до бази даних, використовуючи звичайні мережеві функції, прості бібліотеки або бібліотеки програмування більш високого рівня. --Перевід даних між додатком та базою даних Наприклад, конструктори запитів (query builders) або ORM (Object-relational mapping - технологія програмування, яка зв'язує БД з концепціями об'єктно-орієнтованих мов програмування, створюючи «віртуальну об'єктну базу даних»). ORM - це шари зіставлення, які переводять таблиці, знайдені в реляційній базі даних у класи використовуючи програми об'єктноорієнтованих мов, і навпаки. --Синхронізація структурних змін із базою даних Поширеним підходом до синхронізації структур даних вашої програми з вашою БД - це процес, який називається міграцією бази даних або міграцією схеми (обидва більш відомі як міграція). Міграція передбачає оновлення структури вашо
12.Модель «Сутність-зв'язок». Атрибути: прості и складні, однозначний та багатозначний, домен атрибута.
Основними поняттями реляційних баз даних є тип даних, домен, атрибут, кортеж, первинний ключ і відношення. Бази даних, між окремими таблицями якої існують зв'язки, називаються реляційними (від relation - відношення). Таким чином, реляційна модель даних представляє інформацію у вигляді сукупності взаємопов'язаних таблиць, які прийнято називати відношеннями або реляціями. Пов'язані відношення взаємодіють за принципом головна (master) - підлегла (detail). Головну таблицю часто називають батьківською, а підлеглу - дочірньою. Одна і та ж таблиця може бути головною у відношенні до однієї таблиці БД і дочірньою по відношенню до іншої. Відношення - реляційна таблиця. Тип даних. Поняття тип даних в реляційній моделі повністю еквівалентно до відповідного поняття в алгоритмічних мовах. Тип даних визначає можливі способи обробки даних і місце, необхідне для їх зберігання. Набір підтримуваних Багато Факультативний Один Обов'язковий 4 типів даних визначається СКБД і може сильно відрізнятися в різних системах. Однак існую
24.Реляційна алгебра. Поняття реляційної алгебри.
Поняття реляційної алгебри. -Реляційна алгебра - це мова операцій, що дозволяють створювати на основі одного або декількох відношень інше відношення без зміни самих вихідних відношень. Реляційна алгебра є мовою послідовного використання відношень, в якій всі кортежі, можливо, навіть взяті з різних відношень, обробляються однією командою, без організації циклів. -Реляційна алгебра, яка визначена Коддом, складається з восьми операторів, які складаються з двох груп, по чотири оператора в кожній: 1. Традиційні операції над множинами: 1) Об'єднання (union); 2) Перетин(intersection) ; 3) Різниця множин (set difference); 4) Декартовий добуток (cartesian product) (модифіковані з урахуванням того, що їх операндами є відношення, а не довільні множини). -2. Спеціальні реляційні операції: 1) Вибірка (selection) , 2) Проекція (projection), 3) З'єднання (join) 4) Ділення (division).
42.Предикат EXISTS SQL і перевірка існування набору значень
Предикат EXISTS SQL і перевірка існування набору значень Предикат мови SQL EXISTS виконує логічну задачу. У запитах SQL цей предикат використовується в виразах вигляду: EXISTS (SELECT * FROM ім'я_таблиці...) Цей вираз повертає true, коли за запитом знайдено один чи більше рядків, що відповідають умові і false, коли не знайдено жодного рядку. Як правило, предикат EXISTS застосовується у випадках, коли необхідно знайти значення, що відповідні основній умові, заданій у секції WHERE і додатковій умові, вкладеній у підзапит, який є аргументом предиката. Для NOT EXISTS все навпаки: NOT EXISTS (SELECT * FROM ім'я_таблиці...) Вираз повертає істину, коли за запитом не знайдено жодного рядка і false, коли знайдено хоча б один рядок. До прикладу візьмемо з базу даних бібліотеки і її таблиці "Книга в користуванні" (BOOKINUSE) і "Користувач" (USER). Поки нам буде потрібно лише таблиця "Книга в користуванні" (BOOKINUSE). Приклад 1. Визначити ID користувачів, яким видано книги Толстого, яким також видані книги Чехова. У зовнішньому запиті відбираються дані про користувачів, яким видано
15.Теорія нормалізації даних. Процес нормалізації.
Процес нормалізації. --Головною метою групування даних в кортежі - зменшення надмірності даних. Для рішення цієї проблеми застосовують підхід, який зветься нормалізацією відношень. Деякі функціональні залежності атрибутів є небажаними через побічні явища та аномалії, які вони можуть викликати. --Зазвичай розрізняють наступні проблеми: • надмірність даних; • аномалії оновлення; • аномалії видалення; • аномалії введення. Надмірність даних характеризується наявністю в кортежах відношень повторюваної інформації. --Аномалії оновлення, пов'язані з надмірністю даних, що призводить до проблем при їх зміні. Аномалії видалення можуть виникати при видаленні записів з ненормалізованих таблиць і характеризуються ймовірністю видалення не всіх дубльованих кортежів. Аномалії введення виникають при додаванні в таблицю нових записів, зазвичай в поля з обмеженнями NOT NULL (не порожні). --Для ліквідації небажаних функціональних залежностей є спеціальний формальний механізм названий нормалізацією. Нормалізац
43.Підзапити мови SQL. Корелюючі та некорелюючі підзапити
Підзапити мови SQL. Корелючі та некорелючі підзапити Підзапити, які повертають єдине значення Підзапити (вкладені запити), які повертають єдине значення, часто застосовуються у випадках, коли значення певного стовпця в основному запиті потрібно порівняти з деяким єдиним значенням за допомогою одного з операторів порівняння (=, <, >, <= , >=). Значення, з яким проводиться порівняння, як раз і повертається підзапитом (вкладеним запитом). Вірною ознакою того, що підзапит поверне одне єдине значення є: - в підзапиті застосовується одна з агрегатних функцій (COUNT, SUM, AVG, MAX, MIN); - підзапит витягує значення унікального ідентифікатора, наприклад, первинного ключа. В інших випадках потрібно бути повністю впевненим, що з умовами, зазначеними в секції WHERE підзапиту, відповідає єдине значення обраного стовпця. Для прикладу, далі будемо розглядати базу даних "Театр". Таблиця Play містить дані про постановках. Таблиця Team - про ролі акторів. Таблиця Actor - про акторів. Таблиця Director - про режисерів. Поля таблиць, первинні та зовнішн
9. Реляційна модель даних.
Реляційна модель даних. --Недоліки ієрархічної та мережної моделей привели до появи нової, реляційної моделі даних, створеної Е. Ф. Коддом в 1970-1971 роках і яка викликала загальний інтерес. Реляційна модель була спробою спростити структуру бази даних. У ній були відсутні явні посилання на предків і нащадків, а всі дані були представлені у вигляді простих таблиць, розбитих на рядки й стовпці. Перед тим як перейти до більш докладного вивчення цієї моделі, введемо деякі поняття. Одна з найбільш складних проблем організації бази даних пов'язана з тим, що архітектори БД, розробники та кінцеві користувачі, як правило, розглядають дані та їх призначення по-різному. Проект, який буде розроблений, відповідатиме всім вимогам замовників тільки за тієї умови, якщо і архітектори, і замовники прийдуть до єдиного розуміння. Для цього необхідно використовувати загальну модель, яка не ускладнена технічними подробицями і не допускає подвійних тлумачень. Одним із прикладів моделі такого типу є модель «Сутність-зв'язок
52.Робота з таблицями бази даних.
Робота з таблицями баз даних. -Наприклад, створимо функцію numcatalogs(), яка підраховує кількість записів у таблиці CATALOGS навчальної бази даних "shop" : CREATE PROCEDURE numcatalogs (OUT total INT) BEGIN SELECT COUNT(*) INTO total FROM CATALOGS; END // Оператор SELECT ... INTO ... FROM дозволяє оперувати відразу декількома стовпцями, як у наступному прикладі: SELECT id, data INTO x, у FROM test LIMIT 1; Приклад виклику новоствореної процедури: CALL numcatalogs(@a); SELECT @a; СКБД підтримує контекст виклику процедури для бази даних за замовчуванням. Це означає, що якщо процедура, створена в базі даних "shop", буде викликана в той момент, коли поточною базою даних є база "test" - СУБД MySQL поверне помилку: 1305: PROCEDURE test.numcatalogs does not exist Процедура успадковує базу даних за замовчуванням від викликаючого оператора тому при зверненні до таблиць інших баз даних необхідно використовувати розширені імена. --Важливо. Використання оператора USE в збережених процедурах заборонено. Наприклад, створимо процедуру catalogname (), яка буде повертати по первинному ключу id_catalog назву каталогу nаmе. Для цього буде потрібно визначити
21.Проектування схем баз даних. Різні типи та кратність зв'язків.
Різні типи та кратність зв'язків. --Клас сутностей - це позбавлений методів клас об'єктів в сенсі ООП. При переході до фізичного рівня класи сутностей перетворюються в базові відношення реляційних БД для конкретних СКБД. У них, як і власне у базових відносинах, існують власні атрибути. --Класом називається іменований опис сукупності об'єктів із загальними атрибутами, операціями, зв'язками і семантикою. Графічно зазвичай клас зображується у вигляді прямокутника. У кожного класу має бути ім'я (текстовий рядок), яке є унікальним та відрізняє його від всіх інших класів. -Атрибутом класу називається іменована властивість класу, що описує безліч значень, які можуть приймати екземпляри цієї властивості. Клас може мати будь-яке число атрибутів (зокрема, не мати жодного атрибута). Атрибут є абстракцією стану об'єкта. Будь-який атрибут довільного об'єкта класу повинен мати деяке значення. -Так звані зв'язки реалізуються за допомогою оголошення зовнішніх ключів (подібні явища нам вже зустрічалися раніше), тобто
49.Створення збереженої процедури.
Створення збереженої процедури. -За замовчуванням процедура пов'язана з базою даних, що використовується на даний момент часу. Щоб зв'язати процедуру з конкретною базою даних, необхідно вказати її назву при створенні збереженої процедури: і'мя_бази_даних. ім'я_збереженої_процедури. Повний синтаксис: CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE ім'я_процедури ([параметри_процедури[,...]]) [характеристики ...] тіло_підпрограми Параметри процедури: [ IN | OUT | INOUT ] Ім'я параметра type type: Будь який валідний тип даних MySQL Характеристики: COMMENT 'string' | LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } Тіло підпрограми: Валідний оператор програми SQL Для того, щоб створити новий рядок в цій таблиці використовуємо наступний запит: INSERT INTO ADS (Id, Category, Part, Units, Money) VALUES (13, 'Недвижимость', 'Гаражи', 22, 4620) Або без вказання імен стовпців: INSERT INTO ADS VALUES (13, 'Недвижимость', 'Гаражи', 22, 4620) Ми з вами будемо використовувати простіший синтаксис: CREATE PROCEDURE sp_name ([parameter [,...]]) [characteristic ...] routine_body CREATE FUNCTION sp_name ([parameter[,...]]) RETURNS type [characteristic ...] routine_bod
58.Тригери. Створення тригерів
Створення тригерів -Для створення тригера необхідно бути власником таблиці, для якої тригер створюється, або мати роль db_owner або db_ddladmin, або ж бути адміністратором SQLсервера, тобто входити в фіксовану роль сервера sysadmins. При додаванні тригера до таблиці змінюється тип доступу, відношення до неї інших об'єктів і т. д. Створення DML-тригера: CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH [ ENCRYPTION ] [ ] [ ,...n ] ] { FOR | AFTER | INSTEAD OF } {[INSERT] [,] [UPDATE] [,] [DELETE]} [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [;] [...n] | EXTERNAL NAME } Створення DDL-тригера: CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH [ ENCRYPTION ] [ ] [ ,...n ] ] { FOR | AFTER } { event_type | event_group } [ ,...n ] AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME < method specifier > [;] }
14.Модель «Сутність-зв'язок». Типи сутностей.
Типи зв'язків між відношеннями Розрізняють три основних типи зв'язків між таблицями в реляційній моделі даних: - один-до-одного (1:1) - кожному кортежу одного відношення відповідає тільки один кортеж іншого відношення; Рис.3.4 - тип зв'язку один-до-одного. - один-до-багатьох (1:М) - одному кортежу головного відношення відповідає декілька кортежів підлеглого відношення (Рис 3.5); 9 Рис. 3.5 - тип зв'язку один-до-багатьох/ - багато-до-багатьох(М:М) - одному кортежу одного відношення відповідає множина кортежів іншого відношення і навпаки (Рис. 3.6). Рис. 3.6 - тип зв'язку багато-до-багатьох. Зв'язок один-до-одного зустрічається на багато рідше зв'язку один-добагатьох, її використовують, якщо не хочуть щоб основна таблиця «розпухала» від другорядної інформації. Крім того, вважається, що БД до складу яких входять такі зв'язки не можуть вважатися повністю нормалізованими. Тип зв'язку один-до-багатьох є найпоширенішим у реляційних БД, він дозволяє моделювати ієрархічні структури даних. 10 Зв'язок багато-до-багатьох зустрічаєть
38.Умови вибірки. ORDER BY. AS.
Умови вибірки. ORDER BY. AS -Команда ORDER BY дозволяє сортувати записи за певним полем при виборі з бази даних. Синтаксис: Сортування по одному полю: SELECT * FROM ім'я_таблиці WHERE умова ORDER BY поле_для_сортування -Можна сортувати не по одному, а по багатьом полях відразу: SELECT * FROM ім'я_таблиці WHERE умова ORDER BY поле1, поле2... За замовчуванням записи сортуються по зростанню, щоб впорядкувати за спаданням - напишіть DESC: SELECT * FROM ім'я_таблиці WHERE умова ORDER BY поле DESC -За замовчуванням буде сортування, ніби поставлено ASC: SELECT * FROM ім'я_таблиці WHERE умова ORDER BY поле ASC Умова WHERE не обов'язкова - якщо її не поставити, будуть вибрані всі записи: SELECT * FROM ім'я_таблиці ORDER BY поле -Так як вибираються всі записи, то блок WHERE можна не вказувати: SELECT * FROM workers ORDER BY age Можна також вказати тип сортування в явному вигляді - ASC - результат від цього не зміниться: SELECT * FROM workers ORDER BY age ASC -Приклад 3. Відсортувати записи одночасно, як по зростанню віку так і за спаданням зарплати. При цьому спочатку записи сортуються за віком, а ті записи, в яких вік однаковий, розташуват
31.Вступ до SQL. Функції. Синтаксис
Функції SQL: організація даних - SQL дає користувачу можливість визначити структуру представлення даних, а також встановлювати відношення між елементами бази даних; вибірка даних - SQL дає можливість користувачу чи прикладній програмі отримати із бази даних інформацію, яка в ній міститься; опрацювання даних - SQL дає можливість користувачу чи прикладній програмі змінювати базу даних, тобто додавати нові дані, оновлювати чи вилучати існуючі; 2 управління доступом - за допомогою SQL можна обмежувати можливості користувача щодо вибірки і зміни даних та захистити дані від несанкціонованого доступу; спільне використання даних - SQL координує спільне використання даних користувачами, які працюють паралельно так, щоб вони не заважали один одному; цілісність даних - SQL дозволяє забезпечити цілісність бази даних, захищаючи її від руйнації через неузгоджені зміни чи відмови системи ------- Синтаксис SQL Коментар. Будь-який коментар - це необов'язковий текст, який друкується в окремому рядку програми, щоб пояснити цю п
2. Основні поняття і архітектура. Функції систем керування базами даних
Функції систем керування базами даних --Забезпечення цілісності даних. Дані, що завантажені у БД, повинні мати можливість надійного вилучення без несподіваної зміни, маніпуляцій або видалення. Це вимагає надійних методів завантаження і витягнення даних, а також серіалізації і десеріалізації даних, необхідних для їх зберігання на фізичному носії. Цілісність даних стає складнішою, чим більше розподіленим є сховище даних, оскільки кожна частина системи повинна відображати поточний бажаний стан кожного елемента даних --Забезпечення продуктивності Характеристики операційної продуктивності часто відображають тип використовуваної бази даних, схему або структуру даних та саму операцію. У деяких випадках такі функції, як індексування, що створює альтернативне оптимізоване для продуктивності сховище загальнодоступних даних, може забезпечити швидкий пошук цих елементів --Забезпечення одночасного доступу Це означає, що декілька сторін повинні мати можливість працювати з БД одночасно. Записи пови