powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Postgres 10, справочник отелей + валют, быстрый поиск, посовестуйте
2 сообщений из 2, страница 1 из 1
Postgres 10, справочник отелей + валют, быстрый поиск, посовестуйте
    #39535334
Фотография MMM_Corp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

итак есть (очень упрощенно):
1. таблица отелей (id, название, id_валюты)
2. подвязана таблица категорий номеров, напр: "стандарт+, Люкс, премиум и т.д..." (id, id_отеля, название, цена)
3. есть справочник валют (id, curr_id_1, curr_id_2, rate), с данными курса в любом направлении, но также сделал функцию которая возвращает rate(коэффициент обмена) обмена для простоты

посоветуйте:
как обеспечить максимально быстрый поиск (учтите что напр. менеджер указывает цену в валюте отеля, а пользователь может проводить поиск в произвольной валюте)?

функция получения rate:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE OR REPLACE FUNCTION public.get_currency_rate (
  id1 smallint,
  id2 smallint
)
RETURNS real AS
$body$
declare 
	res real = 1;
BEGIN
	IF (id1!=id2) THEN
		res = (select rate 
	        from currency_data as c
            where (c.currency_id_1=id1) and (currency_id_2=id2)
    	    );        	
	END IF;        
    
    RAISE NOTICE 'rate=%', res;
    
    return res;
END;



таблица валют:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE public.currency_data (
  id INTEGER DEFAULT nextval('public.currency_data_id_seq'::text::regclass) NOT NULL,
  currency_id_1 SMALLINT NOT NULL,
  currency_id_2 SMALLINT NOT NULL,
  rate REAL NOT NULL,
  CONSTRAINT currency_data_idx UNIQUE(currency_id_1, currency_id_2),
  CONSTRAINT currency_data_pkey PRIMARY KEY(id)
) 
WITH (oids = false);


(таблица маленькая, поэтому тут будет seq scan, не знаю есть ли вообще выхлоп вешать составной уник, а может есть вред?)

задача кажется типичной, уверен кто-то да и решал ее, поделитесь опытом

Спасибо!
...
Рейтинг: 0 / 0
Postgres 10, справочник отелей + валют, быстрый поиск, посовестуйте
    #39535468
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MMM_Corpкак обеспечить максимально быстрый поискпоиск чего и по каким критериям?

официальные курсы меняются раз в сутки, пересчитывайте раз в сутки "цены в валюте отеля" во внутрисистемную валюту (ну например в $), при поиске валюту запроса конвертируйте во внутрисистемную.

а, что касается того "как лучше сделать на постгре", то это вам в профильный форум.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Postgres 10, справочник отелей + валют, быстрый поиск, посовестуйте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]