Читаем Интернет-журнал "Домашняя лаборатория", 2007 №4 полностью

Таблица TITLES (Заголовки) содержит данные о самих книгах — название книги, год издания, код ISBN, издатель, краткое описание и др. Структура таблицы TITLES и ее содержимое показаны на рис. 1.7 и 1.8 соответственно.



Рис. 1.7.Структура таблицы TITLES



Рис. 1.8.Содержимое таблицы TITLES


Из рис. 1.2 видно, что в базе данных BIBLIO.MDB присутствует еще и таблица TITLE AUTHOR. На первый взгляд непонятно зачем она нужна. Ведь в базе данных есть таблица TITLES с заголовками книг и таблица AUTHORS с данными об авторах. Однако все же эта таблица нужна и для чего она так необходима станет понятно, когда в дальнейшем будем рассматривать отношения между таблицами.



Отношения между таблицами


Отношения между таблицами устанавливают связь между данными находящимися в разных таблицах базы данных.

Отношения между таблицами определяются отношением между группами объектов соответствующего типа. Например, один автор может написать несколько книг и издать их в разных издательствах. Или издательство может опубликовать несколько книг разных авторов. Таким образом, между авторами и названиями книг существует отношение один-ко-многим, а между издательствами и авторами существует отношение много-ко-многим.

Отношения между таблицами базы данных BIBLIO.MDB показаны на рис. 1.9.



Рис. 1.9.Отношения между таблицами базы данных BIBLIO.MDB.


Отношение один-к-одному

Если между двумя таблицами существует отношение один-к-одному, то это означает, что каждая запись в одной таблице соответствует только одной записи в другой таблице.

Примером такого отношения может служить отношение между таблицами. Таблица AUTHORS (Авторы) рассмотрена выше (рис. 1.5 и 1.6) и содержит краткую информацию о авторах (ФИО и год рождения). Таблица PERSON (Личность) содержит персональную информацию о авторах (домашний адрес, телефон, образование и др.) Структура таблицы PERSON показана на рис. 1.10. Следует отметить, что в базе данных BIBLIO.MDB никакой таблицы PERSON нет и мы упоминаем о ней только как о иллюстрации отношения между таблицами — один-к-одному.



Рис. 1.10.Структура таблицы PERSON


Между таблицами AUTHORS и PERSON существует отношение один-к-одному, так как одна запись, идентифицирующая автора, однозначно соответствует только одной записи в таблице PERSON, содержащей персональные данные об авторе.

Связь между таблицами определяется с помощью совпадающих полей: AuID в таблице AUTHORS и в таблице PERSON.


Отношение один-ко-многим

Хорошим примером отношения между таблицами один-ко-многим является отношение между авторами и названиями книг (таблицы AUTHORS и TITLES), так как каждый автор может иметь отношение к созданию нескольких книг. Связь между таблицами AUTHORS и TITLES осуществляется с помощью совпадающих полей Au ID в обеих таблицах.

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


Отношение много-к-одному

Отношение много-к-одному полностью аналогично рассмотренному выше отношению один-ко-многим.


Отношение много-ко-многим

При отношении между двумя таблицами много-ко-многим каждая запись в одной таблице связана с несколькими записями в другой таблице и наоборот. Иллюстрацией такого отношения может служить отношение между таблицами PUBLISHERS и AUTHORS. С одной стороны, каждое издательство может публиковать книги разных авторов и с другой стороны — каждый автор может публиковаться в разных издательствах.

Для удобства работы с таблицами, имеющими отношение много-ко-многим, обычно в базу данных добавляют еще одну таблицу, которая находится в отношении один-ко-многим и много-к-одному к соответствующим таблицам. В случае базы данных BIBLIO.MDB такой таблицей является TITLE AUTHOR.



Нормализация баз данных


Рассмотрим процесс нормализации базы данных на примере базы данных BIBLIO.MDB. Вообще говоря, все данные о книгах, авторах и издательствах можно разместить в одной таблице, названной, например, BIBLIOS. Структура этой таблицы показана на рис. 1.11.



Рис. 1.11.Структура таблицы BIBLIOS.


В принципе, можно работать и с такой таблицей. С другой стороны понятно, что такая структура данных является неэффективной. В таблице BIBLIOS будет достаточно много повторяющихся данных, например сведения об издательстве или авторе будут повторяться для каждой опубликованной книги. Такая организация данных приведет к следующим проблемам, с которыми столкнется конечный пользователь вашей программы:

Перейти на страницу:

Похожие книги

Занимательная электроника
Занимательная электроника

Скрасить свой досуг можно разными способами. Электронные устройства, созданные своими руками, питающиеся от «безопасного» напряжения 9-15 Вольт, не только успешно замещают китайские «гаджеты», но и позволяют культивировать собственную творческую жилку, преобразовывая свободное время досуга в весьма полезное развивающее занятие.Перед вами хорошо структурированная книга, разделенная на три тематические главы самого «свежего» радиолюбительского опыта, позволяющая нешаблонно решить задачи, с которыми мы ежедневно сталкиваемся в быту. Особое, отличительное назначение книги в описании проверенных, именно практических, легко повторяемых схем и устройств; в каждой главе имеется специальный раздел – описание вариантов практического применения предложенных к повторению разработок.Книга для любителей радио всех возрастов, лиц любых профессий, склонных к занятиям техническим творчеством и широкого круга читателей, ценящих свой досуг и новые перспективные идеи его заполнения. Эта книга – для вас.

Андрей Петрович Кашкаров

Сделай сам / Хобби и ремесла / Дом и досуг