Смекни!
smekni.com

Проектирование базы данных Аптека (стр. 2 из 6)

Атрибут Смысл Пример
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

2.3 Определение функциональных зависимостей

Не может быть так, что бы в один и тот же день, в одно и тоже время был оформлен заказ и прибыло два поставщика.

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.4 Синтез схемы базы данных на основании функциональных зависимостей

2.4.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.4.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.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.4.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 - Построение классов эквивалентности

2.4.5 Построение редуцированного минимального кольцевого покрытия

Определение 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 - Построение редуцированного минимального кольцевого покрытия