powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / О хранении информации в справочниках
17 сообщений из 17, страница 1 из 1
О хранении информации в справочниках
    #32889980
karpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Каким образом лучше создавать справочники? Справочник где будет уникальный код записи и наименование записи, но таких справочников будет с десяток, либо создать один справочник с составным кодом, где есть уникальный номер и тип кода справочника. Что лучше зарекомендовало себя на практике?
Спасибо!
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32889987
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karpiДобрый вечер!
Каким образом лучше создавать справочники? Справочник где будет уникальный код записи и наименование записи, но таких справочников будет с десяток, либо создать один справочник с составным кодом, где есть уникальный номер и тип кода справочника. Что лучше зарекомендовало себя на практике?
Спасибо!

Для мелочевки типа единиц измерения, фамилий менеджеров, валюты можно сделать мультисправочник по второму варианту. Остальные справочники с множеством полей - в отдельные таблицы.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890012
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На каждый справочник - свою таблицу или набор таблиц.

Программы имеют "привычку" развиваться. Если в результате такого развития понадобиться добавить поле, набор полей или связанную таблицу к справочнику, то в случае если справочник в отдельной таблице - никаких проблем. Если же этот справочник - часть записей более общей таблицы, то масса проблем обеспечена.

По тем же соображениям не стоит делать одну "универсальную" форму для однотипных справочников. Максимум, можно сделать "универсальный" класс-формы. Но для каждого справочника надо сделать свой класс-наследник от этого универсального класса.

Кроме того, десяток - это не так много, как кажется.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890013
karpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда для мультисправочника при добавлении новой записи надо предусмотреть добавление типа справочника, т.е. если уникальный код проходит автоинкремент, а для типа справочника пишется еще код программы. Это делается в коде программы или в триггере?
Если рассматривать первый вариант, то тебя эти проблемы не волнуют.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890016
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМНа каждый справочник - свою таблицу или набор таблиц.

Программы имеют "привычку" развиваться. Если в результате такого развития понадобиться добавить поле, набор полей или связанную таблицу к справочнику, то в случае если справочник в отдельной таблице - никаких проблем. Если же этот справочник - часть записей более общей таблицы, то масса проблем обеспечена.

По тем же соображениям не стоит делать одну "универсальную" форму для однотипных справочников. Максимум, можно сделать "универсальный" класс-формы. Но для каждого справочника надо сделать свой класс-наследник от этого универсального класса.

Кроме того, десяток - это не так много, как кажется.

Не согласен. Как и куда может развиться справочник единиц измерения ???
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890055
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык сущность-то - ед. измерения - она одна! ;) Никуда - одна таблица справочная
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890063
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диченко
Не согласен. Как и куда может развиться справочник единиц измерения ???
Допустим, нам захотелось иметь указание в какой системе указана эта единица: метрическая, англо-американская или какая-то еще.

И как Вы будете выкручиваться если этот справочник входит в более общую таблицу? Отдельную таблицу - не предлагать! Это тот же отдельный справочник - вид сбоку
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890076
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вспомнил. Есть такая штука, называется "Общероссийский классификатор единиц измерения" (ОКЕИ). Тоже хотелось бы добавить

