wiki:ReviewsFullView

Преглед: v_reviews_full

Својство Вредност
Шема kbnteam
Категорија Рецензии
Индексна поддршка Постоечка индексна поддршка

Опис

Ги обединува оцените за нарачки и достави, со ознака за типот на рецензијата.

Секој запис го задржува типот на рецензијата и соодветните оценки. Ако една рецензија се однесува и на нарачка и на достава, се прикажуваат двата записа.

Еден ред за секој запис во поттипот за нарачка или достава. Рецензиите без поттип не се прикажуваат. Компанијата и доставувачот кај рецензија за достава можат да бидат NULL.

Прегледот нема колона rest_id. Филтрирање по ресторан бара дополнително поврзување со податоците за нарачката или доставувачот.

Зависности

Табела / преглед Употреба
kbnteam.review Заеднички податоци за рецензиите.
kbnteam.order_review Рецензии за нарачки и оценки за храна и ресторан.
kbnteam.customer_order Клиентски нарачки, датуми, статуси и износи.
kbnteam.api_user Лични и контактни податоци за корисниците.
kbnteam.company_order Поврзување на компаниските нарачки со компанијата и доставата.
kbnteam.company Податоци за компаниите.
kbnteam.delivery_review Рецензии за достави и оценки за доставувач и брзина.
kbnteam.delivery Достави, датуми, забелешки и назначени доставувачи.

Излезни колони

Колона Опис Извор за order Извор за delivery
review_id Идентификатор на рецензијата. review.review_id review.review_id
review_type Тип на рецензијата: order или delivery. 'order'::text 'delivery'::text
review_created_at Датум и време на рецензијата. review.review_created_at review.review_created_at
review_rating Општа оценка од 1 до 5. review.review_rating review.review_rating
review_comment Коментар за рецензијата. review.review_comment review.review_comment
order_id Идентификатор на клиентската нарачка. order_review.order_id NULL::integer
delivery_id Идентификатор на доставата. NULL::integer delivery_review.delivery_id
company_id Идентификатор на компанијата. company_order.company_id company_order.company_id
company_name Назив на компанијата. company.company_name company.company_name
customer_user_id Идентификатор на клиентот. api_user.user_id NULL::integer
customer_first_name Име на клиентот. api_user.user_first_name NULL::varchar(255)
customer_last_name Презиме на клиентот. api_user.user_last_name NULL::varchar(255)
driver_user_id Идентификатор на доставувачот. NULL::integer api_user.user_id
driver_first_name Име на доставувачот. NULL::varchar(255) api_user.user_first_name
driver_last_name Презиме на доставувачот. NULL::varchar(255) api_user.user_last_name
order_review_food_rating Оценка за храната од 1 до 5. order_review.order_review_food_rating NULL::integer
order_review_res_rating Оценка за ресторанот од 1 до 5. order_review.order_review_res_rating NULL::integer
del_review_courier_rating Оценка за доставувачот од 1 до 5. NULL::integer delivery_review.del_review_courier_rating
del_review_speed_rating Оценка за брзината од 1 до 5. NULL::integer delivery_review.del_review_speed_rating

SQL дефиниција

CREATE OR REPLACE VIEW kbnteam.v_reviews_full AS
SELECT
    r.review_id,
    'order'::text AS review_type,
    r.review_created_at,
    r.review_rating,
    r.review_comment,
    orv.order_id,
    NULL::integer AS delivery_id,
    co.company_id,
    cmp.company_name,
    au.user_id AS customer_user_id,
    au.user_first_name AS customer_first_name,
    au.user_last_name AS customer_last_name,
    NULL::integer AS driver_user_id,
    NULL::varchar(255) AS driver_first_name,
    NULL::varchar(255) AS driver_last_name,
    orv.order_review_food_rating,
    orv.order_review_res_rating,
    NULL::integer AS del_review_courier_rating,
    NULL::integer AS del_review_speed_rating
FROM kbnteam.review r
JOIN kbnteam.order_review orv ON orv.review_id = r.review_id
JOIN kbnteam.customer_order o ON o.order_id = orv.order_id
JOIN kbnteam.api_user au ON au.user_id = o.customer_user_id
JOIN kbnteam.company_order co ON co.comp_order_id = o.comp_order_id
JOIN kbnteam.company cmp ON cmp.company_id = co.company_id

UNION ALL

SELECT
    r.review_id,
    'delivery'::text AS review_type,
    r.review_created_at,
    r.review_rating,
    r.review_comment,
    NULL::integer AS order_id,
    drvrev.delivery_id,
    co.company_id,
    cmp.company_name,
    NULL::integer AS customer_user_id,
    NULL::varchar(255) AS customer_first_name,
    NULL::varchar(255) AS customer_last_name,
    du.user_id AS driver_user_id,
    du.user_first_name AS driver_first_name,
    du.user_last_name AS driver_last_name,
    NULL::integer AS order_review_food_rating,
    NULL::integer AS order_review_res_rating,
    drvrev.del_review_courier_rating,
    drvrev.del_review_speed_rating
FROM kbnteam.review r
JOIN kbnteam.delivery_review drvrev ON drvrev.review_id = r.review_id
JOIN kbnteam.delivery d ON d.delivery_id = drvrev.delivery_id
LEFT JOIN kbnteam.api_user du ON du.user_id = d.driver_user_id
LEFT JOIN kbnteam.company_order co ON co.delivery_id = d.delivery_id
LEFT JOIN kbnteam.company cmp ON cmp.company_id = co.company_id;

Индексна поддршка

За овој поглед не се додава посебна група индекси. Постоечката индексна поддршка е доволна за тестираните прашалници. Индексите на заедничките табели можат да се користат и од други погледи.

Тестирање на перформанси

SELECT

Времето на извршување на SELECT прашалникот е прифатливо за редовното користење на погледот. Постоечката индексна поддршка е доволна за тестираните прашалници.

INSERT и UPDATE

Тестирани се по еден INSERT и еден UPDATE врз kbnteam.review, главната табела на погледот. Се тестира додавање рецензија и промена на оценката и коментарот.

Операција Execute (ms) Fetch (ms) Вратени редови
INSERT 15 18 1
UPDATE 16 15 1

Execute е времето на извршување прикажано во DBeaver. Fetch вредностите се преземени од дополнетата евиденција на тестирањето. Ова се клиентски времиња, изразени во милисекунди.

Двете операции се успешни и враќаат по еден ред преку RETURNING. По мерењето промените се вратени со ROLLBACK.

Тестот се однесува на табелата review. За приказ во погледот, рецензијата треба да биде поврзана со нарачка или достава.

INSERT и UPDATE се извршуваат со прифатлива брзина. Овие мерења ја опишуваат тестираната состојба на базата и не се споредба пред и по индексирање.

Last modified 10 days ago Last modified on 09/16/26 11:54:57
Note: See TracWiki for help on using the wiki.