хранение справочных данных

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

хранение справочных данных

Сообщение Attid » 18 янв 2007, 13:44

что-то 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

вопрос в следующем насколько это "нормально" и есть ли други пути решения.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 18 янв 2007, 14:13

Смысла нет никакого, потому что этот запрос не вернёт ни одной записи - ведь таблицы dev_log и dev_items пусты.

Это по-твоему, громоздкий запрос? Бу-га-га!!!

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 18 янв 2007, 14:35

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:

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 янв 2007, 15:00

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

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 18 янв 2007, 15:21

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

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

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

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 18 янв 2007, 15:38

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

Ответить