Пример проектирования БД
Задача: Создать БД реализации товаров со складов, при условии, что на одном складе может храниться только один вид товара.
1. Составим примерный перечень отчетов, которые могут быть затребо- ваны пользователями БД.
Отчет №1. Данные о товарах (Наименование, Марка, Цена, Номер те- лефона склада, где хранится товар, Количество имеющегося на складе това- ра, Описание товара, Название фирмы, которая занимается реализацией то- вара).
Отчет №2. Данные о фирмах (Название фирмы, Адрес фирмы, Телефон фирмы, Наименование товара, реализуемого фирмой).
Отчет №3. Система скидок (Фирма, Товар, Скидка).
Отчет №4. Продажи (Дата, Фирма, Товар, Марка товара, Количество проданного товара).
Отчет №5. Данные о складах (Номер склада, Адрес склада, Телефон склада, Фамилия заведующего, Товар, хранимый на складе).
Отчет №6. Данные о контактных лицах фирм (Фамилия, Имя, Дата рождения, Домашний адрес, Домашний телефон, Должность, Название фир- мы, сотрудником которой он является).
Отчет №7. Список директоров фирм (Фамилия, Телефон фирмы, Ад- рес фирмы, Домашний телефон, Домашний адрес)2 .
2. Составим подробный перечень всех элементов данных, требуемых для отчетов и сгруппируем их в таблицы БД:
|
Отчет №1 |
Отчет №2 |
Отчет №3 |
Отчет №4 |
Отчет №5 |
Отчет №6 |
Отчет №7 |
Наименование товара |
+ |
+ |
+ |
+ |
+ |
|
|
Марка товара |
+ |
|
|
+ |
|
|
|
Цена |
+ |
|
|
|
|
|
|
Количество |
+ |
|
|
|
|
|
|
Описание товара |
+ |
|
|
|
|
|
|
Название фирмы |
+ |
+ |
+ |
+ |
|
+ |
|
Адрес фирмы |
|
+ |
|
|
|
|
+ |
Телефон фирмы |
|
+ |
|
|
|
|
+ |
Скидка |
|
|
+ |
|
|
|
|
Номер склада |
|
|
|
|
+ |
|
|
Адрес склада |
|
|
|
|
+ |
|
|
Телефон склада |
+ |
|
|
|
+ |
|
|
Фамилия заведующего |
|
|
|
|
+ |
|
|
Дата продажи |
|
|
|
+ |
|
|
|
Количество продажи |
|
|
|
+ |
|
|
|
Фамилия контактного лица |
|
|
|
|
|
+ |
+ |
Имя |
|
|
|
|
|
+ |
|
Дата рождения |
|
|
|
|
|
+ |
|
Адрес домашний |
|
|
|
|
|
+ |
+ |
Телефон домашний |
|
|
|
|
|
+ |
+ |
Должность |
|
|
|
|
|
+ |
+ |
![]() |
2 Перечень требуемых данных и отчетов может быть скорректирован (например, могут рассматриваться данные о сотрудниках склада) и продолжен, в зависимости от степени полноты рассматриваемой предмет- ной области. В учебных целях мы ограничимся этим перечнем.
Сгруппируем
данные в таблицы:
3. Для каждой таблицы определим
уникальный идентификатор (первич- ный ключ) и перегруппируем таблицы так, чтобы
в них остались только дан- ные, относящиеся к объекту, определяемому первичным ключом.
Товары Код товара
Наименование товара
Марка Цена
№ склада Телефон склада Количество Описание
Код фирмы
Фирмы Код фирмы
Название фирмы
Адрес фирмы Телефон фирмы Код товара
Склады
№ склада Адрес склада Телефон склада Заведующий
Сформировав таблицы и установив ключевое поле3 для каждой таблицы, между таблицами можно установить взаимосвязи, которые будут поддержи- ваться при создании форм, отчетов и запросов и задать условия целостности данных этих таблиц.
Существует 3 типа связей:
"один к одному" – каждой записи одной таблицы соответствует только одна запись в другой;
"один ко многим" - каждой записи одной таблицы может соответство- вать несколько записей в другой таблице или "многие к одному" – в табли- це может быть несколько записей, соответствующих только одной записи в другой таблице;
"многие ко многим" - множеству записей одной таблицы соответству- ет множество записей другой таблицы.
При определении связи ключ в одной таблице содержит ссылки на кон- кретные записи в другой таблице. Поле, не являющееся ключевым для дан- ной таблицы, но значения которого являются значениями первичного ключа другой таблицы, называют внешним ключом4. Содержимое поля внешнего ключа (значения и свойства) должно совпадать с содержимым ключевого по- ля. Эти поля также могут иметь одинаковые имена.
В нашем примере между полученными объектами установились следу- ющие отношения:
"Склады" и "Товары"— отношение "один ко многим"5; "Фирмы" и "Контактные лица" — отношение "один ко многим"; "Фирмы" и "Товары" - отношение "многие ко многим".
Аccess не позволяет определить прямую связь "многие ко многим" меж- ду двумя таблицами. В этом случае необходимо создать дополнительную таблицу, с помощью которой одна связь "многие ко многим" будет сведена к
![]() |
3 Ключевые поля в таблицах выделены полужирным шрифтом.
4 Поле внешнего ключа выделено курсивом.
5 Условием нашего примера оговорено, что на одном складе может храниться один вид товара, но марок этого вида может быть несколько.
двум связям типа "один ко многим". В нашем примере такой дополнительной таблицей может являться таблица " Продажи", ключ которой состоит из двух полей (составной ключ), являющимися полями первичного ключа в таблицах "Фирмы" и "Товары".
![]() |
Так как одна фирма может покупать один и тот же товар в разные дни, то в ключ следует добавить еще одно поле, позволяющее сделать каждую за- пись таблицы уникальной. В нашем случае в ключ можно поместить поле Дата продажи.
Графически связи и таблицы после
преобразования могут быть пред- ставлены в следующем виде (рис. 1):
Рис. 1. Схема БД Продажи
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.