База данных "Магазин косметики"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
? разными названиями, адресами - городами, улицами, домами, офисами и телефонами, ИНН и КПП, р/с и БИК.
Одному коду оплаты не могут соответствовать разные продажи и разные статусы.
Одному коду статуса не могут соответствовать разные названия статусов.
Ключевые зависимости представлены на рисунке 2.1.
kod_nom->name_nom, kod_str, kod_proiz, ed_izm, ves kod_pr->kod_tp, kod_nom, price kod_tp->name_tp, kod_val kod_val->name_val, kurs kod_proiz->name_proiz, city_pz, street_pz, house_pz, office_pz, phone_pz kod_pred->name_pred, kod_proiz, city_pr, street_pr, house_pr, office_pr, phone_pr kod_str->name_str kod_rek->kod_nom, kod_var kod_var->rek kod_sost->kod_nom, kod_vv kod_vv->name_vv kod_prod->date_prod, kod_ka, kod_tp kod_spr->kod_prod, kod_nom, price_r, kolvo kod_post->date_post, kod_ka, kod_tp kod_spo->kod_post, kod_nom, price_rr, kolvo kod_ka->name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka kod_sch->kod_bank, kod_ka bik->ks, name_bank, city_b kod_org->name_org, city, street, house, office, phone, inn_org, kpp, rs, bik kod_opl->kod_prod, kod_st kod_st->name_stРисунок 2.1 - Ключевые зависимости
Неключевые зависимости
Одному коду типа цены на одну номенклатуру может соответствовать только одно значение цены.
Одному названию номенклатуры от определенного производителя может соответствовать только одна единица измерения и вес.
Одному ИНН контрагента может соответствовать только одно название контрагента.
Одному названию валюты может соответстовать только один курс.
Одной номенклатуре в одной продаже может соответствовать только одна цена.
Одной номенклатуре в одной поставке может соответствовать только одна цена.
Неключевые зависимости представлены на рисунке 2.2.
kod_tp, kod_nom->price name_nom, kod_proiz->ed_izm, ves inn_ka->name_ka name_val->kurs kod_prod, kod_nom->price_r kod_post, kod_nom->price_rrРисунок 2.2 - Неключевые зависимости
Универсальные зависимости
Код цены, код типа цены, код номенклатуры и значение цены определяют запись таблицы Цена.
Код номенклатуры, название номенклатуры, код страны-производителя, код производителя, единицы измерения и вес определяют запись таблицы Номенклатура.
Код контрагента, название контрагента, адрес контрагента - город, улица, дом, офис, телефон; ИНН и КПП определяют запись таблицы Контрагент.
Код валюты, название валюты, курс валюты определяют запись таблицы Валюта.
Код строки поставок, код поставки, код номенклатуры, цена и количество определяют запись таблицы Строки поставок.
Код строки продаж, код продажи, код номенклатуры, цена и количество определяют запись таблицы Строки продаж.
Универсальные зависимости представлены на рисунке 2.3.
kod_pr, kod_tp, kod_nom, price -> * kod_nom, name_nom, kod_str, kod_proiz, ed_izm, ves -> * kod_ka, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka -> * kod_val, name_val, kurs -> * kod_spo, kod_post, kod_nom, price_rr, kolvo -> * kod_spr, kod_prod, kod_nom, price_r, kolvo -> *Рисунок 2.3 - Универсальные зависимости
2.5 Синтез схемы базы данных на основании функциональных зависимостей
.5.1 Построение неизбыточного покрытия
Этапы построения неизбыточного покрытия представлены на рис. 2.4.
1. f=g \ kod_pr, kod_tp, kod_nom, price -> * Проверяем: f |= kod_pr, kod_tp, kod_nom, price -> * [kod_pr, kod_tp, kod_nom, price]+f = kod_pr, kod_tp, kod_nom, price, name_nom, kod_str, kod_proiz, ed_izm, ves, name_tp, kod_val, name_val, kurs, name_proiz, city_pz, street_pz, house_pz, office_pz, phone_pz, name_str, * Да => g=f 2. f=g \ kod_spo, kod_post, kod_nom, price_rr, kolvo -> * Проверяем: f |= kod_spo, kod_post, kod_nom, price_rr, kolvo -> * [kod_spo, kod_post, kod_nom, price_rr, kolvo]+f = kod_spo, kod_post, kod_nom, price_rr, kolvo, name_nom, kod_str, kod_proiz, ed_izm, ves, name_proiz, city_pz, street_pz, house_pz, office_pz, phone_pz, name_str, date_post, kod_ka, kod_tp, name_tp, kod_val, name_val, kurs, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka, price, * Да => g=f 3. f=g \ kod_spr, kod_prod, kod_nom, price_r, kolvo -> * Проверяем: f |= kod_spr, kod_prod, kod_nom, price_r, kolvo -> * [kod_spr, kod_prod, kod_nom, price_r, kolvo]+f = kod_spr, kod_prod, kod_nom, price_r, kolvo, name_nom, kod_str, kod_proiz, ed_izm, ves, name_proiz, city_pz, street_pz, house_pz, office_pz, phone_pz, name_str, date_prod, kod_ka, kod_tp, name_tp, kod_val, name_val, kurs, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka, price, * Да => g=fРисунок 2.4 - Этапы построения неизбыточного покрытия
Неизбыточное покрытие представлено на рисунке 2.5.
kod_nom -> name_nom, kod_str, kod_proiz, ed_izm, ves kod_pr -> kod_tp, kod_nom, price kod_tp -> name_tp, kod_val kod_val -> name_val, kurs kod_proiz -> name_proiz, city_pz, street_pz, house_pz, office_pz, phone_pz kod_pred -> name_pred, kod_proiz, city_pr, street_pr, house_pr, office_pr, phone_pr kod_str -> name_str kod_rek -> kod_nom, kod_var kod_var -> rek kod_sost -> kod_nom, kod_vv kod_vv -> name_vv kod_prod -> date_prod, kod_ka, kod_tp kod_spr -> kod_prod, kod_nom, price_r, kolvo kod_post -> date_post, kod_ka, kod_tp kod_spo -> kod_post, kod_nom, price_rr, kolvo kod_ka -> name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka kod_sch -> kod_bank, kod_ka bik -> ks, name_bank, city_b kod_org -> name_org, city, street, house, office, phone, inn_org, kpp, rs, bik kod_opl -> kod_prod, kod_st kod_st -> name_st kod_tp, kod_nom -> price name_nom, kod_proiz -> ed_izm, ves inn_ka -> name_ka name_val -> kurs kod_prod, kod_nom -> price_r kod_nom, name_nom, kod_str, kod_proiz, ed_izm, ves -> * kod_ka, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka -> * kod_val, name_val, kurs -> *Рисунок 2.5 - Неизбыточное покрытие
.5.2 Построение леворедуцированного покрытия
Этапы построения леворедуцированного покрытия представлены на рисунке 2.6 - 2.7.
1. kod_nom, name_nom, kod_str, kod_proiz, ed_izm, ves -> * 1.1. kod_nom, name_nom, kod_str, kod_proiz, ed_izm, ves -> * Проверяем: g |= kod_nom, kod_str, kod_proiz, ed_izm, ves -> * Да => множество ФЗ изменяется 1.2. kod_nom, kod_str, kod_proiz, ed_izm, ves -> * Проверяем: g |= kod_nom, kod_proiz, ed_izm, ves -> * Да => множество ФЗ изменяется 1.3. kod_nom, kod_proiz, ed_izm, ves -> * Проверяем: g |= kod_nom, ed_izm, ves -> * Да => множество ФЗ изменяется 1.4. kod_nom, ed_izm, ves -> * Проверяем: g |= kod_nom, ves -> * Да => множество ФЗ изменяется 1.5. kod_nom, ves -> * Проверяем: g |= kod_nom -> * Да => множество ФЗ изменяется 1.6. kod_nom, ves -> * Проверяем: g |= kod_nom -> * Да => множество ФЗ изменяется 2. kod_ka, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka ->* 2.1. kod_ka, name_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka -> * Проверяем: g |= kod_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka -> * Да => множество ФЗ изменяетсяРисунок 2.6 - Этапы построения леворедуцированного покрытия
2.2. kod_ka, city_ka, street_ka, house_ka, office_ka, phone_ka, inn_ka, kpp_ka-&