powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Прошу совета
25 сообщений из 42, страница 1 из 2
Прошу совета
    #35386025
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго Вам дня!

Суть проблемы:
Есть иерархический справочник всех ресурсов(SPR) . Есть схема производства, в которой 3 поля:
1. Сырье, 2. Полуфабрикат, 3. Компонент. Все поля ссылаются на справочник ресурсов, но для каждого поля берется своя ветка.
Чтобы даные были правильные, мы должны заполнять поля, каждое из соответсвующей ветки и после проверять правильность этого,т.е. поле сырье заполнять из ветки "сырье" SPR, поле полуфабрикаты из ветки "полуфабрикаты" SPR и тд.
Вот и вопрос: как сделать привязку полей с вершинами веток?
Как вариант, вижу использование переменных - но, как говорится, не наш метод :)

Может, что посоветуете?
...
Рейтинг: 0 / 0
Прошу совета
    #35386103
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarabtsevиспользование переменных
Правильней: предопределенных констант
...
Рейтинг: 0 / 0
Прошу совета
    #35387934
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что, артикул не может быть сырьем и полуфабрикатом одновременно? для разных ТП, естественно :-)
...
Рейтинг: 0 / 0
Прошу совета
    #35388192
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVа что, артикул не может быть сырьем и полуфабрикатом одновременно? для разных ТП, естественно :-)
В данном случае нет - все разграничено
...
Рейтинг: 0 / 0
Прошу совета
    #35388344
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой смысл тогда держать один справочник? или это не обсуждается? ;-) тогда только бизнес-логикой разграничивать - ограничения, триггеры, ХП...
...
Рейтинг: 0 / 0
Прошу совета
    #35388362
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVА какой смысл тогда держать один справочник? или это не обсуждается? ;-) тогда только бизнес-логикой разграничивать - ограничения, триггеры, ХП...
Спрашивал на форуме: Одна большая или несколько малентких таблиц - получается, что с одной работать лучше.
...
Рейтинг: 0 / 0
Прошу совета
    #35388393
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVтогда только бизнес-логикой разграничивать - ограничения, триггеры, ХП...

Сейчас надо выделять 3 ветви (т.е. их вершины), соответсвенно, надо помнить 3 значения. Со временем появятся новые условия и надо будет сохранять новые вершины, значит опять добавлять переменные. А если решат изменить ветку, то надо будет и переменную менять.
Это не так сложно сделать и руками, но хочется как-то автоматизировать, чтоб уменьшить вероятность ошибки. Один вариант уже вижу: использование доп.таблицы, в которой будет связка: таблица - поле - вершина ветки справочника.
...
Рейтинг: 0 / 0
Прошу совета
    #35388478
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так все-таки, что у вас за система: CRM или технологические процессы? Что-то мне кажется, что у Вас сейчас в одну таблицу сваливаются 3 различные сущности...
К тому же, не совсем понятно, откуда могут возникнуть доп.вершины справочника и как они будут учитываться в основной таблице... Опишите задачу подробнее
...
Рейтинг: 0 / 0
Прошу совета
    #35388508
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVТак все-таки, что у вас за система: CRM или технологические процессы? Что-то мне кажется, что у Вас сейчас в одну таблицу сваливаются 3 различные сущности...
К тому же, не совсем понятно, откуда могут возникнуть доп.вершины справочника и как они будут учитываться в основной таблице... Опишите задачу подробнее

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

Разработка будет идти по этапно:
1. Просто учет прихода, расхода.
2. WMS.
3. производство.
4. планирование.
5. хез

Уже на первом этапе вижу больше 10 справочников, а чем дальше тем их больше будет.Вот и хочется выбрать одну методику, для всех справочников. Ведь в 90% нужен только код и наименование, а для хранения особенностей исползуем справочник доп.параметров
...
Рейтинг: 0 / 0
Прошу совета
    #35388650
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не вижу большой проблемы в большом количестве справочников... Подгонять все справочники под одну гребенку тоже, на мой взгляд, не стоит, уж больно разные они бывают... В Вашем случае я бы добавил в справочник ТМЦ тип артикула - сырье, полуфабрикат и т.д. и решал бы все на уровне бизнес-логики. Правда, Вы так и не рассказали, как в схеме "сырье-полуфабрикат-компонент" будете учитывать появление новых типов ТМЦ :-)
...
Рейтинг: 0 / 0
Прошу совета
    #35388670
