Главная > Информатика, программирование > Приклад проектування бази даних "Бібліотека"

Приклад проектування бази даних "Бібліотека"


25-01-2012, 11:10. Разместил: tester9
Приклад проектування бази даних "Бібліотека" Призначення і предметна область

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

Д27

Дейт К. Посібник з реляційної СУБД DB2/Пер. з англ. і предисл. М.Р.Когаловского. - М.: Фінанси і статистика, 1988. - 320 с.: Іл.

ISBN 5-279-00063-9

Книга американського фахівця в області реляційних баз даних К.Дейта, автора популярної в СРСР монографії "Введення в системи баз даних" (М.: Наука, 1981), являє собою керівництво по перспективною СУБД фірми ІБМ DB2, що поєднує можливості широко відомої системи IMS/VS і реляційної СУБД.
Для фахівців з програмного забезпечення інформаційних систем і студентів вузів.

ББК 32.973

Рис. 5.1. Макет анотованої каталожної картки

Для ведення бібліотечних каталогів, організації пошуку необхідних видань і бібліотечної статистики в базі повинні зберігатися відомості, більша частина яких розміщуються в анотованих каталожних картках (рис. 5.1). Аналіз запитів на літературу (як читачами, так і співробітниками бібліотек) показує, що для пошуку підходящих видань (за тематикою, автору, художнику, видавництву та т.п.) і відбору потрібного (наприклад, по анотації) слід виділити наступні атрибути каталожної картки:

1. Автор (прізвище та імена (ініціали) або псевдонім кожного автора видання).

2. Назва (заголовок) видання.

3. Номер тому (частини, книги, випуску).

4. Вид видання (збірник, довідник, монографія, ...).

5. Укладач (прізвище та імена (ініціали) кожного з укладачі видання).

6. Мова, з якого виконаний переклад видання.

7. Перекладач (прізвище та ініціали кожного перекладача).

8. Під чий редакцією (прізвище та імена (ініціали) кожного з титульних редакторів).

9. Художник (прізвище та імена (ініціали) кожного художника-ілюстратора) - для художніх видань, іллюстріруемих оригінальними малюнками.

10. Повторність видання (друге, одинадцяте і т.п.).

11. Характер перевидання (виправлене, доповнене, перероблене, стереотипне і т.п.).

12. Місце видання (місто).

13. Видавництво (назва видавництва).

14. Рік випуску видання.

15. Видавнича анотація або реферат.

16. Бібліотечний шифр (наприклад, ББК 32.973).

17. Авторський знак (наприклад, Д27).

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

Бібліотечно-бібліографічна класифікація (ББК) розподіляє видання по галузях знання відповідно до їх змістом. У ній використовується цифро-буквені індекси ступінчастої структури.

Кожен з дев'яти класів (1. Марксизм-ленінізм; 2. Природничі науки; 3. Техніка. Технічні науки; 4. Сільське і лісове господарство; 5. Охорона здоров'я; 6/8. Суспільні та гуманітарні науки; 9. Бібліографічні посібники. Довідкові видання. Журнали.) Ділиться на підкласи і наступні ступені ділення:

3. Техніка. Технічні науки.
32 Радіоелектроніка.
32.97 Обчислювальна техніка.
32.973 Електронні обчислювальні машини й пристрої.
32.973.2 Електронно обчислювальні машини й пристрої дискретної дії.

Шифр ​​ББК використовується при виділенні що зберігається виданням певних кімнат, стелажів і полиць, а також для складання каталогів і статистичних звітів.

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

До об'єктів і атрибутів, що дозволяє охарактеризувати окремі екземпляри видань (палітурки), місця їх зберігання і читачів, можна віднести:

18. Номер кімнати (приміщення для зберігання переплутав).

19. Номер стелажу в кімнаті.

20. Номер полки на стелажі.

21. Номер (інвентарний номер) палітурки.

22. Дата придбання конкретного палітурки.

23. Ціна конкретного палітурки.

24. Дата розміщення конкретного палітурки на конкретному місці.

25. Дата вилучення плетіння з встановленого місця.

26. Номер читацького квитка (формуляра).

27. Прізвище читача.

28. Ім'я читача.

29. Батькові читача.

30. Адреса читача.

31. Телефон читача.

32. Дата видачі читачеві конкретного палітурки.

33. Термін, на який конкретний палітурка виданий читачеві.

34. Дата повернення палітурки.

Побудова інфологічної моделі

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

До стрижневим сутностей можна віднести:

