Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECTIONS_BDBZ.doc
Скачиваний:
20
Добавлен:
16.12.2018
Размер:
1.63 Mб
Скачать

Контрольні запитання

  1. Які головні переваги реляційної моделі?

  2. Дати визначення термінів: відношення, кортеж, ключ.

  3. Які види ключів існують і навіщо вони потрібні?

  1. Що таке домени і навіщо вони потрібні?

  2. Що таке цілісність БД і як вона підтримується?

  3. Що таке логічна і фізична цілісність БД?

  4. Що таке посилкова цілісність і як вона підтримується?

  5. Перелічити правила вилучення і оновлення даних у зв'язаних відношеннях.

  6. Навести приклади обмежень значень і структурних обмежень.

  7. Назвати основні операції реляційної алгебри.

  8. Назвати додаткові операції реляційної алгебри, навести приклади.

  9. Охарактеризувати варіанти реляційного обчислення.

  10. Що таке обчислення кортежів?

Лекція №9. Мова визначення даних. Типи даних у стандарті SQL.

SQL (англ. Structured query language — мова структурованих запитів) — декларативна мова програмування для взаємодії користувача з базами даних, що застосовується для формування запитів, оновлення і керування реляційними БД, створення схеми бази даних і її модифікація, система контролю за доступом до бази даних.. Сам по собі SQL не є ні системою керування базами даних, ні окремим програмним продуктом. Не будучи мовою програмування в тому розумінні, як C або Pascal, SQL може формувати інтерактивні запити або, будучи вбудованою в прикладні програми, виступати в якості інструкцій для керування даними. Стандарт SQL, крім того, вміщує функції для визначення зміни, перевірки і захисту даних.

Інтерактивний і вкладений SQL

Є два SQL: iнтерактивний і вкладений. Здебільшого обидві форми працюють однаково, але використовуються по-різному. Інтерактивний SQL використовується для функціонування безпосередньо в базі даних. У цьому SQL - коли ви введете команду, вона зараз же виконається, і ви зможете відразу побачити результат (якщо він взагалі виведеться).

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

Проте, доводиться мати справу зі структурою SQL і стилем управління даних, який вимагає деяких розширень інтерактивного SQL. Передача SQL-команд під вкладеним SQL пропускається ( "passed off") для змінних або параметрів, що використовуються програмою, в яку вони були вкладені. Різновиди SQL

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

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

DML (Мова маніпулювання даними) це набір команд, які визначають, які значення представлені в таблицях у будь-який момент часу. DCD (Мова Управління Даними) складається з коштів, які визначають, чи дозволити користувачу виконувати певні дії, чи ні. Вони є складовими частинами DDL в ANSI.

Це не різні мови, а розділи команд SQL, згруповані за їх функціями.

Не всі типи значень, які можуть бути в полях таблиці, логічно однакові. Найбільш очевидна відмінність - між числами і текстом. Ви не можете поміщати числа в алфавітному порядку або віднімати одне ім'я з іншого. Так як системи з РБД базуються на зв'язках між фрагментами інформації, різні типи даних повинні відрізнятися один від одного так, щоб відповідні процеси і порівняння могли бути в них виконані. У SQL це робиться за допомогою призначення кожному з полів типу даних, який вказує тип значення, що це поле може містити. Всі значення в даному полі повинні мати однаковий тип. У таблиці Замовників, наприклад, cname і city містять рядки тексту для оцінки, а snum і cnum це числа. З цієї причини ви не можете ввести значення Highest (Найвищий) або значення None у полі rating, яке має числовий тип даних. Це обмеження встановлене тому що воно накладає деяку структурність на ваші дані. Ви часто будете порівнювати деякі або всі значення в даному полі, тому ви можете виконувати дію тільки на певних рядках, а не на всіх. Ви не могли б зробити цього, якби значення полів мали змішаний тип даних.