_VVP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TarabtsevСуть проблемы:
Есть иерархический справочник всех ресурсов(SPR) . Есть схема производства, в которой 3 поля:
1. Сырье, 2. Полуфабрикат, 3. Компонент. Все поля ссылаются на справочник ресурсов, но для каждого поля берется своя ветка.
...
Вот и вопрос: как сделать привязку полей с вершинами веток?
Как вариант, вижу использование переменных - но, как говорится, не наш метод :)
Может, что посоветуете?
С учетом ваших дальнейших описаний посоветую следующее:
1. Таблица SPR дополняется признаком-ссылкой на таблицу, описывающую тип ресурсов {сырье, полуфабрикат, компонент}.
2. Тогда в таблице схем производства заполнение любого из полей может осуществляться выборкой из таблицы SPR с ограничением по типу ресурсов.
...
Если вы хотите физически ограничить целостность в БД, тогда:
1. Таблица SPR дополняется альтернативным ключом {идентификатор_ресурса,тип_ресурса}
2. Таблица схем производства дополняется полем "тип_ресурса" и дополнительными внешними ключами на таблицу SPR по полям {идентификатор_ресурса,тип_ресурса}.
Таковы могут быть технические реализации вашего "алгоритма".
...
А вообще это не очень удачное проектирование.
Давайте рассмотрим вообще схему производства:
Грубо говоря, производство - это черный ящик, на входе которого поступает перечень сырья в каких-то пропорциях, а на выходе перечень продуктов и перечень отходов в других пропорциях. Имеется дополнительное ограничение - всегда соблюдается материальный баланс производства.
Тогда проектировать будем исходя из этих подходов:
item_type (id, name) - тип сырья, материалов и продуктов, здесь же может быть перечень типов отходов производства;
item (id, name, id_parent, id_item_type) - сырье, материалы и продукты, нужен внешний ключ на item_type и альтернативный ключ на id и id_item_type;
recipe (id, name, date, ...) - перечень рецептов (схем) производства;
recipe_raw (id, id_recipe, id_item, id_item_type, ...) - перечень сырья для рецепта, нужен внешний ключ на пару id_item и id_item_type;
recipe_product (id, id_recipe, id_item, id_item_type, ...) - перечень продуктов и отходов производства, нужен внешний ключ на пару id_item и id_item_type;
Количественные показатели для соблюдения материального баланса внесите самостоятельно.

Успехов.
...
Рейтинг: 0 / 0
Прошу совета
    #35388694
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVЯ не вижу большой проблемы в большом количестве справочников...
Если справочником не мало, то через время, забываешь, что в каком справочнике находится - лично я с этим сталкивался - было даже, что одно и тоже хранилось в 3(!)х таблицах :) - приходлось схему на стенку вешать. Да и с одной таблицей гораздо легче работать: одна форма, один набор триггеров и тд

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

Это пока и останавливает меня от реализации. Еще обдумываю все возможные ситуации.
...
Рейтинг: 0 / 0
Прошу совета
    #35388784
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarabtsev
Если справочником не мало, то через время, забываешь, что в каком справочнике находится - лично я с этим сталкивался - было даже, что одно и тоже хранилось в 3(!)х таблицах :) - приходлось схему на стенку вешать.

Есть такая вещь - словарь данных называется :-)

Tarabtsev
Да и с одной таблицей гораздо легче работать: одна форма, один набор триггеров и тд



Ведение словарей - это отдельная тема :-) Как в одном триггере или даже их наборе учесть все нюансы совершенно разных словарей я не очень себе представляю.... зато что из таких попыток получается - видел неоднократно :-)

а по существу _VVP_ выше уже написал :-) берете за основу и дорабатываете идею до своей реализации
...
Рейтинг: 0 / 0
Прошу совета
    #35388808
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_VVP_
Благодарю , обдумаю.
Успехов!

DmitryV... зато что из таких попыток получается - видел неоднократно :-)
Пример можно?
...
Рейтинг: 0 / 0
Прошу совета
    #35388886
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarabtsev
Пример можно?

Ну не буду же я сюда код выкладывать :-) да и давно это было... Вы и сами в сосотоянии представить, мне кажется, что получится, если в одном месте пытаются работать и с плоскими словарями "код-значение", и с иерархическими словарями на десяток уровней, и со словарями с доп.параметрами... Все это было сведено в одну таблицу вида "код в таблице-номер словаря-код в словаре-доп.поле1(код родителя)-доп.поля...", где словарей было несколько десятков, записей в них - несколько десятков тысяч.
...
Рейтинг: 0 / 0
Прошу совета
    #35388945
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryV в одном месте пытаются работать и с плоскими словарями "код-значение", и с иерархическими словарями на десяток уровней, и со словарями с доп.параметрами... Все это было сведено в одну таблицу вида "код в таблице-номер словаря-код в словаре-доп.поле1(код родителя)-доп.поля...", где словарей было несколько десятков, записей в них - несколько десятков тысяч.

