| Атрибут | Смысл | Пример |
| Data_zakaza | Дата заказа товара | 24.02.09 |
| predoplata | Сумма предоплаты за товар | 800 |
| Order_execution | Дата выполнения заказа | 02.03.09 |
Таблица 2.4 – Заработная плата сотрудников
| Атрибут | Смысл | Пример |
| oklad | Оклад сотрудника аптеки | 4000 |
| premia | Премия сотрудника аптеки | 2000 |
| avans | Аванс сотрудника аптеки | 1000 |
| zarplata | Зарплата сотрудника аптеки | 5000 |
Таблица 2.5 – Клиенты
| Атрибут | Смысл | Пример |
| serial_pas_e | Серия паспорта клиента | 3234 |
| number_pas_e | Номер паспорта клиента | 676767 |
| name | Имя клиента | Александра |
| surname | Фамилия клиента | Кургузова |
| patronymic | Отчество клиента | Ивановина |
| address | Адрес прописки клиента | Ул. Ленина, д97, кв. 8 |
| telephone_number | Телефонный клиента | 89513302324 |
Таблица 2.6 – Поставщики
| Атрибут | Смысл | Пример |
| supplierid | Порядковый номер поставщика | 2 |
| name | Название организации поставщика | ООО Биофарм |
| address | Адрес поставщика | Ул. Кр. Армия, д.8 |
| telephone | Телефон поставщика | 546523 |
Таблица 2.7 – Поставка продукции
| Атрибут | Смысл | Пример |
| Data_supply | Дата поставки продукции | 10.05.10 |
| Time_supply | Время поставки продукции | 16.20 |
Таблица 2.8 – Продажа товара
| Атрибут | Смысл | Пример |
| Data_prodagi | Дата продажи продукции | 05.05.10 |
| Time_prodagi | Время продажи продукции | 15.35 |
| count | Количество проданной продукции | 2 |
Таблица 2.9 – Доход аптеки
| Атрибут | Смысл | Пример |
| Month_d | Месяц учета | июль |
| Year_d | Год учета | 2009 |
| Dohod_employee | Выручка сотрудника за месяц | 91233 |
Таблица 2.10 – Расходы аптеки
| Атрибут | Смысл | Пример |
| Month_r | Месяц учета | январь |
| Year_r | Год учета | 2009 |
| arenda | Сумма за аренду | 15000 |
| Communal_yslygi | Сумма за коммунальные услуги | 4500 |
| reklama | Сумма за рекламу | 3000 |
| Vnutr_rashodi | Сумма за внутренние расходы | 10000 |
Таблица 2.11 – Бухгалтерия
| Атрибут | Смысл | Пример |
| month | Месяц учета | август |
| year | Год учета | 2008 |
Не может быть так, что бы в один и тот же день, в одно и тоже время был оформлен заказ и прибыло два поставщика.
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, 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 Неизбыточное покрытие 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 - Построение редуцированного минимального кольцевого покрытия