Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра КСА
Звіт
про виконання лабораторної роботи №1
з курсу “Бази даних та знань”
На тему: Розроблення проекту бази даних
Microsoft SQL Server 2005
Варіант №12
Львів-2009р.
Мета роботи: ознайомитися зі структурою об’єктів баз даних Microsoft SQL Server 2005 та отримати навики розроблення проекту бази даних за допомогою інструментарію Management Studio.
№
п/п
Завдання
Створити базу даних (БД).
У цій БД створити схему з назвою, що відповідає прізвищу студента. Усі новостворювані об’єкти повинні належати цій схемі.
Побудувати усі необхідні об’єкти (таблиці, первинні ключі, вторинні ключі, зовнішні ключі, індекси, перевірні обмеження) для вказаної БД.
Внести у кожну таблицю БД як мінімум по 10 абстрактних записів (якщо кількість звісно не обмежується логікою).
Створити діаграму для повністю спроектованої БД. Таблиці повинні відображатися на діаграмі у стандартному режимі (ім’я стовпця, тип даних, дозволити знач. null) (рис. 2.17г). Зв’язки між таблицями відкоригувати так, щоб вказували між якими саме стовпцями вони встановлюють зв’язок.
Позначення: P.K. – первинний ключ; U.I. – унікальний індекс;
I. – неунікальний індекс; CHECK – перевірне обмеження.
12
БД родинного дерева (рис. 4.2).
P.K. – Фамільне дерево→Прізвище + Ім’я; Сімейні супутники →
Прізвище + Ім’я; Фамільні цінності→Код у каталозі цінностей.
I. – Сімейні супутники →Місце народження; Фамільне дерево→
Місце народження.
U.I. – Фамільні цінності →Назва цінності.
CHECK – у полі Фамільне дерево →Місце смерті допускається
ввід лише таких значень: 'с. Стрілки', 'с. Підкопане', 'с. Ярів' ;
поле Фамільне дерево→Дата народження не може бути більшим
за поточну дату.
Формула – для таблиці Фамільні цінності створити поле, що
виводитиме таке значення: 'Назва цінності: ' + Назва цінності;
для таблиці Фамільне дерево створити поле, що виводитиме
числовий код згідно такого арифметичного виразу: Рік народ-
ження + номер місяця народження + день місяця народження.
Створення ключів та реалізація обмежень бази даних.
Є декілька різних типів ключів:
Первинний – містить первинний вказівник на стрічку в таблиці;
Альтернативний – містить додаткові вказівники на стрічку в таблиці, довільні унікальні умови, що представляють один чи більшу кількість стовпців таблиці.
Зовнішній – містить вказівники на ключі в інших таблицях.
Первинні та альтернативні ключі – гібридні об’єкти: частково індекси, а частково обмеження. Обмеження оголошують, що для об’єкта повинен бути істинним певний фактор, а для ключів це означає, що значення в таблиці повинні бути унікальними.
Індекси дають можливість організувати швидкий доступ до даних без пошуку по всій базі даних. Індекси керуються та зберігаються окремо від таблиць. Для побудови індексів SQL Server використовує структуру В-дерева (B-tree, Balanced-tree), що складається з кореня, проміжних вузлів та кінцевих вузлів (листків). Деревовидна структура дає можливість організувати швидкий та ефективний пошук, в іншому ж випадку, серверу довелось би почергово зчитувати кожну сторінку даних таблиці в пошуку потрібного запису. Проіндексованим може бути як окремий стовпець, так і сукупність вибраних стовпців.
За своєю структурою індекси поділяються:
Кластерний індекс зберігає сторінки даних таблиці на рівні листків В-дерева, при цьому дані фізично впорядковані згідно ключа. Для кожної таблиці можна визначити лише один кластерний індекс (!!!). При створенні такого індексу відбувається фізичне сортування даних у відповідності до індексу, та перебудова всіх некластерних індексів. Як правило, кластерні індекси створюють для первинних ключів, хоча можуть бути створені й для довільного стовпця. Оптимальним варіантом вважають такий, коли індексовані значення для кластерного ключа унікальні. Якщо ж значення не унікальні, тоді SQL Server створює додаткові ключі сортування для стрічок, що мають дублікати для основних ключів сортування.
Некластерний індекс на рівні листків В-дерева містить вказівник на стрічку даних, що відповідає ключу в індексі. Якщо таблиця вже має кластерний індекс, тоді вказівник вказує на його ключ, а не на дані. Якщо ж кластерний індекс відсутній, тоді вказівник вказує на реальну стрічку даних. При створенні некластерного індексу SQL Server створює необхідні сторінки індексу, але не змінює фізичного розташування табличних даних, і не видаляє інші індекси таблиці. Кожна таблиця може мати до 249 некластерних індексів.
Обмеження – це формулювання певних вимог до даних. Обмеження встановлюються на рівні стовпця чи таблиці та забезпечують відповідність даних визначеним правилам забезпечення їхньої цілісності.
Серед методів реалізації обмежень розрізняють такі:
PRIMARY KEY – обмеження первинного ключа.
FOREIGN KEY – обмеження зовнішнього ключа.
UNIQUE – обмеження унікальності, або альтернативного ключа.
CHECK – обмеження перевірки.
DEFAULT – обмеження заданих за замовчуванням значень.
Правила.
Також ще до цих методів відносять задані за замовчуванням значення на рівні таблиці, тригери та збережувані процедури.
Способи іменування ключів та обмежень. Імена ключів та обмежень у системі SQL Server можуть бути довільними, у межах загально дозволеного іменування. Система генерує імена таким чином: скорочена абревіатура у виді двох букв + назва таблиці + унікальне доповнення:
PK_TableName_Definition – первинний ключ;
IX_TableName_Definition – унікальний ключ / індекс;
FK_TableName_Definition – зовнішній ключ;
CK_TableName_Definition – обмеження перевірки;
Таке позначення є прийнятним і зрозумілим. SQL Server як Definition генерує унікальне значення, а в графічній компоненті розробника Management Studio задаються порядкові номери. Проектанти баз даних, як правило, розшифровують його – вказують коротке формулювання його призначення, або вказують ім’я (імена) стовпця (стовпців), на який цей ключ чи обмеження поширюється.
Створення первинного ключа таблиці
(PRIMARY KEY).
Первинні ключі являють собою унікальні ідентифікатори для кожної стрічки. SQL Server дає можливість визначити в якості первинного ключа будь-який стовпець чи групу стовпців, які повинні містити унікальні значення (наявність null-значень не дозволяється !!!). Найбільш імовірними кандидатами на цю роль є, як правило, ідентифікуючі стовпці. Таблиця може мати лише один первинний ключ. Крім того, якщо використовується складовий ключ із декількох стовпців, тоді значення всіх стовпців об’єднуються, для визначення унікальності стрічок.
Вибір первинного ключа – один із найважливіших виборів, що робиться для конкретної таблиці, оскільки первинний ключ буде мігрувати в інші таблиці як вказівник на конкретне значення.
Створення реляційних зв’язків за допомогою зовнішніх ключів (FOREIGN KEY).
Зовнішні ключі призначені для забезпечення цілісності даних та для створення зв’язків між таблицями. В базі даних зовнішній ключ – це стовпець (чи сукупність стовпців), що співпадає з первинним (унікальним) ключем певної таблиці. Якщо значення зовнішнього ключа відповідає значенню первинного (унікального) ключа, то стає зрозумілим, що між об’єктами бази даних, які представлені співпадаючими стрічками таблиць, існує логічне взаємовідношення.
Основним обмеженням відношення є цілісність посилання. Воно визначає, що кожне значення (не null) зовнішнього ключа, повинно посилатися на певне існуюче значення первинного (унікального) ключа. Іншими словами, якщо хтось один посилається на когось іншого, то той «інший» має існувати, інакше система видасть помилку.
Такий спосіб обмеження дає можливість будувати різноманітні відношення між даними у базі даних:
відношення «один до багатьох»;
відношення «багато до багатьох»;
зворотні (рекурсивні) відношення.
Логічні вирази для усіх заданих у БД перевірних обмежень CHECK та значення формул для обчислювальних полів
Check 1
([Misce_smerti]='с.Ярів' OR [Misce_smerti]='с.Підкопане' OR [Misce_smerti]='с.Стрілки')
Check 2
([Data_narodgennja]<getdate())
Formula1
('Nazva_cinnosti:'+[Nazva_cinnosti])
Formula2
((datepart(year,[Data_narodgennja])+datepart(month,[Data_narodgennja]))+datepart(day,[Data_narodgennja]))
Діаграма спроектованої бази даних
Висновки:Виконуючи дану лабораторну роботу я ознайомився зі структурою об’єктів баз даних Microsoft SQL Server 2005 та отримав навики розроблення проекту бази даних за допомогою інструментарію Management Studio.