Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EKT_lab1.doc
Скачиваний:
0
Добавлен:
25.11.2019
Размер:
138.24 Кб
Скачать

Види моделей даних

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

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

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

  1. Відношення один-до-одного. При такому відношенні кожному запису першої таблиці відповідає не більше одного запису другої таблиці й навпаки.

  2. Відношення багато-до-одного. При такому відношенні будь-якому запису другої таблиці БД може відповідати будь-яка кількість записів першої таблиці, але не навпаки.

  3. Відношення один-до-багатьох. При такому відношенні будь-якому запису першої таблиці БД може відповідати будь-яка кількість записів другої таблиці. Це відношення є таким як і багато-до-одного, але навпаки.

  4. Відношення багато-до-багатьох. При такому відношенні будь-якому запису першої таблиці БД може відповідати будь-яка кількість записів другої таблиці і навпаки.

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

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

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

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

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

Недоліками реляційної моделі є велика надлишковість даних та пов'язана з цим проблема забезпечення непротиріччя даних при їх обновленні.

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

  • простота розуміння та використання;

  • наявність успішних реалізацій систем управління базою даних, основаних на її застосуванні;

  • забезпечення певного рівня незалежності даних;

  • простота оцінки експлуатаційних характеристик завдяки наперед заданим взаємозв'язкам.

До недоліків ІМД слід віднести наступне: через строгу ієрархічну впорядкованість об'єктів моделі ускладнюються операції внесення та видалення; тільки при значно погіршеній продуктивності системи можна штучно реалізувати взаємозв'язки "багато до багатьох".

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

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

В структурах мережевих даних елементарні дані та відношення між ними представляються у вигляді орієнтованої мережі (вершини – дані, дуги – відношення). До переваг мережевої моделі даних відносяться: простота реалізації взаємозв'язків "багато до багатьох", що часто зустрічаються; найбільша повнота розуміння та використання користувачами; можливість реалізації непроцедурних мов запитів.

До недоліків відносяться: видалення початкових об'єктів зумовлює видалення породжених; доступ до будь-якого породженого вузла можливий тільки через початковий; низька продуктивність при великих об'ємах баз даних; більш складний опис даних в прикладній програмі у порівнянні з ієрархічним підходом.

Типи даних в MySQL

MySQL – швидка та надійна СУБД. База даних дозволяє ефективно зберігати, шукати , сортувати і отримувати дані. Сервер MySQL керує доступом до даних, дозволяючи одночасно працювати з ними багатьом користувачам, які мають на це право. Тобто MySQL є багатопотоковим сервером. Він використовує SQL (Structured Query Language – мову структурованих запитів), стандартну мову запитів в бази даних. На теперішній час MySQL доступний як програмне забезпечення з відкритим вихідним кодом.

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

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

Числові типи даних містять цілі числа або числа з плаваючою комою. Для чисел з плаваючою комою можна вказувати кількість цифр після десяткової точки. Числові типи приведені в таблиці 1.

Таблиця 1.

Тип

Діапазон

Пам'ять (байт)

Опис

tinyint

–127..127 або 0..255

1

Дуже маленьке ціле число

smallint

–32768..32767 або 0..65535

2

Маленьке ціле число

mediumint

–8388608..8388607 або

0..16777215

3

Середньої величини ціле число

int

–231.. 231–1 або 0.. 232–1

4

Звичайне ціле число

bigint

–263.. 263–1 або 0.. 264–1

8

Велике ціле число

float

1.175494351E–38

3.402823466E+38

4

Число з плаваючою комою одинарної точності (екві­валентно float [4] )

double

2.2250738585072014E–308

1.7976931348623157E+308

8

Число з плаваючою комою подвійної точності (екві­валентно float [8] )

decimal (m, d)

різний

M+2

Число з плаваючою комою, збережене як char. Діапазон залежить від М, ширини відображення стовпця.

За допомогою типу дати і часу в MySQL можна вводити дані дати і часу або в числовому, або в стрічковому форматі. Типи дати і часу наведені в таблиці 2.

Таблиця 2.

Тип

Діапазон

Опис

date

від 1000-01-01

до 9999-12-31

Дата. Відображається у вигляді

РРРР-ММ-ДД

time

від -838:59:59

до 838:59:59

Час. Відображається у вигляді

ГГГГ:ХХ:СС. Легко бачити, що область є значно ширшою ніж може бути потрібна.

datetime

від 1000-01-01

00:00:00

до 9999-12-31

23:59:59

Дата і час. Відображається у вигляді

РРРР-ММ-ДД ГГ:ХХ:СС

timestamp [M]

від 1970-01-01

00:00:00

до 2037

Мітка часу, корисна для звітів за трансакціями. Формат відображення залежить від значення М.

year [(2|4)]

70-69 (1970-2069)

1901-2155

Рік. Можна визначити дво- або чотирицифровий формат. Кожен з них, як показано, має свій діапазон.

