eМІНІСТЕРСТВО ОСВІТИІ НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА
Лабораторна робота №1
з дисципліни
"Бази даних та знань"
Розроблення проекту бази даних Microsoft SQLServer 2005
Варіант №12
Львів – 2012
Мета роботи:ознайомитися зі структурою об’єктів баз даних Microsoft SQL Server 2005 та отримати навики розроблення проекту бази даних за допомогою інструментарію ManagementStudio.
Завдання до лабораторної роботи.
Створити базу даних (БД).
У цій БД створити схему з назвою, що відповідає прізвищу студента. Усі новостворювані об’єкти повинні належати цій схемі.
Побудувати усі необхідні об’єкти (таблиці, первинні ключі, вторинні ключі, зовнішні ключі, індекси, перевірні обмеження) для вказаної БД.
Внести у кожну таблицю БД як мінімум по 10 абстрактних записів (якщо кількість звісно не обмежується логікою).
Створити діаграму для повністю спроектованої БД. Таблиці повинні відображатися на діаграмі у стандартному режимі (ім’я стовпця, тип даних, дозволити знач. null) (рис. 2.17г). Зв’язки між таблицями відкоригувати так, щоб вказували між якими саме стовпцями вони встановлюють зв’язок.
Позначення: P.K. – первинний ключ; U.I. – унікальний індекс;
I. – неунікальний індекс; CHECK – перевірне обмеження.
БД родинного дерева (рис. 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генерує унікальне значення, а в графічній компоненті розробникаManagementStudio задаються порядкові номери. Проектанти баз даних, як правило, розшифровують його – вказують коротке формулювання його призначення, або вказують ім’я (імена) стовпця (стовпців), на який цей ключ чи обмеження поширюється.
Логічні вирази для усіх заданих у БД перевірних обмежень CHECK та значення формул для обчислювальних полів.
CHECK у полі Фамільне дерево →Місце смерті допускається ввід лише таких значень: 'с. Стрілки', 'с. Підкопане', 'с. Ярів' ; ([Misce_smerti]='с.Яворів' OR [Misce_smerti]='с.Підкопне' OR [Misce_smerti]='с.Стрілки')
CHECK – поле Фамільне дерево→Дата народження не може бути більшим за поточну дату.
([Data_narogenna]<getdate())
Формули
для таблиці Фамільні цінності створити поле, що виводитиме таке значення: 'Назва цінності: ' + Назва цінності;
('Nazva_cinnosti:'+[Nazva_cinnosti])
для таблиці Фамільне дерево створити поле, що виводитиме числовий код згідно такого арифметичного виразу: Рік народження + номер місяця народження + день місяця народження.
((datepart(year,[Data_narogenna])+datepart(month,[Data_narogenna]))+datepart(day,[Data_narogenna]))
Діаграма спроектованої бази даних.
/
Висновок:
На цій лабораторній роботі я ознайомилась із структурою об’єктів баз даних Microsoft SQL Server 2005 та отримала навики розроблення проекту бази даних за допомогою інструментарію ManagementStudio, навчилась створювати відношення один до одного, один до багатьох, створювати CHECK обмеження на заповнення таблиць та формули для автоматичного обчислення і обробки даних.