REFERATUA.ORG.UA — База українських рефератів



Головна Інформатика, комп'ютери, програмування → Розробка складних інформаційно-пошукових систем

унікальний ідентифікатор (первинний ключ). Всі

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

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

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

Розробка складних інформаційно-пошукових системРозробка складних інформаційно-пошукових системРозробка складних інформаційно-пошукових системРозробка складних інформаційно-пошукових системA1 A2 A3

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

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

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

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

Книга

Код книги

Назва

Автор

Абонемент

Код читача

Код книги

Дата взяття книги

Факт про повернення

Читач

Код читача

Прізвище

Ім"я

Номер факультету

Курс

Боржники

Код читача

Код книги

Дата взяття

Факт про повернення

Дата повернення

Бібліотекар

Код бібліотекаря

Прізвище

Освіта

Вік

Стаж

Факультет

Номер факультету

Повна назва

Керівник підрозділу

Відділ

Код відділу

Назва

Бібліотекар-відділ

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

Відділ-книга

Код книги
Код бібліотекаря

Кількість

Видавництво

Код видавництва

Назва

Індекс міста

Місто

Адреса

Видавництво-книга

Код книги
Код видавництва

Рік видання

Тираж

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

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

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

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

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

    WHERE ((([читач].[Прізвище]&" "&[Ім"я])=[Введіть прізвище та ім"я читача]); 2) Знайти прізвище читача, який читає таку-то книгу.

    SELECT DISTINCTROW читач.Прізвище, читач.[Ім"я], книга.Назва

    FROM [читач] INNER JOIN (книга INNER JOIN абонемент ON книга.[Код книги]=абонемент.[Код книги]ON читач.[КОд читача]=абонемент.[Код читача]

    WHERE (((книга.Назва)=[Введіть назву книги]));

    3) Який факультет очолює такий-то декан ?

    SELECT DISTINCTROW факультет.[Повна назва], факультет.[Керівник підрозділу]

    FROM факультет

    WHERE (((факультет.[Керівник підрозділу])=[Введіть прізвище декану]));

  • Знайти всіх студентів, які навчаються на такому-то курсі.

    SELECT DISTINCTROW читач.[Код читача], читач.Прізвище, читач.[Ім"я], читач.Курс

    FROM [читач]

    WHERE (((читач.Курс)=[Введіть курс]));

  • Знайти назви книг та місця, де вони були видані, якщо роки їх видання з

    такого-то по такий-то рік.

    SELECT DISTINCTROW [видавництво-книга].[Рік видання], книга.Назва, книга.Автор, видавництво.[Назва видавництва], видавництво.місто

    FROM книга INNER JOIN (видавництво INNER JOIN [видавництво-книга] ON видавництво. [Код видавництва]=[видавництво-книга].[Код видавництва] ON книга.[Код книги]=[видавництво-книга].[Код книги]

    WHERE ((([видавництво-книга].[Рік видання]) BETWEEN [Введіть перший рік випуску] AND [Введіть останній рік випуску]));

  • За номером відділу знайти його повну назву та бібліотекаря, який там

    працює.

    SELECT DISTINCTROW бібліотекар.Прізвище, відділ.[Код відділу], відділ.Назва

    FROM відділ INNER JOIN (бібліотекар INNER JOIN [бібліотекар-відділ] ON бібліотекар.[Код


  •  
    Загрузка...