База данных "Магазин косметики"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

? разными названиями, адресами - городами, улицами, домами, офисами и телефонами, ИНН и КПП, р/с и БИК.

Одному коду оплаты не могут соответствовать разные продажи и разные статусы.

Одному коду статуса не могут соответствовать разные названия статусов.

 

Ключевые зависимости представлены на рисунке 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-&