powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно делать view?
1 сообщений из 1, страница 1 из 1
Как правильно делать view?
    #34109068
metas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте, извините за вопрос ламерский.

Попытка через три реальные таблицы реализовать произвольное количество "виртуальных" таблиц, с произвольным набором полей...

Вот эти три таблички:
objects (ID,NAME) - хранит названия таблиц,
meta_desk (ID,NAME,OBJECT_ID) - хранит названия столбцов таблиц, вторичный ключ object_id связывает столбцы с конкретной таблицей из objects.
meta_value (ID,VALUE, META_ID, VALUE_ID) - хранит значения полей (в поле, которое называется value), вторичный ключ meta_id связывает значение поля со столбцом из meta_desk, а ключ value_id одинаков для каждого виртуального кортежа...

для каждой "виртуальной" таблицы надо сделать view...
например:

create or replace view area_ref (REF_ID, REF_NAME)
as
SELECT mv1.VALUE REF_Id,
mv2.VALUE REF_name
FROM objects,
meta_desk md1, meta_values mv1,
meta_desk md2, meta_values mv2
WHERE (
(objects.NAME = 'Area_REF')
AND
(objects.ID = md1.object_id)
AND
(objects.ID = md2.object_id)
AND
(md1.name = 'REF_Id')
AND
(md2.name = 'REF_name')
AND
(md1.ID = mv1.meta_id)
AND
(md2.ID = mv2.meta_id)
AND
(mv1.value_id = mv2.value_id)
)
т.е. для вьюшки с двумя столбцами приходится делать запрос из пяти таблиц...
если у вьюшки много полей такой подход приводит к запросу из десятков таблиц с десятками ограничений в условии where...

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


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