А еще "расшифровку" названия. Это для "шт" понятно, что штуки. Но есть более мудреные сокращения.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890259
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант - универсальная схема из трех таблиц: 1) собственно справочник (универсальный): тип, id, название 2) справочник атрибутов: id, название, размерность 3) значения атрибутов: id из 1-й таблицы, id из 2-й таблицы, значение атрибута. Абсолютная гибкость, однако. Еще можно сделать 4-ю таблицу: возможные сочетания id 1-го и 2-го, для контроля ввода.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890285
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Не согласен. Как и куда может развиться справочник единиц измерения ???
Из практики - возникла необходимость завести связь - типа одна тонна=1000 кг. Добавлять ради этого дополнительную таблицу облом;)
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890312
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот напрасно влом. Еще поплачете потом, когда глубоко в систему эти пересчеты внедрять придется. Делайте таблицу пересчетов. Причем, для скорости, в обе стороны.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890600
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для единиц измерения я использую таблицу с соотношением родитель-ребенок (Parent-child). Есть понятие главная единица измерения и подчиненные. Больше одного уровня вложения не имеет смысла. В таблице есть поле, задающее коэффициент пересчета подчиненной к главной (для главной = 1). Вот и все. (Поле ОКЕИ тоже присутствует).
С уважением, Алексей.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890632
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И это правильно, до тех пор, пока возникает задача пересчета только из любой единицы к главной в своей группе. Но в общем случае задача сложнее.
1. Пересчет из главной в неглавную своей группы. В общем случае, либо программа знает, какая из единиц главная, а какая нет, либо не знает. Если знает, нестрашно: уже в коде определяем, будет деление или умножение. Если не знает, приходится ей об этом говорить. А это дополнительные обращения к данным.
Более общая задача - пересчет из любой в любую внутри группы. Например, из центнеров в тонны (главная - килограмммы). Если задача реализована как "пересчеты только к главной", то придется искать 2 строки таблицы, а не одну. На один коэффициент умножаем, на другой делим. Все хорошо, но иногда время работы таких расчетов может стать критичным, тогда лучше завести таблицу с пересчетами любых единиц к любым.
Это я утрирую, конечно, на практике с единицами измерения такого еще нигде не видел. И сам использовал схему как у Aleksey-K (только группы единиц измерения у меня все же в отдельной табличке, а не parent-child). А вот с валютными курсами было такое дело: приходилось реализовывать так, что пока нет именно из USD в EUR, хотя к основной единице - RUR - оба курса заведены, ничего не будет работать. И даже не потому, что производные пересчеты могут быть неточны, а потому что надо было считать много и быстро! Кстати, при вставке курса USD -> EUR я автоматически вставлял и вторую строку с обратным ему курсом EUR -> USD. Денормализация ради ускорения расчетов, так сказать).
2. Пересчет единиц между группами. Например, продаем шнурки. 1 пара шнурков = 90 см длины шнурков ;-))) Для реализации этой задачи придется организовывать таблицу пересчетов между группами с учетом, например, товарной позиции ;-)))
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890723
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Urri по поводу скорости работы, но я забыл сказать, что таблица единиц измерений находится на MS SQL Server, по первичному ключу таблицы создан кластерный индекс, а по полю Koef (коэффициент пересчета) - не кластерный. В результате получается поиск по индексу, покрывающего запрос (covered index) - время поиска по такому индексу пренебрежительно мало, но вы правы, в большой запрос я бы не стал выключать функцию, осуществляющею перевод единиц измерения.
С уважением, Алексей.
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32890926
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Glyba!

То что ты предлагаешь по сути есть реляционная реализация объектной базы
данных - она имеет несоменные плюсы - "невиданная гибкость во всём теле" (c)
но и огромные минусы - начиная от катастрофического снижения
производительности, и заканчивая "заумными" запросами для получения
примитивных выборок... Хотя если работать через бизнес-объекты (а значит
отказаться от SQL и от курсоров как хранилища информации), то будет вполне
себе ничего решение - недостатки ООБД поглотятся недостатками (ну можно
сказать особенностями идеологии) собственно слоя бизнес-объектов :)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32891779
Glyba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi Glyba!

То что ты предлагаешь по сути есть реляционная реализация объектной базы
данных - она имеет несоменные плюсы - "невиданная гибкость во всём теле" (c)
но и огромные минусы - начиная от катастрофического снижения
производительности, и заканчивая "заумными" запросами для получения
примитивных выборок... Хотя если работать через бизнес-объекты (а значит
отказаться от SQL и от курсоров как хранилища информации), то будет вполне
себе ничего решение - недостатки ООБД поглотятся недостатками (ну можно
сказать особенностями идеологии) собственно слоя бизнес-объектов :)

Posted via ActualForum NNTP Server 1.1
Неужели снижение производительности прямо-таки катастрофическое будет? Дя и запросы не заумные, как представляется, всего-то одно объединение добавляется (я, правда, такую схему еще не реализовывал, только собираюсь, но идея нравится очень).
...
Рейтинг: 0 / 0
О хранении информации в справочниках
    #32893588
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Glyba!

Никто не запрещает попробовать и доложить результаты :) Благо не так это и
сложно...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / О хранении информации в справочниках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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