Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

sql server+c++

.pdf
Скачиваний:
18
Добавлен:
07.06.2015
Размер:
2.12 Mб
Скачать

Міністерство освіти та науки України Національний університет “Львівська політехніка”

Реєстр. № 2942

від 12.01.2010

Проектування реляційної бази даних

MS SQL Server 2005 та клієнтської програми на основі ADO.NET 2.0

Методичні вказівки та завдання до контрольної роботи

з курсу “Бази даних та знань”

для студентів базового напряму 6.0914 “Комп’ютеризовані системи, автоматика і управління” та базового напряму 050201 “Системна інженерія”

Затверджено на засіданні кафедри

“Комп’ютеризовані системи автоматики” Протокол № 4 від 28.12.2009

Львів 2010

Проектування реляційної бази даних MS SQL Server 2005 та клієнтської програми на основі ADO.NET 2.0: Методичні вказівки та завдання до контрольної роботи з курсу “Бази даних та знань” для студентів базового напряму 6.0914 “Ком- п’ютеризовані системи, автоматика і управління” та базового напряму 050201 “Системна інженерія” / Укл.: У.Ю. Дзелендзяк, А.Г. Павельчак, В.В. Самотий – Львів: Львівська політехніка. – 2010. – 115 с.

Укладачі: У.Ю. Дзелендзяк, к.т.н., доцент А.Г. Павельчак, к.т.н., ст. викладач В.В. Самотий, д.т.н., професор

Відповідальний за випуск:

А.Й. Наконечний, д.т.н., професор

Рецензент: З.Р. Мичуда, д.т.н., професор

Мета контрольної роботи:

1.закріпити отримані при вивченні даного курсу знання і навики проектування ER-моделі реляційної бази даних з використанням IE-нотації та реалізації цієї моделі для СКБД

Microsoft SQL Server 2005 у вигляді SQL-сценарію діалектом мови Transact-SQL;

2.ознайомитися з основними об’єктами моделі ADO.NET 2.0 та на їхній основі навчитися отримувати, модифікувати, зберігати, шукати та фільтрувати дані;

3.отримати навики розроблення клієнтських програм для баз

даних з ієрархічною організацією структури даних. Контрольна робота є підсумковою та передбачає самостійне

опрацювання частини інформації, що стосується моделі ADO.NET 2.0.

Етапи виконання контрольної роботи:

1.спроектувати графічну ER-модель реляційної бази даних з використанням IE-нотації;

2.реалізувати розроблену модель у вигляді SQL-скріпту, у результаті виконання якого має створитися фізична база даних та заповнитися першопочатковими даними;

3.розробити клієнтську Windows Forms програму мовою C++/CLI чи C# за допомогою інструментарію Microsoft Visual Studio .NET 2005 на основі моделі ADO.NET 2.0.

1. Поняття ER-діаграм баз даних

