Февраль 12 2019

Вопрос – Ответ БД

Питання #1 Що таке База Даних?

База Даних (БД) — це впорядкований набір логічно взаємопов’язаних даних, що призначені для задоволення інформаційних потреб користувачів.

Також База Даних (БД) може бути визначена як збірка таблиць, схем, хешів, переглядів та інших об’єктів характерних для бази даних.

Питання #2 Які види Баз Даних існують?

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

Тепер, трішки однобоко уточнимо кілька моментів по клієнт-серверу:

За способом доступу до даних Бази Даних, бази даних поділяються на бази даних з локальним доступом і бази даних з віддаленим (мережевим) доступом. Відповідно Бази Даних з мережевим доступом проектують згідно архітектури:

  • айл-сервер;
  • клієнт-сервер.

Ось, Клієнт-серверна архітектура поширена, на ній функціонує інтернет, тому слід знати і розуміти її визначення! Суть концепції клієнт-сервера полягає в тому, що окрім зберігання централізованої бази даних, центральна машина (сервер бази даних) повинна забезпечувати виконання основного обсягу обробки даних. Запит на дані, який видається клієнтом (робочою станцією), породжує пошук і вилучення даних на сервері. Витягнуті дані транспортуються по мережі від сервера до клієнта. Нові дані записуються / перезаписуються до Бази Даних Web додатку. Специфікою архітектури клієнт-сервер є використання мови запитів SOL.

Взаємодія клієнтського браузера та Web додатку

Питання #3 Що таке репозиторій?

Перш ніж надати визначенню терміну репозиторій, уявіть просту математику: Одна База Даних = проста База Даних. Містилище даних, де зберігаються дані з 2-х і більше баз даних називається Сховищем Даних. Репозиторій, то зазвичай, вже гіганська База Даних.

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

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

Питання #4 Що таке тестування Баз Даних?

Тестування баз даних передбачає перевірку цілісності та достовірності даних, які відображаються на Front end -і, і містяться в Базі Даних (на Back end -i).

Якщо перераховувати, тестування Бази Даних повинне включати:

  • валідацію даних у базі даних;
  • перевірку того, що немає втрат записів;
  • правильне відображення зв’язків між даними;
  • слідкувати  за збереженням і оновленням зв’язків (якщо ми видалили якийсь елемент: foreign key, primary key, батьківський елемент, нащадок і т.п.);
  • цілковите оновлення записів у базі даних, щоби дані однаково відображалися на усіх інтерфейсах;
  • перевірка значень.
:mrgreen:

Більш детальніше про це читайте, ну як завжди  тут на нашому сайті для тестувальників у статті: Тестування Бази Даних — практичні поради початківцям, як якісно перевірити БД

Питання #5 Що таке реляційні Бази Даних?

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

Суть, Реляційна база даних — це набір таблиць та зв’язків між цими таблицями.

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

Також рядок ще називають “записом” таблиці (англ. record). Кожне поле таблиці, стовпець (англ. field) таблиці має тип.

Питання #6 Що таке нереляційні Бази Даних

Гм… слизьке питання. Можна наговорити і написати багато, і Ви нічого не зрозумієте.

Запам’ятайте головне: нереляційні Бази Даних — це тип неструктурованих Баз Даних.

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

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

Нереляційні Бази Даних набули популярності з початком масового поширення мережі інтернет (наприклад організація даних у пошуку Google). У нереляційних Базах Даних робиться спроба вирішити проблеми масштабованості, продуктивності баз даних та гнучкості окремо взятої БД. Тому термін нереляційних баз даних ще часто йде поряд з NoSQL базами даних, та цілою сучасною наукою Big Data.

Питання #7 Що таке Реляційна СУБД?

СУБД (Система Управління Базами Даних) реляційної бази даних — це система, заснована на програмних та технічних засобах, яка забезпечує визначення відносин між таблицями, створення, маніпулювання, контроль, керування та використання баз даних (за стандартом ISO/IEC 2382:2015). Програми для роботи з базою даних можуть бути частиною СКБД або автономними. Найпопулярнішими СКБД є MySQL, PostgreSQL, Microsoft SQL Server, Oracle, Sybase, Interbase, Firebird та IBM DB2. Вони дозволяють ефективніше працювати з базами даних, обсяг яких робить неможливим їх ручне опрацювання.

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

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