Стрічкові типи поділяються на три групи. Перша група – прості стрічки, які є короткими фрагментами тексту. Це є типи char і varchar. Ширину кожного з них можна регулювати. Стовпці з типом char доповнюються пробілами до максимально заданої ширини, а ширина стовпців з типом залежить від розміру даних. Друга група – це типи text і blob. Їх розміри можуть бути різними. Перший тип даних призначений для більш довгих текстових фрагментів, другий – для війкових даних. Blob означає binary large object (великий двійковий об'єкт) і може містити будь-які дані, у тому числі й звуки та зображення. На практиці ці типи є однакові, за винятком того, що text чуттєвий до реєстра, а blob – ні. До третьої групи відносяться два спеціальних типи set і enum. Тип set (множина) призначений для того, щоб визначити, що дані в цьому стовпці належать конкретному набору фіксованих значень. Дані у стовпці можуть мати декілька значень із набору. В конкретному наборі можна задавати до 64 елементів. Тип enum (перелік) подібний до попереднього, але стовпці цього типу можуть мати лише одне з фіксованих значень або null, а максимальна кількість елементів у переліку складає 65535. В таблиці 3 наведено опис стрічкових типів даних.

Таблиця 3.

Тип

Діапазон

Опис

char

Від 1 до 255 символів

Стрічка фіксованої довжини від 1 до 255

varchar

Від 1 до 255 символів

Стрічка довільної довжини від 1 до 255

tinyblob

28–1 (255) символів

Маленьке поле

tinytext

28–1 (255) символів

Маленьке поле

blob

216–1 (65535) символів

Нормальне поле

text

216–1 (65535) символів

Нормальне поле

mediumblob

224–1 (16777215) символів

Середнє поле

mediumtext

224–1 (16777215) символів

Середнє поле

longblob

232–1 (4294967295) символів

Велике поле

longtext

232–1 (4294967295) символів

Велике поле

set ('v1', 'v2',…)

65535

Стовпці цього типу можуть містити набір перерахованих значень або null

enum ('v1', 'v2',…)

64

Стовпці цього типу можуть містити тільки одне з перерахованих значень або null

Для збереження та читання даних в та з бази в MySQL використовують мову SQL, яка широко використовується також в таких системах баз даних, як Oracle, Sybase, Microsoft SQL Server та інших.

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

INSERT INTO table [(column1, column2,...)] VALUES (value1, value2,...)

Замість table вказується реальне ім'я таблиці, замість column – ім'я стовпця, замість value – значення, яке потрібно записати. Всі значення, крім чисел і дати, поміщаються у лапки.

Для читання даних з бази використовують оператор SELECT, який має багато опцій та варіантів використання. Основна форма оператора виглядає так:

SELECT items

FROM tables

[ WHERE condition ]

[ GROUP BY group_type ]

[ HAVING where_definition ]

[ ORDER BY order_type ]

[ LIMIT limit criteria ].

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

SELECT column1, column3 FROM table1.

За допомогою цієї конструкції вибираються стовпці 1 і 3 з таблиці 1. Якщо треба вибрати всі стовпці таблиці, то можна скористатись оператором групового символу *. Наприклад,

SELECT * FROM table1.

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

SELECT * FROM table1 WHERE number=3;

SELECT column1, column3 FROM table1 WHERE name="Двигун".

В першій конструкції вибираються всі дані з таблиці 1, але тільки із стрічок в яких стовпець number рівний 3. В другій конструкції вибираються дані із стовпців 1 і 3 таблиці 1, в яких стовпець name рівний "Двигун". Тут мається на увазі, що у стовпці стрічкового типу name записано слово "Двигун". Існують інші вирази та оператори, які використовуються в конструкції WHERE. Найбільш вживані приведені у таблиці 4.

Таблиця 4.

Оператор

Опис

=

рівність

>

більше

<

менше

>=

більше або рівне

<=

менше або рівне

!= або <>

не рівне

is not null

не є порожнім

is null

є порожнім

between x and z

значення між x та z

in (x, z)

значення належить множині

not in (x, z)

значення не належить множині

like

значення відповідає заданому взірцю

not like

значення не відповідає заданому взірцю

Оператор like використовує механізм відповідності SQL. Взірець може складатись з довільного тексту плюс символ % для того, щоб вказати співпадіння з будь-якою кількістю символів, і символ _ (підкреслення), щоб вказати співпадіння з одним символом. В MySQL відповідності не чуттєві до регістру. Наведемо приклад використання оператора like,

SELECT * FROM table1 WHERE name LIKE "Д%".

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

В SQL можна перевіряти декілька критеріїв зразу, об'єднуючи їх за допомогою операцій and або or.

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

SELECT table1.id, table2.name, table2.quantity FROM table1, table2 WHERE table1.id = table2.id.

Дана конструкція вибирає поле id з таблиці 1 та поля name, quantity з таблиці 2, але лише ті рядки, в яких поля id кожної таблиці співпадають. У списку після оператора FROM перераховані дві таблиці, оскільки дані вибираються з обох таблиць. Результуючі дані поміщаються в одну загальну таблицю.

Якщо стрічки, які отримані у результаті запиту до бази потрібно сортувати в певному порядку, то можна використати конструкцію ORDER BY в операторі SELECT. Наприклад,

SELECT table1.id, table2.name, table2.quantity FROM table1, table2 WHERE table1.id = table2.id ORDER BY table1.id.

По замовчуванню порядок сортування йде за зростанням (це можна вказати ключовим словом ASC). Змінити порядок сортування на зворотний можна за допомогою ключового слова DESC. Наприклад,

SELECT id, name, number FROM table1 ORDER BY name DESC.

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

SELECT MAX(number) FROM table1.

В цій конструкції знаходиться максимальне значення поля number.

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