Смекни!
smekni.com

Розробка складних інформаційно-пошукових систем (стр. 3 из 5)

Код відділу Назва
1 читальна зала для суспільнознавців
2 читальна зала для природничників
3 читальна зала для гуманітаріїв

Таблиця “бібліотекар” має 5 полів: ключове поле – “код бібліотекаря” з числовими даними, поле “прізвище” з тектовими даними, поле “освіта” з текстовими даними, поле “вік“ з числовими даними, поле “стаж” з числовими даними.

Код бібліотекаря Прізвище Освіта Вік Стаж
1 Ярошниченко Т.Я. вища 45 25
2 Мирошниченко Я.Т. вища 40 15
3 Фощенко Т.Т. вища 35 10

Таблиця “видавництво” має 5 полів: ключове поле – “код видавництва” з числовими даними, поле “назва” з текстовими даними, поле “індекс міста” з числовими даними, поле “місто” з текстовими даними, поле “адреса” з текстовими даними.

Код видавництва Назва видавництва Індекс міста місто Адреса
1000 Просвіта 252001 Київ вул.Шевченко,23
1001 Світанок 252123 Київ бул.Л.Українки,14
1002 Либідь 252001 Київ Хрещатик,10
1003 Вища школа 252054 Київ Гоголівська вул.,7
1004 Дніпро 252332 Київ вул.Милославська,10
1005 Книжна фабрика 252160 Київ вул.Перова,12
1006 ЛДУ 239170 Львів бул.Перемоги,27
1007 Высшая школа 101430 Москва Неглинная ул.,29/14
1008 ТДУ 108677 Тбілісі ул.Интернациональная,14
1009 Наука 128367 Москва 2-й Рижский пер.,3
1010 Вентурі 252003 Київ вул.Сосновська,6
1011 Random House New York
1012 Издательство Московского ууниверситета 103009 Москва ул.Большая Никитинская,5/7
1013 Heinemann Oublishers Oxford
1014 Діалектика 252022 Київ просп.Глушкова,6
1015 Инфра.М 127247 Москва Дмитровское шоссе,107
1016 Филин 128820 Москва Новопетровская ул.,1
1017 Мир 129820 Москва 1-й Рижский пер.,2
1018 Бином 103473 Москва ул.Новослободская,50
1019 Питер 197198 Санкт-Петербург ул.Благодатная,67
1020 И.В.К.-Софт 127147 Москва ул.Строительная,25
1021 Диалог-Мифи 126548 Москва ул.Закревского,9
1022 БорАГ 102111 Москва ул.Набережная,6
1023 Лингва 102110 Москва ул.Красноармейская,8

Таблиця “бібліотекар-відділ” має 2 ключових поля: “код відділу” та “код бібліотекаря”.

Код відділу Код бібліотекаря
1 3
2 2
3 1

Таблиця “відділ-книга” має 3 поля: ключові поля – “код книги” та “код відділу”, інше поле – “кількість” містить числові дані.

Код книги Код відділу Кількість
2 1 10
3 1 10
4 2 10
5 2 20
6 3 5
7 3 5
8 1 25
9 2 5
10 2 4
11 3 8
12 3 6
13 3 4
14 3 5
15 3 8
16 3 5
17 3 5
18 3 10
19 3 20
20 1 25
21 1 25
22 1 25
23 1 30
24 3 30
25 3 5
26 3 5
27 3 6
28 3 6
29 3 5
30 2 15
31 2 15
32 2 5
33 2 30
34 2 10
35 2 25
36 2 25
37 2 10
38 2 15
39 2 10
40 2 10
41 2 10
42 2 10
43 2 10
44 2 10
45 2 10
46 2 15
47 2 15
48 2 10
49 2 5
50 3 5
111 1 5

Таблиця “видавництво-книга” має 4 поля: з них два ключових – “код книги” та “код видавництва”, та інші два поля – “рік видання” – дані формату дат, “тираж” – числові дані.

Наступним важливим кроком в розробці бази даних було встановлення зв”язків між таблицями з врахуванням вимог третьої нормальної форми.

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

Розроблена база даних задовільняє вимогам першої номальної форми.

Друга нормальна форма: Вимоги для першої нормальної форми + : Кожна таблиця повинна мати унікальний ідентифікатор (первинний ключ). Всі

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

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

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

A1 A2 A3


Дана база даних задовільняє вимогам третьої нормальної форми.

Останній етап проектування бази даних – це створення зв”язків між таблицями. Оскільки Access не дозволяє визначати прямий зв”язок “багато-до-багатьох”, то треба створювати додаткову таблицю перетину, за допомогою якої один зв”язок “багато-до-багатьох” зводиться до двох зв”язків типу “один-до-багатьох”. Саме з таких міркувань була створена таблиця “абонемент” , вона розбиває прямий зв”язок типу “багато-до-багатьох” між “читачами” та “книгами” на два зв”язки типу “один-до-багатьох”.

Схема зв”язків між таблицями в базі даних “Бібліотека”.

Книга
Код книги
Назва
Автор
Абонемент
Код читача
Код книги
Дата взяття книги
Факт про повернення
Читач
Код читача
Прізвище
Ім”я
Номер факультету
Курс
Боржники
Код читача
Код книги
Дата взяття
Факт про повернення
Дата повернення
Бібліотекар
Код бібліотекаря
Прізвище
Освіта
Вік
Стаж
Факультет
Номер факультету
Повна назва
Керівник підрозділу
Відділ
Код відділу
Назва
Бібліотекар-відділ
Код відділу
Код бібліотекаря
Відділ-книга
Код книги
Код бібліотекаря
Кількість
Видавництво
Код видавництва
Назва
Індекс міста
Місто
Адреса
Видавництво-книга
Код книги
Код видавництва
Рік видання
Тираж

Вся робота з базою даних відбувається через запити. За їх допомогою можна взнати будь-яку інформацію про читача, книгу, видавництво, відділ, бібліотекаря та ін. За допомогою запитів можна змінювати, видаляти будь-яку інформацію в базі даних. Через запити проходить і процес роботи з читачами. Створені запити при їх запуску згідно з усіма раніше описаними принципами заносять, наприклад, студентів у список читачів-боржників, або видаляють їх звідти. Деякі запити були написані з використанням графічних можливостей QBE (запита за зразком), інші – безпосередньо мовою SQL, стандартною мовою якою користується Microsoft Access для роботи з даними. Для написання складних запитів з множинними порівняннями використовувався принцип підпорядкованих запитів, результати роботи яких використовувалися в якості умов відбору в інших запитах. Майже всі запити реалізовані через параметри, тобто при їх запуску система просить ввести значення якогось параметра, на основі якого потім буде відбуватися пошук необхідної інформації.

Найтиповіші запити по базі даних “Бібліотека”:

1) Знайти факультет, на якому навчається студент. SQL-запит:

SELECT DISTINCTROW факультет.[Повна назва], факультет.[Керівник підрозділу], читач.[Прізвище]&” “&[Ім”я] AS Выражение1

FROM факультет INNER JOIN [читач] ON факультет.[Номер факультету]=читач.Факультет

WHERE ((([читач].[Прізвище]&” “&[Ім”я])=[Введіть прізвище та ім”я

читача]);

2) Знайти прізвище читача, який читає таку-то книгу.