- •1)Основні характеристики скбд(Туровський, кв-01)
- •2)Моделі подання даних субд(Туровський кв-01)
- •3)Операції реляційної алгебри(Слободянюк кв-01)
- •4)Фундаментальні властивості відношень(Слободянюк кв-01)
- •5)Первісні ключі(Левко кв-01)
- •6) Зовнішні ключі та посилальна цілісність(Молчанов кв-01)
- •12) Типи даних sql.(Левко кв-01)
- •16) Синтаксис оператора select(Молчанов кв-01)
- •32. Індекси на базі хеш функцій (Олійник кв-02)
- •22)Синтаксис Оператора delete(Панчук кв-02)
- •33)Основні оператори мови pl/PgSql.(Масальов кв-03)
- •37.Типи тригерів та оператори їх створення.(Сорока кв-03)
- •38)Модель даних eav(Невзоров кв-03)
- •40)Основні оператори мови Python.(Кокора кв-03)
- •41)Визначення функцій в Python(Надточій кв-03)
- •42)Класи та модулі в мові Python(Хортюк кв-03)
- •43)Orm-системи, sqlAlchemy(Бельдій кв-03)
- •Формат мови xml(Заяць кв-03)
- •45)Синтаксис та можливості xPath.(Аврамчук кв-03)
- •46)Синтаксис та можливості flowr.(Фещенко кв-03)
- •47)Бази даних типу ключ-значення(Банделюк кв-03)
- •48) Типи даних та команди субд Redis.(Басок кв-03)
3)Операції реляційної алгебри(Слободянюк кв-01)
• Теоретико-множинні
- Об’єднання
- Перетин
- Різниця
- Декартовий добуток
• Спеціалізовані
- Вибірка
- Проекція
- З’єднання
- Ділення
• Службові
- Перейменування
Об’єднання – повертає відношення, що містить всі кортежі, які належать
одному з 2-х заданих сумісних за об’єднанням(НА = НВ , з різними
заголовками не можна застосовувати об’єднання) відношень або двом.
Перетин – повертає відношення, що містить всі кортежі, що належать
одночасно 2-м заданим відношенням.
Різниця – повертає відношення, яке містить всі кортежі, що належать 1-му з
2-х відношень і не належить 2-му.
Декартовий добуток – повертає відношення, яке містить всі можливі кортежі
побудовані на основі з’єднання 2-х кортежів, що належать 2 заданим
відношенням сумісним за декартовим добутком(НА ∩ НВ = ).
Вибірка – це відношення, яке містить всі кортежі заданого відношення, які
відповідають заданій умові.
Проекція – повертає відношення, яке містить всі кортежі заданого
відношення, після того як виключили декілька атрибутів.
З’єднання – повертає відношення, яке містить всі можливі кортежі, що
являють собою комбінацію атрибутів 2-х кортежів, які належать 2-м заданим
відношенням при умові, що у них присутні однакові значення в 1-му або
декількох вхідних атрибутів.
Ділення – для заданих 2-х унарних відношень і одного бінарного відношення,
повертає відношення, яке містить всі кортежі з 1-го заданого відношення,
яке міститься також у бінарному відношенні і відповідає всім кортежам 2-го
унарного відношення.
Перейменування - в результаті застосування операції отримуємо нове
відношення, зі зміненими іменами атрибутів.
4)Фундаментальні властивості відношень(Слободянюк кв-01)
1) Відсутність кортежів-дублікатів, первинний і можливі ключі відношень
Та властивість, що тіло будь-якого відношення ніколи не містить кортежів-
дублікатів, виходить з визначення тіла відношення як безліч кортежів. У класичній теорії
множин за визначенням будь-яка множина складається з різних елементів.
Саме з цієї властивості витікає наявність у кожного значення відношення
первинного ключа – мінімальної безлічі атрибутів, які унікально визначають кортеж
відношення. Дійсно, оскільки у будь-який час всі кортежі тіла будь-якого відношення
різні, у будь-якого значення відношення властивістю унікальності володіє, принаймні,
повний набір його атрибутів. Проте у формальному визначенні первинного ключа
потрібне забезпечення його «мінімальності», тобто в набір атрибутів первинного ключа не
повинні входити такі атрибути, які можна відкинути без збитку для основної властивості –
однозначного визначення кортежу.
Поняття первинного ключа є виключно важливим у зв'язку з поняттям цілісності
баз даних. На практиці первинні (і можливі) ключі змінних відношень з'являються в
результаті явних вказівок проектувальника відношення. Визначаючи змінну відношення,
проектувальник моделює частину наочної області, дані з якої міститиме база даних.
І звичайно, проектувальник повинен знати природу цих даних. Наприклад, йому
повинно бути відомо, що ніякі два службовців ні в який момент часу не можуть мати
посвідчення з одним і тим же номером. Тому він може (і навіть повинен) явно оголосити
{СЛУ_НОМЕР} можливим ключем. Якщо на підприємстві встановлено, що у всіх
службовців повинні бути різні повні імена, то проектувальник може (і знову ж таки
повинен) оголосити можливим ключем і {СЛУ_ИМЯ}. Потім проектувальник повинен
оцінити, який з можливих ключів є надійнішим (властивість його унікальності ніколи
не буде скасовано) і вибрати найбільш надійний можливий ключ як первинного (у
нашому випадку природним вибором був би ключ {СЛУ_НОМЕР}, тому що рішення
про унікальність повних імен службовців виглядає штучним і може бути легко скасовано
керівництвом підприємства).
Тепер пояснимо, чому проектувальнику слід явно оголошувати первинний і
можливі ключі змінних відношень. Річ у тому, що в результаті цього оголошення СУБД
одержує інформацію, яка надалі використовуватиметься як обмеження цілісності. СУБД
ніколи не допустить появи в змінній відношення значення-відношення, що містить два
кортежі з однаковим значенням атрибуту. Тим самим оголошення первинного і можливих
ключів дають СУБД можливість підтримувати цілісність бази даних навіть у разі спроб
занесення в неї некоректних даних.
Нарешті, повернемося до властивості мінімальності первинного і можливих
ключів. Як наголошувалося вище, ця властивість є критично важливою, і важливість
виявляється саме при трактуванні первинного і можливих ключів як обмежень цілісності.
У нашому прикладі з відношенням СЛУЖБОВЦІ властивістю унікальності володітиме
не тільки безліч атрибутів { СЛУ_НОМЕР}, але і, наприклад, множина { СЛУ_НОМЕР,
СЛУ_ОТД_НОМЕР}. Але якби ми виставили як обмеження цілісності вимогу
унікальності { СЛУ_НОМЕР, СЛУ_ОТД_НОМЕР}, то СУБД гарантувала б відсутність
кортежів з однаковим значенням атрибуту СЛУ_НОМЕР не у всьому значенні відношення
СЛУЖБОВЦІ, а тільки в групах кортежів з одним і тим же значенням атрибуту
СЛУ_ОТД_НОМЕР. Зрозуміло, що це не відповідає сенсу модельованої наочної області.
2) Відсутність впорядкованості кортежів
Звичайно, формально властивість відсутності впорядкованості кортежів
в значенні відношення також є слідством визначення тіла відношення як безліч
кортежів. Проте на цю властивість можна поглянути і з іншого боку. Достатньо часто
у користувачів реляційних СУБД і розробників інформаційних систем викликає
роздратування той факт, що вони не можуть зберігати кортежі відношення на фізичному
рівні в потрібному їм порядку. Можна було б розробити іншу теорію, в якій допускалися
б впорядковані «відношення». Проте зберігати впорядковані списки кортежів в
умовах інтенсивно оновлюваної бази даних набагато складніше технічно, а підтримка
впорядкованості спричиняє за собою істотні накладні витрати.
Відсутність вимоги до підтримки впорядкування безлічі кортежів відношення
додає СУБД додаткову гнучкість при зберіганні баз даних в зовнішній пам'яті і при
виконанні запитів до бази даних. Це не суперечить тому, що при формулюванні запиту до
БД, наприклад, на мові SQL можна зажадати сортування результуючої таблиці відповідно
до значень деяких стовпців.
3) Відсутність впорядкованості атрибутів
Атрибути відношень не впорядковані, оскільки за визначенням заголовок
відношення є безліч пар <ім’я атрибуту, ім'я домену>. Для посилання на значення
атрибуту в кортежі відношення завжди використовується ім'я атрибуту. СУБД сама
приймає рішення про те, в якому фізичному порядку слід зберігати значення атрибутів
кортежів. Крім того, ця властивість полегшує виконання операції модифікації схем
існуючих відношень не тільки шляхом додавання нових атрибутів, але і шляхом
видалення існуючих.
4) Атомарність значень атрибутів, перша нормальна форма відношення
Значення всіх атрибутів є атомарними (вірніше, скалярними). Це витікає з
визначення домену як потенційної безлічі значень скалярного типа даних, тобто серед
значень домену не можуть міститися значення з видимою структурою, зокрема безліч
значень . Головне в атомарності значень атрибутів полягає в тому, що реляційна
СУБД не повинна забезпечувати користувачам явної видимості внутрішньої структури
значення. До всіх значень можна звертатися тільки за допомогою операцій, визначених у
відповідному типі даних.
Прийнято говорити, що в реляційних базах даних допускаються тільки
нормалізовані відношення, або відношення, представлені в першій нормальній формі.
Відношення знаходиться в першій нормальній формі тоді і тільки тоді, коли в
будь-якому допустимому значенні відношення кожен його кортеж містить тільки одне
значення для кожного з атрибутів.
Нормалізовані відношення складають основу класичного реляційного підходу
до організації баз даних. Вони володіють деякими обмеженнями (не всяку інформацію
зручно представляти у вигляді плоских таблиць), але істотно спрощують маніпулювання
даними.