Творці ( Код творця , Творець).

Ця сутність відводиться для зберігання відомостей про основні людях, які брали участь у підготовці рукопису видання (авторів, укладачів, титульних редакторах, перекладачів і художників). Таке об'єднання допустимо, так як дані про різних творців вибираються з одного домену (Прізвище та імена) і виключає дублювання даних (одна й та сама людина може грати різні ролі у підготовці різних видань). Наприклад, С.Я.Маршак писав вірші (Казка про дурному мишеня) і п'єси (Дванадцять місяців), перекладав Дж.Байрона, Р.Бернса, Г.Гейне і складав збірки віршів.

Так як прізвище та імена (ініціали) творця можуть бути досить громіздкими (М.Е. Салтиков-Щедрін, Франсуа Рене де Шатобріан, Остен Жюль Жан-Батист Іполит і т.п.) і будуть багаторазово зустрічатися в різних виданнях, то їх доцільно нумерувати і посилатися на ці номери. Для цього вводиться цілочисельний атрибут "Код_создателя", який буде автоматично нарощуватися на одиницю при введенні в базу даних нового автора, перекладача або іншого творця.

Аналогічно створюються: Код_іздательства, Код_заглавія, Від_ видання, Код_характера, Код_язика, Номер_білета, Номер_пере-батоги, Код_места і Код_ізданія, що заміщають від одного до дев'яти атрибутів. Видавництва ( Код_іздательства , Назва, Місто). Заголовки ( Код_заглавія , Заглавие).

Виділення цієї сутності дозволить скоротити обсяг даних і знизити ймовірність виникнення суперечливості (виключається необхідність введення довгих текстових назв для різних томів зібрань творів, повторних видань, підручників і т.п.). Від_ізданія ( Від_ізданія , Названіе_віда). Характери ( Код_характера , Характер_переізданія). Мови ( Код_язика , Мова, Скорочення).

Крім назви мови зберігається його загальноприйняте скорочення (англ., ісп., ньому., фр.), якщо воно існує. Місця ( Код_места , Номер_комнати, Номер_стеллажа, Номер_ полки).

Один з кодів цієї сутності (наприклад, "-1") відведено для опису узагальненого місця, що знаходиться за стінами сховища книг (Видання видано читачеві, тимчасово передано іншій бібліотеці або організації). Читачі ( Номер_білета , Прізвище, Ім'я, По батькові, Адреса, Телефон).

Дві ключові сутності, що описують видання і його конкретні екземпляри, виявляються залежними від інших сутностей і потрапляють в клас позначень:

... Видання ( Код_ізданія , Код_заглавія, Від_ізданія, Номер_тома, Авторскій_знак, Бібліотечн_шіфр, Повторність, Код_іздательства, Год_ізданія, Анотація) [Заголовки, Від_ізданія, Видавництва]; Палітурки ( Номер_переплета , Код_ізданія, Ціна, Дата_пріобретенія) [Видання];

Стрижньові сутності і позначення зв'язані між собою асоціаціями:

Автори [Творці M, Видання N] ( Код_создателя , Код_ізданія ). Укладачі [Творці M, Видання N] ( Код_создателя , Код_ізданія ). Редактори [Творці M, Видання N] ( Код_создателя , Код_ізданія ). Художники [Творці M, Видання N] ( Код_создателя , Код_ізданія ). Перекладачі [Творці M, Видання N] ( Код_создателя , Код_ізданія , Мова). Перевидання [Характери M, Видання N] ( Код_характера , Код_ізданія ). Розміщення [Місця M, Палітурки N] ( Код_места , Номер_переплета , Дата_размещенія, Дата_із'ятія). Видача [Читачі M, Палітурки N] ( Номер_білета , Номер_переплета , Дата_видачі, Термін, Дата_возврата).

І, нарешті, для зменшення обсягу часто використовуваного позначення "Видання" з нього виділена характеристика:

Анотації ( Код_ізданія , Анотація) {Видання}.

Рис. 5.2. Інфологіческая модель бази даних "Бібліотека", побудована за допомогою мови "Таблиці-зв'язку"

Проектування бази даних

У відповідність з процедурою проектування (п. 4.4) кожна з отриманих сутностей повинна бути представлена ​​базової таблицею. Перший варіант цих таблиць описується так:

СТВОРИТИ ТАБЛИЦЮ Творці * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_создат)

ПОЛЯ (Код_создат Ціле, Фам_ІО Текст 30);

СТВОРИТИ ТАБЛИЦЮ Видавництва * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_іздательства)

