Страница 1 из 1
хранение справочных данных
Добавлено: 18 янв 2007, 13:44
Attid
что-то
kdv в FAQ совсем недобрые ответы дает, но поробую и я задать вопрос
хотелось бы чтоб база была полностью работоспособна после восстановления только метаданных. для это го надо хранить справочники в виде процедур
Код: Выделить всё
CREATE PROCEDURE LOG_TYPES (
id integer)
returns (
name varchar(60))
as
begin
if (:id = 1) then
name = 'Включение';
if (:id = 2) then
name = 'Выключение';
if (:id = 3) then
name = 'Ошибка в работе';
suspend;
end
тогда получается довольно громоздкий запрос
Код: Выделить всё
select dl.dt_log, di.name, (select name from log_types(dl.id_lt)) from dev_log dl
join dev_items di on di.id = dl.id_dev
вопрос в следующем насколько это "нормально" и есть ли други пути решения.
Добавлено: 18 янв 2007, 14:13
WildSery
Смысла нет никакого, потому что этот запрос не вернёт ни одной записи - ведь таблицы dev_log и dev_items пусты.
Это по-твоему, громоздкий запрос? Бу-га-га!!!
Добавлено: 18 янв 2007, 14:35
Attid
WildSery писал(а):Смысла нет никакого, потому что этот запрос не вернёт ни одной записи - ведь таблицы dev_log и dev_items пусты.
не ну сначало пусты, но как только запустится система и будет добавлены записи в dev_items то в dev_log появятся записи,
просто чтоб из тестовой безы получить готову инстоляцию на новое предприятие хотелось бы сделать бекап с метеданными и оно было готовым, а не заботится о скрипте очистке.
WildSery писал(а):Это по-твоему, громоздкий запрос? Бу-га-га!!!
не ну я и сам писал запросы на несколько листов А4 тем не мение
запросик типа
Код: Выделить всё
select dl.dt_log, di.name, log_types(dl.id_lt) from dev_log dl
join dev_items di on di.id = dl.id_dev
или
Код: Выделить всё
select dl.dt_log, di.name, lt.name from dev_log dl
join dev_items di on di.id = dl.id_dev
join log_type lt on lt.id = dl.id_lt
более читабельно выглядит

Добавлено: 18 янв 2007, 15:00
Merlin
Особенно удачен такой подход в отношении RI. Никаких проблем - переписал процедуру, перекомпилировал, и все Ивановы стали Петровыми, а Сидоровы исчезли как класс, стали бесфамильными.
Добавлено: 18 янв 2007, 15:21
Attid
Merlin писал(а):Особенно удачен такой подход в отношении RI. Никаких проблем - переписал процедуру, перекомпилировал, и все Ивановы стали Петровыми, а Сидоровы исчезли как класс, стали бесфамильными.
даже не знаю что ответь так как не очень понял что имеется ввиду под RI
а по поводу петровых и сидоровых они не совсем похожи на справочные данные, хотя если конечно их брать как часто встречающие фамили то может быть.
просто такие данные как типы логирования прописываются глубоко в коде и пользователем сменятся не должны и никогда не будут.
Добавлено: 18 янв 2007, 15:38
Dimitry Sibiryakov
Не майся фигней. Вместо бэкапа только метаданных используй скрипт создания образцовой БД, в котором и заполняй все необходимые справочники.