Проблем не вижу - разве, что халатное отношение к написание кода и плохое тестирование. Но(!) Исправление ошибки в одном месте - исправит ошибку везде. А халатное отношение к написание кода и плохое тестирование скажется и при другой реализации - но ошибку прийдется исправлять во всех местах.
...
Рейтинг: 0 / 0
Прошу совета
    #35389000
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В любом случае Вам виднее, как делать ;-)
...
Рейтинг: 0 / 0
Прошу совета
    #35389028
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю Вас за помощь!
DmitryVВ любом случае Вам виднее, как делать ;-)
Думаю, думаю, думаю.
Хотя, наверное, все же правильней - сделать, а там видно будет, поскольку, мало ли что завтра будет.
А так, переделать всегда можно + доп. заработок на будущее.
...
Рейтинг: 0 / 0
Прошу совета
    #35389309
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tarabtsevдоп. заработок на будущее. или матюки сопровождающих
...
Рейтинг: 0 / 0
Прошу совета
    #35389351
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych Tarabtsevдоп. заработок на будущее. или матюки сопровождающих
И все же, с идеальных программ люди меньше получают. А работать приходится, не только ради удовольствия и правильности, но и ради денег

От сопровождающих многое(!), конечно, зависит: могут своим нытьем и ничегонеделанием классный реально проект завалить и наоборот: дерьмовый проект постоянно подталкивая, пиаря вытащить в классный!

Так что, сопоровождающих всегда подкармливаь надо, чтобы не матюкались
...
Рейтинг: 0 / 0
Прошу совета
    #35389535
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TarabtsevЕсли справочником не мало, то через время, забываешь, что в каком справочнике находится - лично я с этим сталкивался - было даже, что одно и тоже хранилось в 3(!)х таблицах :) -
Представил себе неземной кайф, охватывающих всех затронутых, обнаруживших, что одно и то же хранится в одной таблице, но три раза, причем со своими кодами, форматами и особенностями в каждом.
...
Рейтинг: 0 / 0
Прошу совета
    #35389538
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerПредставил себе неземной кайф, охватывающих всех затронутых, обнаруживших, что одно и то же хранится в одной таблице, но три раза, причем со своими кодами, форматами и особенностями в каждом.

Конечно же Вы правы - такое возможно.
Но все же , вероятность меньше.
...
Рейтинг: 0 / 0
Прошу совета
    #35397167
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перешел уже к разработке прав доступа и безопасности.
Очень сильно обрадовался, что если использовать только одну справочную таблицу - эти вопросы решаются элементарно.
А именно.
Имеем 2 таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SPRS 
(
ID,
PARENT,
NAME
...
)
Код: plaintext
1.
2.
3.
4.
5.
6.
USERS
(ID,
PARENT,
LOGIN,
...
)
Создаем еще одну таблицу
Код: plaintext
1.
2.
3.
4.
5.
SPRACCESS
(SPR,              ссылка на SPRS.ID
USER,             ссылка на USERS.ID
SELECT,          право на выборку
UPDATE,         право на изменение
...)

Теперь при любом доступе к SPRS, будь то выборка из справочника или выборка бизнес-операций, мы всегда будем выбирать, только то, на что у пользователя есть право. Так же, и изменять мы можем только то, на что есть право. Учитывая, что используем иерархический справочник, то очень легко будет настраивать доступ группам пользователей, и тд.
...
Рейтинг: 0 / 0
Прошу совета
    #35398019
DmitryV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эээ.... а какой объем справочников ожидается? и сколько пользователей? ;-)


смысл раздачи прав на КАЖДУЮ строку СПРАВОЧНИКА? может, права раздавать все-таки на данные? :-)
...
Рейтинг: 0 / 0
Прошу совета
    #35398040
Tarabtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryVсмысл раздачи прав на КАЖДУЮ строку СПРАВОЧНИКА?

А если в справочнике только 10 товаров, и каждый менеджер занимается только своим товаром? Зачем ему показывать остальные 9? Бывает и такое

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


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