ПОЛЯ (Код_іздательства Ціле, Назва

Текст 40, Місто Текст 25);

< p> СТВОРИТИ ТАБЛИЦЮ Заголовки * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_заглавія)

ПОЛЯ (Код_заглавія Ціле, Заголовок Запис);

СТВОРИТИ ТАБЛИЦЮ Від_ізданія * ( Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Від_ізданія)

ПОЛЯ (Від_ізданія Ціле, Названіе_віда Текст 16);

СТВОРИТИ ТАБЛИЦЮ Характери * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_характера)

ПОЛЯ (Код_характера Ціле, Характер_переізданія Текст 16);

СТВОРИТИ ТАБЛИЦЮ Мови * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_язика)

ПОЛЯ (Код_язика Ціле, Мова Текст 16, Скорочення Текст 6);

СТВОРИТИ ТАБЛИЦЮ Місця * (Стрижнева сутність)

ПЕРВИННИЙ КЛЮЧ (Код_места )

ПОЛЯ (Код_места Ціле, Номер_комнати Ціле,

Номер_стелажа Ціле, Номер_полкі Ціле);

СТВОРИТИ ТАБЛИЦЮ Читачі * (Стрижнева сутність)

< p> ПЕРВИННИЙ КЛЮЧ (Ном_білета)

ПОЛЯ (Ном_білета Ціле, Прізвище Текст 20, Ім'я Текст 16,

батькові Текст 20, Адреса Текст 60, Телефон Текст 9);

СТВОРИТИ ТАБЛИЦЮ Видання * (Позначення)

ПЕРВИННИЙ КЛЮЧ (Код_ізданія)

ЗОВНІШНІЙ КЛЮЧ (Код_заглавія ІЗ Заголовка

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Заголовки ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Заглавія.Код_заглавія ОБМЕЖУЄТЬСЯ)

ЗОВНІШНІЙ КЛЮЧ (Від_ізданія ІЗ Від_ізданія

NULL-значення допустимо

ВИДАЛЕННЯ З Від_ізданія ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Від_ізданія.Від_ізданія КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Код_іздательства З Видавництва

NULL-значення НЕ допустимо

< p> ВИДАЛЕННЯ З Видавництва ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Издательства.Код_издательства КАСКАДІРУЕТСЯ)

ПОЛЯ (Код_ізданія Ціле, Код_заглавія Ціле,

Від_ізданія Текст 16, Номер_тома Ціле,

Авторскій_знак Текст 3, Бібліотечн_шіфр Текст 12,

Повторність Ціле, Код_іздательст-ва Ціле,

Год_ізданія Ціле)

