Смекни!
smekni.com

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

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

2.5 ER-схема базы данных

В приложении А приведены схемы базы данных до минимизации и после минимизации. Построение запросов на SQL

2.5.1 Запрос на выборку

2.5.1.1 Словесная формулировка запроса

Перечислить всех клиентов и их паспортные данные, которые приобрели продукцию компании Fuzafungin.

2.5.1.2 Текст запроса на языке 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.5.1.3 Исходное дерево запроса

Исходное дерево для запроса представлено на рисунке 2.21



q2


q1

product

clients orders

Рисунок 2.21- Исходное дерево запроса

2.6.1.4 Расчет сложности запроса

Расчет сложности исходного запроса приведен ниже.

, (2.1)

где

- результат естественного соединения таблиц;

- таблицы, участвующие в соединении;

- псевдонимы, используемые вместо имен таблиц для сокращения записи;

- операция естественного соединения.

, (2.2)

(2.3)

где

- число записей в таблице
;

- число записей в таблице С;

- число записей в таблице O;

- число различных значений в столбце clientid таблицы Clients;

- число различных значений в столбце clientid таблицы Orders.

,

,

,

.

, (2.4)

, (2.5)

где

- число блоков, записанных в таблице
;

- длина одной записи таблицы
в блоках;

- длина одной записи таблицы
в байтах;

- размер одного блока.

Очевидно, что

, (2.6)

где

- объем в байтах поля
;

- объем в байтах поля
;

,

,

.

.

.

.

, (2.7)

,

,

,

,

. (2.8)

.

Очевидно, что

, (2.9)

,

,

,

.