МIНIСТЕРСТВО ОСВIТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Звіт
про виконання лабораторної роботи № 1
з курсу «Бази даних та знань»
на тему «Розроблення проекту бази даних Microsoft SQL Server 2005»
Варіант №16
Мета роботи: ознайомитися зі структурою об’єктів баз даних Microsoft SQL Server 2005 та отримати навики розроблення проекту бази даних за допомогою інструментарію Management Studio.
Таблиця 4.1. Завдання до лабораторної роботи
№
п/п
Завдання
Створити базу даних (БД).
У цій БД створити схему з назвою, що відповідає прізвищу студента. Усі новостворювані об’єкти повинні належати цій схемі.
Побудувати усі необхідні об’єкти (таблиці, первинні ключі, вторинні ключі, зовнішні ключі, індекси, перевірні обмеження) для вказаної БД.
Внести у кожну таблицю БД як мінімум по 10 абстрактних записів (якщо кількість звісно не обмежується логікою).
Створити діаграму для повністю спроектованої БД. Таблиці повинні відображатися на діаграмі у стандартному режимі (ім’я стовпця, тип даних, дозволити знач. null) (рис. 2.17г). Зв’язки між таблицями відкоригувати так, щоб вказували між якими саме стовпцями вони встановлюють зв’язок.
Позначення: P.K. – первинний ключ; U.I. – унікальний індекс;
I. – неунікальний індекс; CHECK – перевірне обмеження.
16
БД електронного ресурсу з книгами (рис. 4.1).
P.K. – Користувачі→Логін; Книги→Назва.
I. – Користувачі→Місце народження; Користувачі→Прізвище + Ім’я + По-батькові; Користувачі→Рейтинг.
CHECK – Посилання→Електронний адрес книги повинен обов’язково містити стрічку 'www.' та '.ua' ; Значення Користувачі→Рейтинг повинне бути у межах [1; 10], при цьому тип даних допускає лише один розряд після коми; для Книги→УДК забезпечити формат: 1 кирилична буква + 2 цифри + '.' + 3 цифри.
Формула – для таблиці Користувачі створити поле, що об’єднує в собі Прізвище, Ім’я та По-батькові; для таблиці Користувачі створити поле, що виводило б кількість років користувачу, як різницю між поточною системною датою та датою народження.
Короткі теоретичні відомості, що необхідні
для виконання лабораторної роботи
Є декілька різних типів ключів:
Первинний – містить первинний вказівник на стрічку в таблиці;
Альтернативний – містить додаткові вказівники на стрічку в таблиці, довільні унікальні умови, що представляють один чи більшу кількість стовпців таблиці.
Зовнішній – містить вказівники на ключі в інших таблицях.
Первинні та альтернативні ключі – гібридні об’єкти: частково індекси, а частково обмеження. Обмеження оголошують, що для об’єкта повинен бути істинним певний фактор, а для ключів це озна-чає, що значення в таблиці повинні бути унікальними.
Індекси дають можливість організувати швидкий доступ до даних без пошуку по всій базі даних. Індекси керуються та зберігають-ся окремо від таблиць. Для побудови індексів 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 задаються порядкові номери. Проектанти баз даних, як правило, розшифровують його – вказують коротке формулювання його призначення, або вказують ім’я (імена) стовпця (стовпців), на який цей ключ чи обмеження поширюється.
Логічні вирази для усіх заданих у БД перевірних обмежень CHECK та значення формул для обчислювальних полів.
CHECK
Посилання→Електронний адрес книги повинен обов’язково містити стрічку 'www.' та '.ua':
([e_mail] like 'www.%%.ua')
Значення Користувачі→Рейтинг повинне бути у межах [1; 10], при цьому тип даних допускає лише один розряд після коми
([Reyting]>=(1) AND [Reyting]<=(10))
Книги→УДК забезпечити формат: 1 кирилична буква + 2 цифри + '.' + 3 цифри
([UDK] like '[а-яА-я][0-9][0-9][.][0-9][0-9][0-9]')
Формула – для таблиці Користувачі створити поле, що об’єднує в собі Прізвище, Ім’я та По-батькові; для таблиці Користувачі створити поле, що виводило б кількість років користувачу, як різницю між поточною системною датою та датою народження.
(([Surname]+[Name])+[Lastname])
(datepart(year,getdate())-datepart(year,[Birthday]))
Діаграма спроектованої бази даних.
Висновок: на цій лабораторній роботі я ознайомився із структурою об’єктів баз даних Microsoft SQL Server 2005 та отримав навики розроблення проекту бази даних, навчився створювати відношення один до багатьох, багато до багатьох, створювати CHECK обмеження на заповнення таблиць та формули для автоматичного обчислення і обробки даних.