ОБМЕЖЕННЯ (1. Значення полів Код_заглавія, Від_ізданія

і Код_іздательства повинні належати набору значень

відповідних полів таблиць Заголовки, Від_ізданія

і Видавництва; при порушенні висновок повідомлення "Такого

заголовка немає "," Такого виду видання немає "або" Такого

видавництва немає ".);

СТВОРИТИ ТАБЛИЦЮ Палітурки * (Позначення)

ПЕРВИННИЙ КЛЮЧ (Номер_переплета)

ЗОВНІШНІЙ КЛЮЧ (Код_ізданія З Видання

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Видання ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Ізданія.Код_ізданія КАСКАДІРУЕТСЯ)

ПОЛЯ (Номер_переплета Ціле, Код_ізданія Ціле, Ціна Гроші,

Дата_пріобретенія Дата)

ОБМЕЖЕННЯ (Значення поля Код_ізданія повинні належати набору

значень відповідного поля таблиці Видання;

при порушенні висновок повідомлення "Такого видання немає");

СТВОРИТИ ТАБЛИЦЮ Анотації * (Характеризує Видання)

ПЕРВИННИЙ КЛЮЧ (Код_ізданія)

ЗОВНІШНІЙ КЛЮЧ (Код_ізданія З Видання

NULL-значення допустимо

ВИДАЛЕННЯ З Видання ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Ізданія.Код_ізданія КАСКАДІРУЕТСЯ)

ПОЛЯ (Код_ізданія Ціле, Анотація Запис)

ОБМЕЖЕННЯ (Значення поля Код_ізданія повинні належати набору

значень відповідного поля таблиці Видання;

при порушенні висновок повідомлення "Такого видання немає");

СТВОРИТИ ТАБЛИЦЮ Автори * (Зв'язує Творці і Видання)

ПЕРВИННИЙ КЛЮЧ (Код_создателя, Код_ізданія)

ЗОВНІШНІЙ КЛЮЧ (Код_создателя З Творці

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Творці ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Создателі.Код_создателя КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Код_ізданія З Видання

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Видання ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Ізданія.Код_ізданія КАСКАДІРУЕТСЯ)

ПОЛЯ (Код_создателя Ціле, Код_ізданія Ціле)

ОБМЕЖЕННЯ (Значення полів Код_создателя і Код_ізданія повинні

належати набору значень відповідних полів

таблиць Творці та Видання; при порушенні висновок

повідомлення "Такого автора немає" або "Такого видання немає");

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

СТВОРИТИ ТАБЛИЦЮ Перекладачі * (Зв'язує Творці, Видання та Мови)

ПЕРВИННИЙ КЛЮЧ (Код_создателя, Код_ізданія)

ЗОВНІШНІЙ КЛЮЧ (Код_создателя З Творці

NULL -значення НЕ допустимо

ВИДАЛЕННЯ З Творці ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Создателі.Код_создателя КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Код_ізданія З Видання

NULL- значення НЕ допустимо

ВИДАЛЕННЯ З Видання ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Ізданія.Код_ізданія КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Код_язика З Мови

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Мови ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Язикі.Код_язика КАСКАДІРУЕТСЯ)

ПОЛЯ (Код_создателя Ціле, Код_ізданія Ціле)

ОБМЕЖЕННЯ ( Значення полів Код_создателя, Код_ізданія і

Код_язика повинні належати набору значень

відповідних полів таблиць Творці, Видання

і Мови; при порушенні висновок повідомлення "Такого

автора немає "або" Такого видання немає "або" Такого

мови немає ");

СТВОРИТИ ТАБЛИЦЮ Розміщення * (Зв'язує Місця та Палітурки)

ПЕРВИННИЙ КЛЮЧ (Код_места, Номер_переплета)

ЗОВНІШНІЙ КЛЮЧ (Код_места З Місця

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Місця ОБМЕЖУЄТЬСЯ

ОНОВЛЕННЯ Места.Код_места КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Номер_переплета З Палітурки

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Палітурки КАСКАДІРУЕТСЯ

ОНОВЛЕННЯ Переплети.Ном_переплета КАСКАДІРУЕТСЯ)

ПОЛЯ (Код_места Ціле, Номер_переплета Ціле,

...

Дата_размещенія Дата, Дата_із'ятія Дата)

ОБМЕЖЕННЯ (Значення полів Код_места і Номер_переплета

повинні належати набору значень відповідних

полів таблиць Палітурки і Місця; при порушенні висновок

повідомлення "Такого палітурки немає" або "Такого місця немає" ;);

СТВОРИТИ ТАБЛИЦЮ Видача * (Зв'язує Читачі і Палітурки)

ПЕРВИННИЙ КЛЮЧ (Ном_білета, Ном_переплета)

ЗОВНІШНІЙ КЛЮЧ (Ном_білета З Читачі

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Читачі КАСКАДІРУЕТСЯ

ОНОВЛЕННЯ Чітателі.Ном_білета КАСКАДІРУЕТСЯ)

ЗОВНІШНІЙ КЛЮЧ (Ном_переплета З Палітурки

NULL-значення НЕ допустимо

ВИДАЛЕННЯ З Палітурки КАСКАДІРУЕТСЯ

ОНОВЛЕННЯ Переплети.Ном_переплета КАСКАДІРУЕТСЯ)

ПОЛЯ (Ном_білета Ціле, Ном_переплета Ціле, Дата_видачі Дата,

Термін Ціле, Дата_возврата Дата)

ОБМЕЖЕННЯ (Значення полів Ном_білета і Ном_переплета повинні

належати набору значень відповідних полів таблиць

Читачі та

- М.: Фінанси і статистика, 1983. - 320 с. Проектування баз даних інформаційних систем. - М.: Фінанси і статистика, 1989. - 351 с. - М.: Фінанси і статистика, 1988. - 320 с. - 252 с. Структуризовано мова запитів (SQL). - СПб.: ІТМО, 1994. - 80 с. - баз даних. - М.: Мир, 1987. - 608 с. У 2 кн., - М.: Мир, 1985. Кн. 1. - 287 с.: Кн. 2. - 320 с. - М.: Машинобудування, 1990. - 386 с. Автоматизоване проектування баз даних. - М.: Мир, 1984. - 294 с. - М.: Фінанси і статистика, 1985.