48337 (Проектирование базы данных "Аптека"), страница 2
Описание файла
Документ из архива "Проектирование базы данных "Аптека"", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "48337"
Текст 2 страницы из документа "48337"
data_supply, vremy_postavki -> supplierid.
Не может такого быть, что бы один и тот же продукт, в одно и тоже время, в один и тот же день, один и тот же клиент, купил у двух и более продавцов.
productid, data_cost, vremy_cost, clientid -> employeeid.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировались дважды расходы аптеки.
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировалась дважды выручка, заработанная каждым продавцом
month_d, year_d -> viruchka_emploee.
Не может такого быть, что бы один и тот же продавец фиксировался дважды за месяц и год.
employeeid -> month_d, year_d.
Не может такого быть, что бы в один и тот же месяц, в один и тот же год фиксировались дважды доходы и расходы.
month, year -> rashodid, dohodid.
Не может такого быть, что бы один и тот же продавец получил дважды зарплату за месяц.
emloyeeid -> oklad, premia, avans, zarplata.
Не может такого быть, что бы один и тот же продукт имел два одинаковых артикула.
productid -> artikulid.
Не может такого быть, чтобы один и тот же поставщик имел 2 порядковых номера.
supplierid -> name.
Исходные функциональные зависимости представлены на рисунке 2.1
data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name |
Рисунок 2.1 – Исходные функциональные зависимости
-
Синтез схемы базы данных на основании функциональных зависимостей
-
Построение неизбыточного покрытия
Этапы построения неизбыточного покрытия представлены на рисунке 2.2.
Построение неизбыточного покрытия.
G: data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, 17mployee_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name Неизбыточное покрытие g: data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, mployee_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name |
Рисунок 2.2 – Построение неизбыточного покрытия
-
Построение леворедуцированного покрытия
Этапы построения леворедуцированного покрытия представлены на рисунке 2.3.
Построение леворедуцированного покрытия.
g: data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name Леворедуцированное покрытие g: data_supply, vremy_postavki -> supplierid data_voz, vremy_voz, productid -> clientid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name |
Рисунок 2.3 - Построение леворедуцированного покрытия
-
Построение праворедуцированного покрытия
Этапы построения праворедуцированного покрытия представлены на рисунке 2.4
Построение праворедуцированного покрытия.
g: data_supply, vremy_postavki -> supplierid productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name Удаление зависимостей вида X-> Праворедуцированное покрытие g: data_supply, vremy_postavki -> supplierid productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name |
Рисунок 2.4- Построение праворедуцированного покрытия.
-
Построение классов эквивалентности
Этапы построения классов эквивалентности представлены на рисунках 2.5 – 2.6. Построение классов эквивалентности.
Построение классов эквивалентности 1. Ef( data_supply, vremy_postavki ): data_supply, vremy_postavki -> supplierid 2. Ef( clientid, productid, data_voz, vremy_voz ): clientid, productid, data_voz, vremy_voz -> employeeid 3. Ef( month_r, year_r ): month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi 4. Ef( month_d, year_d ): month_d, year_d -> viruchka_emploee 5. Ef( employeeid ): employeeid -> month_d, year_d 6. Ef( month, year ): month, year -> rashodid, dohodid 7. Ef( emloyeeid ): emloyeeid -> oklad, premia, avans, zarplata |
Рисунок 2.5 - Построение классов эквивалентности
8. Ef( productid ): productid -> artikulid 9. Ef( supplierid ): supplierid -> name Построение минимального покрытия на основе прямой функциональной определяемости Редуцированное минимальное покрытие g: data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name |
Рисунок 2.6 - Построение классов эквивалентности
-
Построение редуцированного минимального кольцевого покрытия
Определение CF-зависимостей по классам эквивалентности представлено на рисунках 2.7 – 2.11. Построение кольцевого покрытия
Минимальное кольцевое покрытие ( data_supply, vremy_postavki; ) -> supplierid ( productid, data_voz, vremy_voz; ) -> employeeid ( productid, data_zakaza, employeeid; clientid, data_zakaza, productid; ) ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi ( month_d, year_d; ) -> viruchka_emploee ( employeeid; ) -> month_d, year_d ( month, year; ) -> rashodid, dohodid ( emloyeeid; ) -> oklad, premia, avans, zarplata ( productid; ) -> artikulid (supplierid;) -> name Получение кольцевого минимального редуцированного покрытия Естественное характеристическое множество для кольцевого покрытия f(C): data_supply, vremy_postavki -> supplierid productid, data_voz, vremy_voz -> employeeid |
Рисунок 2.7 - Построение редуцированного минимального кольцевого покрытия
month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name Левая редукция или перенос в правую часть 1. Проверка CF-зависимости: ( data_supply, vremy_postavki; ) -> supplierid 2. Проверка CF-зависимости: ( clientid, productid, data_voz, vremy_voz; ) -> employeeid 3. Проверка CF-зависимости: ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi 4. Проверка CF-зависимости: ( month_d, year_d; ) -> viruchka_emploee 5. Проверка CF-зависимости: ( employeeid; ) -> month_d, year_d |
Рисунок 2.8 - Построение редуцированного минимального кольцевого покрытия
6. Проверка CF-зависимости: ( month, year; ) -> rashodid, dohodid 7. Проверка CF-зависимости: ( emloyeeid; ) -> oklad, premia, avans, zarplata 8. Проверка CF-зависимости: ( productid; ) -> artikulid 9. Проверка CF-зависимости: ( supplierid; ) -> name Проверка покрытия на праворедуцированность 1. Проверка CF-зависимости: ( data_supply, vremy_postavki; ) -> supplierid 2. Проверка CF-зависимости: ( clientid, productid, data_voz, vremy_voz; ) -> employeeid 3. Проверка CF-зависимости: ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi 4. Проверка CF-зависимости: ( month_d, year_d; ) -> viruchka_emploee |
Рисунок 2.9 - Построение редуцированного минимального кольцевого покрытия
5. Проверка CF-зависимости: ( employeeid; ) -> month_d, year_d 6. Проверка CF-зависимости: ( month, year; ) -> rashodid, dohodid 7. Проверка CF-зависимости: ( emloyeeid; ) -> oklad, premia, avans, zarplata 8. Проверка CF-зависимости: ( productid; ) -> artikulid 9. Проверка CF-зависимости: ( supplierid; ) -> name Минимальное редуцированное кольцевое покрытие C ( data_supply, vremy_postavki; ) -> supplierid ( clientid, productid, data_voz, vremy_voz; ) -> employeeid ( month_r, year_r; ) -> arenda, kommunal_yslygi, reklama, vnutr_rashodi ( month_d, year_d; ) -> viruchka_emploee ( employeeid; ) -> month_d, year_d ( month, year; ) -> rashodid, dohodid ( emloyeeid; ) -> oklad, premia, avans, zarplata ( productid; ) -> artikulid ( supplierid; ) -> name |
Рисунок 2.10 - Построение редуцированного минимального кольцевого покрытия
Естественное характеристическое множество f(C): data_supply, vremy_postavki -> supplierid clientid, productid, data_voz, vremy_voz -> employeeid month_r, year_r -> arenda, kommunal_yslygi, reklama, vnutr_rashodi month_d, year_d -> viruchka_emploee employeeid -> month_d, year_d month, year -> rashodid, dohodid emloyeeid -> oklad, premia, avans, zarplata productid -> artikulid supplierid -> name R0 = ( data_supply, vremy_postavki, supplierid ) K0 = { data_supply, vremy_postavki } R1 = ( clientid, productid, data_voz, vremy_voz, employeeid ) K1 = { clientid, productid, data_voz, vremy_voz } R2 = ( month_r, year_r, arenda, kommunal_yslygi, reklama, vnutr_rashodi) K2 = { month_r, year_r } R3 = ( month_d, year_d, viruchka_emploee ) K3 = { month_d, year_d } R4 = ( employeeid, month_d, year_d ) K4 = { employeeid } R5 = ( month, year, rashodid, dohodid ) K5 = { month, year } R6 = ( emloyeeid, oklad, premia, avans, zarplata ) K6 = { emloyeeid } R7 = ( productid, artikulid ) K7 = { productid } R8 = ( supplierid, name ) K8 = { supplierid } |
Рисунок 2.11 - Построение редуцированного минимального кольцевого покрытия
-
ER-схема базы данных
В приложении А приведены схемы базы данных до минимизации и после минимизации. Построение запросов на SQL
-
Запрос на выборку
-
Словесная формулировка запроса
Перечислить всех клиентов и их паспортные данные, которые приобрели продукцию компании Fuzafungin.
-
Текст запроса на языке SQL
Текст запроса на языке SQL представлен на рисунке 2.20.
SELECT clients.name, clients.serial_pas, clients.number_pas, product.name_product, orders.data_zakaza, orders.orderid as Number_Order; FROM ((orders JOIN sotrud s ON orders. clientid = clients. clientid) JOIN product ON orders.productid = product.productid); WHERE (product.name_product = "Fuzafungin") |
Рисунок 2.20 - Текст запроса на языке SQL
-
Исходное дерево запроса
Исходное дерево для запроса представлено на рисунке 2.21
q2 q1 product clients orders |
Рисунок 2.21- Исходное дерево запроса
2.6.1.4 Расчет сложности запроса
Расчет сложности исходного запроса приведен ниже.