Модель «сутність-зв’язок» (Entity-Relationship model чи ER-мо-

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

Запропоноване П. Ченом графічне представлення ER-моделі зазнало еволюції, і на сьогоднішній день вона у своєму первісному вигляді вже не використовується. Натомість, сучасними інструментальними CASE-засобами підтримуються, як правило, такі дві методології побудови ER-діаграм – IE та IDEF1X.

1

Модель IDEF1X є результатом досліджень інтегрованих систем автоматизованого виробництва (ICAM), що проводилися у 1970 роках. Інтеграція графічних напрацювань ICAM для відображення структур даних отримала назву IDEF, а в оригінальній версії компанії Hughes Aircraft – IDEF1. Розширена версія цієї моделі, під назвою IDEF1X, була «прийнята на озброєння» ВВС США, і завдяки цьому набула широке розповсюдження.

Table1

Table3

Table2

Table4

ID1

ID1 (FK)

ID2

ID4

Name

ID2 (FK)

Subject

Model

 

 

 

ID4 (FK)

 

Рис. 1.1. Зображення структури БД у IDEF1X-нотації

Методологія IE (Information Engineering – інформаційна інже-

нерія) побудована на моделі Crow’s Foot (воронячої чи пташиної лапки), що розроблена К.В. Бахманом (C.W. Bachman). Ця модель є достатньо розповсюдженою, завдяки своєму простому візуальному відображенню ER-діаграм.

Table1

Table3

Table2

Table4

ID1

ID1 (FK)

ID2

ID4

Name

ID2 (FK)

Subject

Model

 

 

 

ID4 (FK)

 

Рис. 1.2. Зображення структури БД у IE-нотації

Слід зазначити, що у різних інструментальних CASE-засобах методологія IE може мати незначні відмінності у представленні елементів на ER-діаграмах. Серед найвідоміших CASE-засобів можна відзначити такі:

CA ERwin Data Modeler компанії Computer Associates (CA);

ER/Studio виробництва Embarcadero Technologies, Inc.;

Toad Data Modeler виробництва Quest Software, Inc.

2

2. Схематичне зображення IE-нотації

Основу будь-якої ER-діаграми складають такі три елементи: таблиці, стовпці та зв’язки між таблицями.

2.1. Таблиці та стовпці.

УIE-нотації незалежні таблиці відображаються у прямокутнику

зпрямими кутами (рис. 2.1).

Ім’я таблиці

 

 

Student

 

 

 

 

 

 

Первинний

 

 

IDstud

INTEGER

IDENTITY

 

 

ключ

 

 

Surname

CHAR(20) NOT NULL (AK1.1)

 

 

 

 

 

 

Альтернатив-

 

 

 

Name

CHAR(15) NOT NULL (AK1.2)

 

ний ключ

 

 

 

Rating

INTEGER

NULL

 

 

 

 

 

Birthday

DATE

NULL (IE1.1)

 

 

 

Інверсний вхід

 

 

 

 

 

 

 

 

 

 

(неунікальний

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

індекс)

 

 

 

Ім’я

 

Тип

 

Null

 

 

 

 

 

 

 

 

 

 

 

 

стовпця

 

стовпця

 

опції

 

 

 

Рис. 2.1. Приклад визначення таблиці даних (Data Table)

Ім’я таблиці вказується зверху над прямокутником. Первинний ключ (PK, Primary Key) визначається у верхній час-

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

Тип стовпця (Column Datatype) вказується безпосередньо після його назви.

Null-опції (Null option) визначають один з таких параметрів:

NULL – вказує на допустимість у полях стовпця null-значень;

NOT NULL – null-значення є недопустимі;

IDENTITY – є ідентифікуючим стовпцем, тобто визначений як автоінкрементне поле. За замовчуванням такий стовпець починає лічбу від 1 та з одиничним приростом. Якщо потрібно вказати інші значення, тоді їх задають у дужках: IDENTITY(10, 5) – стартує з числа 10 та з приростом у 5 одиниць.

3

Альтернативний ключ (AK, Alternate Key) представляє собою унікальний потенційний ключ, який не є первинним. Цей ключ, аналогічно до первинного, може бути побудований як на одному стовпцеві, так бути і композитним. До альтернативних ключів на діаграмах відносять також і унікальні індекси. Позначення альтернативного ключа розшифровується так:

це число вказує на порядковий номер ключа у таблиці; якщо у таблиці три альтернативних ключі, тоді у інших ключів на цьому місці будуть стояти числа, відповідно, 2 та 3

це число вказує на порядко- (AK1.2) вий номер стовпця у ключі

означає, що це аль-

 

розділювач (іноді замість крапки

тернативний ключ

 

використовують двокрапку : )

Рис. 2.2. Розшифрування позначення альтернативного ключа

Інверсний вхід (IE, Inversion Entry) – це стовпець або набір стовпців, що унікально не ідентифікують стрічок таблиці, але через які часто звертаються до даних цієї таблиці. Іншими словами, інверсний вхід представляє собою неунікальний індекс. Позначення є схожим до позначення альтернативного ключа, лише замість AK вписується IE.

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

Security

Зовнішній ключ

 

IDstud (FK) INTEGER

Password CHAR(20)

Рис. 2.3. Приклад визначення залежної таблиці даних (Subset Table)

4

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

Student

 

 

Security

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IDstud

 

INTEGER

 

 

IDstud (FK)

 

INTEGER

 

 

Surname

CHAR(20)

 

Password

 

CHAR(20)

 

Name

CHAR(15)

 

 

 

 

 

 

rating

INTEGER

 

 

 

 

 

 

birthday

DATE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Parent

ID INTEGER

Name CHAR(10)

Surname CHAR(10)

Child

ChildName CHAR(10)

ID_Par (FK) INTEGER

Birthday DATE

Рис. 2.4. Приклади ідентифікації залежних таблиць

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

2.2. Зв’язки.

УER-діаграмах використовують такі два типи зв’язків:

Ідентифікуючий зв’язок – це такий зв’язок, що з’єднує дві таблиці у яких первинні ключі чи їхня частина співпадають. Тобто, потенційний ключ з базової таблиці мігрує у первинний ключ підлеглої таблиці. На ER-діаграмах такий вид зв’язку позначається суцільною лінією (рис. 2.5).

Primary

 

Slave

ID

 

ID_Pr (FK)

Name

 

Password

 

 

 

Рис. 2.5. Ідентифікуючий зв’язок

5

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

Group

Student

ID_gr

GroupName

ID_st

ID_gr (FK)

Surname

Рис. 2.6. Неідентифікуючий зв’язок

У IE-нотації для позначення кардинального числа (кількості стрічок, що беруть участь у зв’язку) однієї зі сторін реляційного зв’язку використовують такі позначення «пташиної лапки»:

 

Table

Table

 

Table

 

ID

 

ID

 

ID

 

 

Name

 

Name

або

Name

 

Рис. 2.7. Позначення сто-

Рис. 2.8. Позначення сторони

рони зв’язку «один до…»

зв’язку «нуль або один до…»

Позначення сторони зв’язку «один» (рис. 2.7) означає, що кожна стрічка таблиці обов’язково бере участь в індивідуальному зв’язку.

Позначення сторони зв’язку «нуль або один» (рис. 2.8) означає, що кожна стрічка таблиці може брати участь у зв’язку, а може і не брати, але не більше, аніж однієї стрічки у зв’язку. Стрічки, що не беруть участь у зв’язку, мають у сполучному полі null-значення.

6

 

Table

 

Table

 

Table

 

ID

 

 

ID

 

ID

 

 

Name

 

 

Name

або

Name

 

Рис. 2.9. Позначення сторони

 

Рис. 2.10. Позначення сторони

зв’язку «один або багато до…»

зв’язку «нуль, один або багато до…»

Позначення сторони зв’язку «один або багато» (рис. 2.9) означає, що у зв’язку беруть участь від однієї до багатьох стрічок. При цьому усі стрічки таблиці мають обов’язково брати участь у зв’язку.

Позначення сторони зв’язку «нуль, один або багато» (рис. 2.10) означає, що кожна стрічка таблиці може брати участь у зв’язку, а може і не брати, при цьому у зв’язку одночасно беруть участь від однієї до багатьох стрічок. Стрічки, що не задіяні у зв’язках, мають у сполучних полях null-значення.

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

 

Table

 

 

 

Table

 

 

ID

 

 

 

ID

 

 

 

6

 

 

 

(5,20)

 

Name

 

 

Name

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.11. Позначення сторо-

Рис. 2.12. Позначення сторо-

ни зв’язку «точно до…»

ни зв’язку «(min, max) до…»

Позначення сторони зв’язку «точно» (рис. 2.11) вказує на те, що кількість стрічок на стороні «багато» не може перевищувати вказаного числа. Наприклад, відношення 1 : 6 відповідає визначенню «один до багатьох», але містить вказівку, що на стороні «багато» кількість стрічок не може перевищувати шести.

Позначення сторони зв’язку «(min, max)» (рис. 2.12) регламентується бізнес-правилом, згідно якого визначається кількість учасників з цього боку зв’язку. Наприклад, між таблицями GROUP та STUDENT можемо встановити зв’язок 1 : (5,20), який вимагатиме присутність у кожній групі не менше 5 студентів, але і не більше 20.

7

Основні види зв’язку між двома таблицями:

а) Ідентифікуючий зв’язок «один до одного».