Питання #8 Яка різниця між Реляційною СУБД та просто СУБД?

Основною відмінністю між СУБД та РСУБД (Реляційною Системою Управляння Базами Даних) — є організація зберігання даних. Якщо у РСУБД дані зберігаються у таблицях, у нереляційних СУБД немає зв’язків між таблицями (дані можуть зберігатися навіть в файлах або як ми вже говорили у ієрархічних структурах.

Слова-абревіатури СУБД, СКБД, DBMS, or Database Management System — є синонімами.

УВАГА: Через тісний зв’язок баз даних з СУБД під терміном «база даних» інколи необґрунтовано та неточно мають на увазі систему керування базами даних. Але варто розрізняти базу даних — сховище даних, та СУБД — як один засобів для роботи з Базою Даних. СКБД з інформаційної системи може бути видалена, але база даних продовжить десь існувати, за умови що її дані попередньо зберегли. І навпаки: СКБД може функціонувати без жодної бази даних — просто пуста незаповнена даними прикладна програма.

Будь-яка Система Керування Баз Даних для ефективної роботи повинна надавати своїм користувачам такі можливості:

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

Питання #9 Що таке модель даних?

Перед тим як зберігати якісь дані у СУБД потрібно описати їх модель. Тобто визначити самі дані та описати їх взаємозв’язки з іншими даними у таблиці. На хлопський розум — “вказати на ячейку”, куди дані мають потрапити, за допомогою запитів SQL, визначених індексів, різного роду обмежень, а по правильному то набір атрибутів.

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

Наприклад, модель групи студентів може виглядати:

  • м’я прізвище;
  •  дата народження;
  • ото студента;
  • група;
  • додаткові нотатки.
Ім’я Прізвище Фото Дата народження Група Нотатки
1. Іван Дурник   12.07.1995 МТФ-1  не має
2. Олена Прекрасна   31.03.1996 КФР-7  відмінниця
3. Василій Пупкін   24.08.1994 ДМР-5  хуліган

Питання #10 Що таке таблиця?

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

Питання #11 Що таке поле в таблиці?

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

Поля —  це стовпці, структура таблиці (поля формують модель таблиці).

А поле (англ. field) таблиці має тип — повторили ще раз поняття поля про яке вже теж говорили вище 😆

Питання #12 Що таке типи даних?

Типи даних поділяються на три категорії: числові, текстові, типи дати та часу.

Кожен запис у таблиці може очікувати даних різного типу: Наприклад: індетифікаційний номер платника податків — певної кількості чисел. Ім’я й Фамілію — букв.

Питання #13 Що таке кортежі?

Кортеж  — це так званий запис, один неявно структурований елемент в таблиці. Відповідно кортежі — це набір пов’язаних елементів даних в таблиці. Дивіться малюночок ілюстрацію, мною скопійовано із Вікіпедії на цю тему:

Кортежі в SQL

Питання #13 Що таке SQL

SQL (Structured English QUEry Language) — це мова програмування, яка застосовується для створення, модифікації та керування даними в будь-якій реляційній базі даних, керованої відповідною системою управління базами даних (СУБД). Використовується в MySQL, PostgreSQL і так далі.

Питання #14 Які різні типи команд SQL Ви знаєте?

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

Розрізняють типи команд SQL:

  1. DDL — Data Definition Language
  2. DML — Data Manipulation Language
  3. DCL — Data Control Language
  4. TCL — Transactional Control Language

Питання #15 Поясніть команди DDL. Які різні команди DDL в SQL Ви знаєте?

DDL ( Data Definition Language) — це команди в SQL, які використовується для визначення або зміни структури бази даних. Ось перед тим як створити Базу Даних, слід за допомогою таких команд створити таблиці і за необхідності інші сутності.

Приклади команд DDL в SQL:

  • REATE — використовується для створення таблиці в базі даних;
  • DROP —  видаляє таблицю з бази даних;
  •  ALTER — змінює структуру бази даних;
  •  TRUNCATE — видаляє всі записи з бази даних, але не його структуру бази даних;
  • RENAME — перейменовує об’єкт бази даних.

Питання #16 Поясніть команди DML. Які різні команди DML у SQL Ви знаєте?

DML (Data Manipulation Language)  — це прості команди, які використовується для управління даними, що містяться в базі даних. Деякі з команд DML — вибрати (SELECT), вставити (INSERT), оновити (UPDATE), видалити (DELETE) тощо.

Питання #17 Поясніть команди DCL. Які різні команди DCL в SQL відомі Вам?

DCL (Data Control Language) — ці команди використовуються для створення ролей, надання дозволу та контролю доступу до об’єктів Бази Даних користувачам.

Команди DCL:GRANT — надає дозвіл користувачеві до бази даних;

REVOKE — видаляє права доступу  користувача;

  • DENY — явно забороняє певному користувачеві, що належить групі, отримувати елементи керування доступом. Більш детальніше про цей оператор SQL можна дізнатися тут

Питання #18 Поясніть команди TCL. Які різні команди TCL в SQL?

TCL (Transaction Control Language) — команди використовується для управління змінами, зробленими за допомогою операторів DML. Вони використовуються для обробки групи операторів SQL, що містять логічну одиницю.

Команди TCL:

  •  
  • COMMIT — завершити транзакцію і зафіксувати усі зміни в Базі Даних;
  •  
  • SAVEPOINT — точки зупинки, вони поділяють транзакцію на менші логічні одиниці, які можуть бути додатково відібрані;
  •  
  • SET TRANSACTION — встановити деякі умови виконання транзакцій;
  • ROLLBACK —  відмінити транзакцію та зробити відновлення бази даних з часу останньої зміни.

Питання #19 Що таке SQL обмеження?

Обмеження SQL — це набір правил, що накладають деяке обмеження при вставці, видаленні або оновленні даних в базах даних. У SQL ми маємо обмеження як рівня стовпця, так і обмеження рівня таблиці, які застосовуються відповідно до стовпців та таблиць відповідно. Деякими обмеженнями (Data Integrity Constraints) в SQL є: Primary Key, Foreign Key, Unique Key, Not NULL, DEFAULT, CHECK та Index.

Питання #20 Що таке унікальне обмеження?

Унікальне обмеження використовується для забезпечення того, що поле / колонка матиме єдине значення (без дублікатів) у базі даних.

ЗВЕРНІТЬ УВАГУ! На обмеження перевірки CHECK використовується для обмеження множини значень, які можуть бути поміщені в даний стовпчик. Це обмеження використовується для цілісності Бази Даних з точки зору її структури.

Питання #21 Що таке ключі?

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

Існують ключі двох типів: первинні (Primary Key) і вторинні (зовнішні Foreign Key).

Питання #22 Що таке Primary Key?

Primary Key (Головний, Первинний ключ) — це стовпець або комбінація стовпців, які однозначно ідентифікують запис у базі даних. Первинний ключ може мати лише унікальні значення, а не значення NULL, і в таблиці може бути тільки один первинний ключ. Головна роль первинного ключа — підтримувати цілісність БД.

Питання #23 Що таке Foreign Key?

Foreign Key (Вторинний, Зовнішній ключ) —  використовується для забезпечення реферальної цілісності бази даних. Стовпчик або сукупність стовпців, які в одній таблиці не позначені первинним ключем, але є первинними ключами в іншій таблиці.

Приклади Primary Key & Foreign Key:

Як Foriegn ключ у одній таблиці, пов’язаний з первинним ключем іншої таблиці. За допомогою цього відношення ми поєднуємо дані з зовнішнього ключа, з відповідними даним у первинному ключі іншої таблиці. Дані з Foreign Key мають відповідати даним із  Primary Key.

https://www.quality-assurance-group.com/wp-content/uploads/2018/04/Example-Foreign-Primary-Key.png.pagespeed.ce.I6mIovfCGm.png

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

Існує 4 типи первинних ключів:

  •  
  • ключові поля лічильника (лічильник);
  •  
  • простий ключ (Simple Primary Key);
  •  
  • складений ключ(Composite Primary Key);
  • сурогатний ключ (Surrogate Primary Key).

Питання #24 Що таке тип даних лічильник у БД?

Поле лічильника (тип даних «Лічильник») — це коли для кожного запису поля таблиці автоматично заноситься унікальне числове значення.

Питання #25 Що таке простий ключ?

Простий ключ (Simple Primary Key) — використовує тільки 1 поле для ідентифікації запису, якщо поле містить унікальні значення, такі як коди чи інвентарні номери, то це поле можна визначити як первинний ключ. Окрім того, визначити як простий ключ, якщо це поле не містить повторювані значення або значення Null.

Питання #26 Яка різниця між унікальним ключовим та первинним ключем?

(UNIQUE & PRIMARY KEY) Унікальний ключ допускає нульове значення (хоча тільки одне), але первинний ключ не дозволяє нульового значення.

У таблиці може бути кілька унікальних стовпчиків клавіш, тоді як там може бути тільки один первинний ключ.

Унікальний ключовий стовпець створює некластерний індекс, тоді як первинний ключ створює кластеризований індекс у стовпці.

Питання #27 Що таке складений ключ?

Складений ключ (composite key, комбінований ключ) — є первинним ключем з кількома стовпчиками. Оскільки у випадку деяких таблиць одне поле може не гарантувати унікальних не нульових значень, тому первинним ключем вважається комбінація декількох полів. Інше визначення це коли у таблиці є кілька Foreign Key.

Питання #28 Що таке штучний або сурогатний ключ?

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

Питання #29 Чи може бути у таблиці визначено більше одного Foreign key?

Так, може. У таблиці можна визначати будь-яку кількість зовнішніх ключів. Але головний (Primary Key)  може бути визначити лише один.

Питання #30 Що таке значення NULL?

Значення NULL у SQL є невідомим чи порожнім значенням. Оскільки значення NULL є невідомим значенням, значення NULL не можна порівнювати з іншими значеннями NULL. Отже, ми не можемо використовувати оператор ‘=’, де умова з NULL. Для цього ми маємо оператор у СУБД IS NULL, яка перевіряє, є значення в полі NULL чи ні.

Питання #31 Чи може значення стовпців на які накладений Foreign Key дорівнювати Null?

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

Питання #32 Що таке “не нульове обмеження”?

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

Питання #33 Що таке Check constraint?

Це обмеження значення, введеного в поле. Використовується як перевірка. Наприклад, ми можемо гарантувати, що поле “Зарплата” може мати значення більше 1000, використовуючи перевірочні обмеження.

Питання #34 Яку максимальну кількість CHECK Constraint можна визначити в стовпці?

Не має обмеження.

Питання #35 Що таке обмеження за замовчуванням?

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

Питання #36 Що таке обмеження цілісності?

Обмеження цілісності (Integrity Constraint) — це правило яке обмежує значення до стовпця в таблиці.

Питання #37 Що таке Референтна цілісність?

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

Питання #38 Яка різниця між функціями Rename and Alias?

Перейменування (Rename) — це постійне ім’я, наведене для таблиці або стовпчика, а псевдонім (Alias) — це тимчасове ім’я, що надається таблиці або стовпчику, які вже не існують після виконання оператора SQL.

Питання #39 Що таке Синонім?
Синонім — це alias певної послідовності чи програмного блоку у таблиці.Існує два типи синонімів: приватні (Private) і загальнодоступні(Public).
До даних з приватними синонімами доступ може отримати лише власник. Публічний синонім може бути доступним будь-якому користувачеві в базі даних.

Питання #40 Які типи зв’язків у Базі Даних Ви знаєте?

Механізм зв’язків працює шляхом зіставлення даних у ключових стовпцях. Зазвичай це стовпці з однаковим іменем у декількох таблицях.

Існує 3 типи логічних зв’язків між таблицями:

Один-до-одного — кожному запису з однієї таблиці відповідає один запис у іншій таблиці.

Зв’язок один-до-одного створюється коли є певні обмеження по первинному ключу або унікальності. Відношення один-до-одного створюється у тому випадку, коли обидва поля є ключовими або мають унікальні індекси.

Один-до-багатьох — одному запису з однієї таблиці відповідає кілька записів у іншій таблиці.

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

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

У більшості випадків логічні зв’язки між таблицями це є зіставлення Primary Key однієї таблиці та Foreign Key другої таблиці.

Питання #41 Що таке індекси в Базі Даних і для чого їх використовують?

Індекси — це спеціальні структури у базах даних, які допомагають прискорити пошук та сортування даних по визначеному полю або набору полів. Використовуються для забезпечення унікальності даних. Найпростіше індекси порівняти зі змістом у книзі. Якщо у книзі не має змісту із вказівниками, для того щоб відшукати потрібну інформацію нам потрібно буде пролистувати багато сторінок доки не знайдемо потрібне місце. А з вказівником (індексом) — ми одразу відкриваємо на потрібній сторінці. Чим більше індексів у таблиці, тим більша продуктивність запитів до Бази Даних. Проте при надлишковому збільшенні індексів — падає швидкість операцій зміни даних (вставка/зміна/видалення), тому слід дотримуватися міри.

Питання #42 Назвіть негативну сторону використання індексів?

Більш швидші вибірки досягаються, за допомогою втрат гнучкості БД. Всі наступні зміни вносяться значно повільніше, бо багато часу витрачається на переналаштування індексів (фрагментація/дефрагментація). Для зберігання індексів потрібні додаткові витрати часу.

Питання #43 Які принципи створення індексів?

  • Індекси необхідно створювати для стовпців, які використовуються в Джойна, за якими часто проводиться пошук і операції сортування. При цьому необхідно врахувати, що індекси завжди автоматично створюються для стовпців, на які накладається обмеження Primary key. Найчастіше вони створюються і для стовпців з Foreign key;
  • Індекс обов’язково в автоматичному режимі створюється СУБД для стовпців, на які накладено обмеження унікальності;
  • Найкраще індекси створювати для тих полів, в яких мінімальне число повторюваних значень і дані розподілені рівномірно. У Oracle є спеціальні бітові індекси для стовпців з великою кількістю повторюваних значень, в SQL Server і Access такого різновиду індексів не передбачено;
  • Якщо пошук постійно проводиться за певним набором стовпців (одночасно), то в цьому випадку, можливо, є сенс створити композитний індекс (тільки в SQL Server)  — один індекс для групи стовпців;
  • При внесенні змін до таблиці автоматично змінюються і індекси, накладені на цю таблицю. В результаті індекс може бути сильно фрагментований, що позначається на продуктивності. Періодично слід перевіряти ступінь фрагментації індексів і дефрагментувати їх. При завантаженні великої кількості даних іноді варто спочатку видалити всі індекси, а після завершення операції створити їх заново;
  • Індекси можна створювати не тільки для таблиць, але і для сутностей (тільки в SQL Server). Переваги — можливість обчислювати поля не в момент запиту, а в момент появи нових значень в таблицях.

Питання #44 Які є типи індексів?

Унікальний індекс, індекс первинного ключа, кластеризований індекс, некластеризований, повнотекстовий.

Питання #45 Що таке кластеризований індекс?

Кластеризовані індекси фізично сортують рядки в таблиці на основі кластеризації (за замовчуванням — Primary key). Кластеризований індекс допомагає швидко вилучати дані з баз даних. У таблиці може бути лише один кластерний індекс.

Питання #46 Що таке некластеризований індекс?

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

Питання #47 Яка різниця між кластеризованими і некластеризованими індексами?

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

Питання #48 Чи є зміст індексувати поля таблиці, які мають тип Boolean або з невеликою кількістю можливих значень?

Індекс по логічним значенням має зміст тільки у випадку коли ІСТИНА або ХИБА розподілені рівномірно по таблиці. Мінімально 1/3.

Питання #49 Коли повне скануванн       я таблиці вигідніше  доступу по індексу? Обгрунтуйте Ваш вибір?

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


Метки: ,
Copyright 2017. Все права защищены.

Опубликовано Февраль 12, 2019 master в категории "SQL", "Учёба