Функция для добавления товаров. Передаваемые параметры: индекс магазина, имя товара, цена товара, количество на складе, количество проданных товаров, имя производителя. При добавлении товара, который уже есть в таблице, новая запись не создаётся, а происходит увеличение количества этого товара на складе.
Функция для вывода суммы среднего чека по магазину в разное время суток. Передаваемые параметры: индекс магазина, дата начало периода, дата конец периода.
Функция для вывода рейтинга товаров по магазинам. Получает на вход номер магазина. Если получает номер не существующего магазина, то возвращает пустую таблицу.
Функция для удаления товаров. Удаление, если этот товар ни разу не был продан.
Функция удаления магазина из справочника. Удаление, если нет ни одного товара в данном магазине.
Функция для обновления информации о товарах. При совпадении полей имя товара, производитель, цена и номер магазина, к полям количество на складе и количество проданных прибавляется значения из соответствующих полей совпавшей записи, после чего ненужная запись становится архивной.
Функция для обновления информации в справочнике магазинов. Передаваемые параметры: индекс магазина, новое имя магазина, новое имя города.
Выполнение работы
Создание групповых ролей:
create role dboperator nosuperuser inherit nocreatedb nocreaterole;
create role dbuser nosuperuser inherit nocreatedb nocreaterole;
grant dboperator to dbuser;
create role dbanalytic nosuperuser inherit nocreatedb nocreaterole;
create role dbadmin superuser inherit nocreatedb createrole;
grant dbanalytic to dbadmin;
grant dbuser to dbadmin;
grant dboperator to dbadmin;
Создание таблицы-справочника магазинов и назначение ей прав доступа, создание индекса по полю shop_name:
create table shop_catalog (id serial not null, shop_name character varying(40) not null, shop_city character varying(40) not null, constraint shop_id primary key (id) ) with (oids=false);
alter table shop_catalog owner to postgres;
grant all on table shop_catalog to postgres;
grant select, update, insert, delete on table shop_catalog to dboperator;
grant select on table shop_catalog to dbanalytic;
create index shop_name_btree on shop_catalog using btree (shop_name);
Создание таблицы с товарами и создание индекса по полю tovar_name и shop_id. Создание второго индекса в поле shop_id для связи с таблицей shop_catalog.
create table tovar ( id serial not null, shop_id integer, tovar_name character varying(40) not null, tovar_price integer, count_whs integer, count_sold_out integer, maker_name character varying(40) not null, arhiv boolean not null default false, constraint tovar_id primary key (id), constraint shop_id foreign key (shop_id) references shop_catalog (id) match simple on update no action on delete no action) with (oids=false);
alter table tovar owner to postgres;
grant all on table tovar to postgres;
grant select, update, insert, delete on table tovar to dboperator;
grant select on table tovar to dbanalytic;
create index tovar_name_btree on tovar using btree (tovar_name);
create index f_shop_id on tovar using btree (shop_id);
Создание таблицы с информацией о продажах и создание индекса по полю. Создание второго индекса в поле tovar_id, для связи с таблицей tovar.
create table sold_out ( id bigserial not null, buyer integer not null, shop_id integer not null, tovar_id integer not null, bought_count integer not null, buy_date timestamp without time zone not null default now(), constraint buyer_id primary key (id), constraint tovar_id foreign key (tovar_id) references tovar (id) match simple on update no action on delete no action ) with (oids=false);
alter table sold_out owner to postgres;
grant all on table sold_out to postgres;
grant select, update, insert, delete on table sold_out to dboperator;
grant select, update, insert on table sold_out to dbuser;
grant select on table sold_out to dbanalytic;
create index f_tovar_id_btree on sold_out using btree (tovar_id);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.