Автор: Пользователь скрыл имя, 22 Ноября 2011 в 15:29, контрольная работа
Для заданной предметной области с учётом бизнес-процессов и требований к информации построить ER диаграмму и спроектировать реляционную базу данных.
Предметная область: справочное автозаправочная станция “АЗС ТНК”.
Концептуальное и логическое проектирование баз данных
1. Постановка задачи и разработка бизнес-правил
2. Создание концептуальной модели данных исходя из представлений о предметной области
3. Проектирование базы данных из ER-диаграммы
4. Создание SQL-запросов
Содержание
Концептуальное
и логическое проектирование
баз данных
1. Постановка задачи и разработка бизнес-правил
Для заданной предметной области с учётом бизнес-процессов и требований к информации построить ER диаграмму и спроектировать реляционную базу данных.
Предметная область: справочное автозаправочная станция “АЗС ТНК”.
Бизнес-процессы: производится приём бензина(товара) и его продажа.
Требования к информации:
«Что лежит в основе бизнеса данной фирмы?»
«Как это делается?»
2. Создание концептуальной модели данных исходя из представлений о предметной области
В соответствии с условием, выделим сущности:
Сущность | Описание сущности |
Товар | Данные о товаре |
Производитель | Информация о производителях бензина |
Продажи | Сведения о продажах |
Взаимосвязи между сущностями:
Сущность | Связь | Сущность |
Товар | Продается | Продажи |
Производитель | Поставляют | Товар |
Определим
кардинальность и степень участия
каждой из связей.
Один товар в разное время может продаваться несколько раз. Одна продажа описывает продажу только одного товара, поэтому между сущностями Продажи и Товар устанавливается взаимосвязь «один ко многим».
Классы
принадлежности сущностей Товар и Продажи являются
обязательными, так как каждый товар должен
быть продан хотя бы один раз, а любая продажа
обязательно имеет товар.
Производитель может поставлять несколько товаром, а один товар может быть поставлен несколькими производителями, поэтому между этими сущностями устанавливается взаимосвязь «многие ко многим»
Каждый
производитель поставляет хотя бы один
товар. И каждый товар имеет производителя,
поэтому классы принадлежности сущностей
являются обязательными.
3.
Проектирование базы
данных из ER-диаграммы
Физическая организация базы данных «АЗС ТНК»
Наименование поля | Тип поля | Кол-во
символов |
Тип
индекса |
Примечание |
Tovar (Товар) | ||||
Id | Integer | 4 | Primary | Уникальный ключ |
Nazvanie | Character | 20 | Наименование топлива | |
Kolichestvo | Currency | 8 | Количество топлива, л. | |
Price | Currency | 8 | Цена, грн. | |
Proizvoditel (Производители) | ||||
Id | Integer | 4 | Primary | Уникальный ключ |
Nazvanie | Character | 20 | Наименование топлива | |
Telefon | Character | 12 | Телефон | |
Fio_direktora | Character | 20 | ФИО Директора | |
Prodagu (Продажи) | ||||
Id | Integer | 4 | Primary | Уникальный ключ |
Id_tovar | Integer | 4 | Regular | Id товара |
Kolichestvo | Currency | 8 | Количество топлива, л. | |
Data_prodagu | DateTime | 8 | Дата продажи | |
Summa_prodagu | Currency | 8 | Полученная сумма | |
Postavliaut (Поставляют) | ||||
Id_tovar | Integer | 4 | Regular | Id товара |
Id_proizvoditel | Integer | 4 | Regular | Id производителя |
Kolichestvo | Currency | 8 | Количество топлива, л. | |
Data_postavki | DateTime | 8 | Дата поставки топлива | |
summa | Currency | 8 | Уплаченная сумма за поставку |
4. Создание SQL-запросов
Для удобного просмотра информации из базы данных создадим SQL-запросы:
SELECT nazvanie AS 'Наименование_товара', kolichestvo AS 'Количество', ;
price AS 'Цена' FROM tovar ORDER BY nazvanie
SELECT nazvanie AS 'Название', telefon AS 'Телефон', ;
fio_direktora AS 'Директор' FROM proizvoditel ORDER BY nazvanie
SELECT tovar.nazvanie AS 'Наименование_товара', prodagu.kolichestvo AS
'Количество', prodagu.data_prodagu AS 'Дата_продажи', prodagu.summa_prodagu AS 'Сумма' FROM tovar, prodagu WHERE tovar.id=prodagu.id_tovar ;
ORDER BY tovar.nazvanie
SELECT tovar.nazvanie AS 'Наименование_товара', SUM(prodagu.kolichestvo) AS 'Продано_всего', SUM(prodagu.summa_prodagu)AS 'Сумма' ;
FROM tovar, prodagu WHERE prodagu.id_tovar = tovar.id ;
GROUP BY tovar.nazvanie ORDER BY tovar.nazvanie
SELECT proizvoditel.nazvanie AS 'Производитель', tovar.nazvanie AS 'Наименование_товара', SUM(postavliaut.kolichestvo) AS 'Количество' , sum(postavliaut.summa) AS 'Сумма' FROM proizvoditel, tovar, postavliaut ;
WHERE proizvoditel.id=postavliaut.
ORDER BY proizvoditel.nazvanie
Список использованных
источников