ця лінія вказує на те, що одній стрічці у таблиці Security ставиться у відповідність лише одна стрічка з таблиці Person

Car

 

 

 

 

Color

 

ID

 

IDENTITY

 

 

має

 

ID (FK)

 

NOT NULL

 

 

 

Model

NULL

 

 

 

 

IDColor NOT NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ця лінія вказує на те, що одній стрічці у таблиці Person ставиться у відповідність лише одна стрічка з таблиці Security

б) Ідентифікуючий зв’язок «один до нуля, одного чи багатьох».

ця лінія вказує на те, що одній стрічці у таблиці Group ставиться у відповідність лише одна стрічка з таблиці Course

Course

 

Group

 

 

 

 

NameCRS

NOT NULL

належать

 

NameGRP

 

NOT NULL

 

 

 

 

 

 

 

 

 

 

Institute NOT NULL

 

 

NameCRS (FK)

NOT NULL

 

 

 

Note

 

NULL

 

 

 

 

 

 

 

 

 

 

 

 

цей «воронячий слід» з кружечком вказує на те, що одній стрічці у таблиці Course ставиться у відповідність нуль або декілька стрічок з таблиці Group

в) Неідентифікуючий зв’язок «один до нуля, одного чи багатьох».

Course

 

Group

 

 

 

 

NameCRS

NOT NULL

належать

 

NameGRP

 

NOT NULL

 

Institute NOT NULL

 

 

 

 

 

 

 

 

NameCRS (FK)

NOT NULL

 

 

 

 

 

Note

 

NULL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

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