Страница 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
более читабельно выглядит :roll:

Добавлено: 18 янв 2007, 15:00
Merlin
Особенно удачен такой подход в отношении RI. Никаких проблем - переписал процедуру, перекомпилировал, и все Ивановы стали Петровыми, а Сидоровы исчезли как класс, стали бесфамильными.

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

а по поводу петровых и сидоровых они не совсем похожи на справочные данные, хотя если конечно их брать как часто встречающие фамили то может быть.

просто такие данные как типы логирования прописываются глубоко в коде и пользователем сменятся не должны и никогда не будут.

Добавлено: 18 янв 2007, 15:38
Dimitry Sibiryakov
Не майся фигней. Вместо бэкапа только метаданных используй скрипт создания образцовой БД, в котором и заполняй все необходимые справочники.