На жаль, визначення цих типів даних є основною областю, в якій більшість комерційних програм БД і офіційний стандарт SQL не завжди збігаються. ANSI SQL-стандарт розпізнає тільки text і number, у той час як більшість комерційних програм використовують інші спеціальні типи. Такі як DATA (ДАТА) і TIME (ЧАС) - фактично, майже стандартні типи (хоча точний формат їх змінюється). Деякі пакети також підтримують такі типи як, наприклад, MONEY (ГРОШІ) і BINARY (двійкових). (MONEY це спеціальна "валютна" система числення, яка використовується комп'ютерами.)

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

ANSI визначає кілька числових типів, відмінності між якими досить тонкі, і іноді їх плутають. Складність числових типів ANSI можна принаймні частково, пояснити зусиллям зробити вкладений SQL сумісним з низкою інших мов. Два типи чисел ANSI - INTEGER (ЦІЛЕ ЧИСЛО) і DECIMAL (десяткове ЧИСЛО) (які можна скорочувати як INT і DEC, відповідно), будуть адекватні для наших цілей, так само як і для цілей більшості практичних ділових прикладних програм. Природно, що тип INTEGER можна представити як десяткове число, яке не містить ніяких цифр праворуч від десяткової точки.

Тип для тексту - CHAR (або СИМВОЛ), що відноситься до рядка тексту. Поле типу CHAR має довжину, яка визначається максимальним числом символів, які можуть бути введені в це поле. Більша частина реалізацій також мають нестандартний тип, званий VARCHAR (ЗМІННЕ ЧИСЛО СИМВОЛІВ), який є текстової рядком і може мати будь-яку довжину до певного реалізацією максимуму (зазвичай 254 символи). Значення CHARACTER і VARCHAR включаються до поодинокі лапки як 'текст'. Різниця між CHAR і VARCHAR в тому, що CHAR повинен резервувати достатню кількість пам'яті для максимальної довжини рядка, а VARCHAR розподіляє пам'ять в міру необхідності.

Символьні типи складаються з усіх друкованих символів, включаючи числа. Однак число 1 це не те саме, що символ "1". Символ "1" - тільки друкований фрагмент тексту, не можуть бути визначені системою як числове значення 1. Наприклад 1 + 1 = 2, але "1" + "1" не дорівнює "2". Символьні значення зберігаються в комп'ютері як двійкові значення, але показуються користувачеві як друкований текст.

Перетворення виконується за форматом, який визначається системою, яку ви використовуєте. Цей формат перетворення буде одним з двох стандартних типів (можливо, з розширеннями), що використовуються в комп'ютерних системах: ASCII-код (який використовується у всіх персональних комп'ютерах і малих) і EBCDIC-код (Розширений Двійково-десятковий Код Обміну Інформації) (що використовується у великих комп'ютерах). Певні операції, такі як впорядкування в алфавітному порядку значень поля, буде змінюватися разом з форматом.

Ми повинні стежити за ринком, а не за ANSI, у використанні типу DATE (ДАТА). (У системі, яка не розпізнає тип ДАТА, ви, звичайно, можете оголосити дату як символьне або числове поле, але це зробить більшість операцій більш трудомісткими.)

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

У наведеній нижче таблиці перелічено типи даних ANSI SQL SQL (Structured Query Language — мова структурованих запитів). Мова запитів і програмування баз даних, яка широко використовується для доступу, запитування, оновлення й керування даними в реляційних базах даних., еквівалентні їм типи SQL-даних обробника баз даних Microsoft Access і припустимі синоніми. Також наведено список еквівалентних типів даних Microsoft SQL Server.

Тип даних ANSI SQL

Тип даних Microsoft Access SQL

Синонім

Тип даних Microsoft SQL Server

BIT, BIT VARYING

BINARY (див. примітки)

VARBINARY, BINARY VARYING BIT VARYING

BINARY, VARBINARY

Не підтримується

BIT (див. примітки)

BOOLEAN, LOGICAL, LOGICAL1, YESNO

BIT

Не підтримується

TINYINT

INTEGER1, BYTE

TINYINT

Не підтримується

COUNTER (див. примітки)

AUTOINCREMENT

(див. примітки)

Не підтримується

MONEY

CURRENCY

MONEY

DATE, TIME, TIMESTAMP

DATETIME

DATE, TIME (див. примітки)

DATETIME

Не підтримується

UNIQUEIDENTIFIER

GUID

UNIQUEIDENTIFIER

DECIMAL

DECIMAL

NUMERIC, DEC

DECIMAL

REAL

REAL

SINGLE, FLOAT4, IEEESINGLE

REAL

DOUBLE PRECISION, FLOAT

FLOAT

DOUBLE, FLOAT8, IEEEDOUBLE, NUMBER (див. примітки)

FLOAT

SMALLINT

SMALLINT

SHORT, INTEGER2

SMALLINT

INTEGER

INTEGER

LONG, INT, INTEGER4

INTEGER

INTERVAL

Не підтримується

Не підтримується

Не підтримується

IMAGE

LONGBINARY, GENERAL, OLEOBJECT

IMAGE

Не підтримується

TEXT (див. примітки)

LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT (див. примітки)

TEXT

CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING

CHAR (див. примітки)

TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING (див. примітки)

CHAR, VARCHAR, NCHAR, NVARCHAR

Контрольні запитання

1. Які найбільші основні відмінності між типами даних в SQL?

2. Чи розпізнає ANSI тип даних DATA ?

3. Який підрозділ SQL використовується, щоб розмістити дані в таблиці ?

4. Що таке «ключове слово»?

Лекція №10. Структура даних в реляційній моделі. Функціональні залежності між атрибутами.

Модель реляційної бази даних була вперше розроб­лена доктором Е.Ф.Коддом (Е. F. Codd) на початку 70-их років XX ст. як більш зручний засіб зберігання, вибірки і маніпулювання даними, ніж ієрархічні і сіткові бази да­них. На той час Кодд працював дослідником в корпорації IBM. Наприкінці 1968р. Кодд, математик за освітою, впе­рше усвідомив, що математичні дисципліни можна використовувати, щоб принести в область управління базами даних строгі принципи і точність - саме таких якостей не вистачало цій області на той час.

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]