powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблицы едениц измерений баз данных
11 сообщений из 36, страница 2 из 2
Таблицы едениц измерений баз данных
    #34524140
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> у меня нет "одной основной ЕИ для класса"

Очень хочется посмотреть, как в Вашем замечательном справочнике отражены простые факты: 1 кибибайт = 1024 байтам; 1 кибикилограмма в природе не существует. Ну, и чуть меньше хочется посмотреть на бардак с не метрическими величинами и константами.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34524228
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовТолько что я не называю это "семейством", ибо у меня нет "одной основной ЕИ для класса".

Ничего на лету не считается. Просто через coalesce кроме "стандартного" отношения коэффициентов пытается использоваться еще более приоритетный прямой коэффициент.
Хм. Фразы "на лету не считается" и "нет предрассчитанных коэффициентов" в моем представлении почти взаимоисключающие Кроме них, я вижу только два экстремальных варианта - данные "предвведены" вместо "предрасчитаны" (то есть вводятся коэффициенты всего ко всему) и "пересчет между ЕИ вообще нигде не ведется".

Возможно, Вам таки следует более четко обрисовать, что же у Вас хранится и как, может быть просто привести репрезентативный фрагмент данных. В моем представлении, раз у Вас нет понятия основной ЕИ и одни ЕИ выражаются через произвольные другие ЕИ, значит, путь конвертации между двумя ЕИ может оказаться непредсказуемо долог; придется делать рекурсивный запрос или функцию, которая будет разматывать дерево зависимостей. Что за "стандартные отношения коэффициентов" я, признаться, не понял.

Сергей ВаскецовУ меня это решено просто. Справочник ЕИ поддерживается полностью силами клиентов. Патчей, обновляющих данные в справочнике ЕИ, не припомню.
Ну.... не стоит, наверное, закапываться. В любом случае вопрос сохранения согласованности данных потребует усилий, не в БД так в интерфейсе.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34524541
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕИ к-рая измеряется ЕИ в к-рой измеряется коэфф-ткг г 1000г мг 1000Кб б 1024КВт лс 1.36 ?
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34524626
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven
Мало. Хотелось бы увидеть таблицу для, например, грамма-килограмма-тонны-золотника-фунта-пуда-унции-фунта-стоуна. Ну и авторства Сергея, чтобы в дальнейшем обсуждении не гадать, правильно ли мы поняли.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34528809
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerМало. Хотелось бы увидеть таблицу
Давайте без подробных таблиц и примеров. Я просто попытаюсь написать, как это устроено, без уточнения по номенклатуре и прочих побочных фенечек. Есть 2 рабочих варианта, один более "нормализованный", другой менее. Буду описывать менее "нормализованный", он проще в реализации.

Итак, есть основная таблица справочника ЕИ. Зовется ed. В ней есть поля id_ed (PK), ed_code (varchar, not null), ed_koeff и id_ed_main (необязательная ссылка на основную ЕИ для дополнительных ЕИ). Уникальность по паре полей (ed_code,id_ed_main) . Соответственно,если в ed у записи id_ed_main is null - она основная ЕИ, у нее всегда ed_koeff=1. Все записи, кто на нее ссылается по id_ed_main - это дополнительные ЕИ для нее. Все сущности в системе, имеющие связь со справочником ЕИ, имеют обязательно связь с основной ЕИ и опциональную связь с одной из ее дополнительных ЕИ, если это надо (например, справочник номенклатуры, составы документов, рецепты). Соответственно, никто не мешает завести в качестве основных ЕИ и метр, и км, и пк, и нм. К ним можно наделать дополнительных ЕИ. Соответственно, записей с ed_code='мкм' может быть в таблице ed много, но у них обязательно разные id_ed_main (одно может быть NULL-ом; на самом деле в таблице ed реализован более строгий контроль признака основной ЕИ, так что обсуждать различия реализации уникальности индексов по необязательным полям в разных СУБД я здесь не намерен). По идее, если захочется изменить, например, микрон на мкм, то придется править кучу строк, что, строго говоря, не приветствуется (абстрагируясь от того, насколько часто это потребуется делать в интерфейсе конечному пользователю). Поэтому-то и имеется 2 основных варианта, в обоих уникальность по паре полей для дочерних ЕИ оставлена, но во втором варианте код заменен на еще одну ссылку. В первом все оставлено как есть, ибо еще вопрос, является ли метр одной и той же сущностью, если он является дочерней ЕИ для километра и для микрометра. Это не настолько очевидно, как кажется, достаточно вспомнить, что определения ЕИ в системе СИ (а есть и другие системы) менялись несколько раз, и в последней редакции скорость света в вакууме известна точно, потому что метр определяется по ней, а не наоборот. В любом случае, требуется дополнительный серверный код и определенный гуй, чтобы, грубо говоря, совсем уж откровенно "не налажаться" при заполнении справочника и чтобы была возможность подставить правильный коэффициент из связки мкм->см в связку см->мкм. Неметрические ЕИ реализуются очень просто. Заводится новая ЕИ, например, 'пуд'. К ней дополнительная 'золотник'. Для 'кг' заводится в качестве дополнительной 'пуд'. А для 'пуд' заводится дополнительная ЕИ 'кг' (замечу, что из-за округления произведение коэффициентов может не дать точно 1, но это-то и правильно, потому что преобразования из пуда в килограммы и наоборот, вообще говоря, при наличии округления не взаимно обратны). Конвертация из одной ЕИ в другую запрещено, если они не связаны прямым отношением (то есть, одна должна быть основной, вторая - дополнительной для нее). Конвертация между двумя дополнительными ЕИ (одной основной ЕИ) есть просто умножение на отношение коэффициентов (есть еще модификация схемы с дополнительной прямой связкой двух дополнительных ЕИ, но принципиально она ничего не меняет). Замечу, что, например, кубометр может быть легко дополнительной ЕИ для тонны с уточнением по номенклатуре. Итого, имеем отказ от классов ЕИ (роль класса ЕИ играет сама основная ЕИ), возможность произвольной конвертации с максимальной точностью, но есть и недостатки (я их все и так знаю, так как схема работает много лет, они все "на поверхности", некоторые я привел, еще, например, такая практическая "беда", что напрямую ОКЕИ к такой "денормализованной" схеме "в лоб" не прикрутить, придется, правда несильно, поизвращаться с кодом ЕИ, потому что в такой схеме неясно, чьим атрибутом является номер ЕИ по ОКЕИ). Предложенная схема не ставит задачу запретить указание более одной кратной или дольной приставки, поэтому если юзер захочет ввести кибикилограмм - он это сделает.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34529259
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовДавайте без подробных таблиц и примеров.
Как хотите. Я полагал, пример в данном случае будет короче и яснее, нежели описание.

Сергей ВаскецовВсе сущности в системе, имеющие связь со справочником ЕИ, имеют обязательно связь с основной ЕИ
OK. Итого, практически Вашу фразу "нет одной основной ЕИ для класса" в ранее использовавшейся терминологии следует понимать следующим образом: "для одной и той же меры может быть заведено несколько классов ЕИ с одной основной ЕИ в каждом". [то, что я назвал семейством] Кроме того, вместо межклассовых коэффициентов Вы используете "якобы внутриклассовые дополнительные".

Не думаю, что имеет смысл подробно обсуждать эту схему. Основной вопрос, из которого собственно возникло это обсуждение, как мне кажется, исчерпан. Лично мне кажется, что стремление уложить все в одну таблицу в данном случае вредно, но это вопрос технический - мощность решения та же самая, вопрос только в количестве кода, требующегося для операций и проверок целостности.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34530129
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> если юзер захочет ввести кибикилограмм - он это сделает

Последний вопрос: почему Вы назвали это справочником?

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

guest_20040621Вы сами описали Ваши ошибки, так что подробно на них останавливаться, видимо, не нужно. Замечу только, что попытки увязать ЕИ с ОКЕИ бессмысленны.
Скорее, это не ошибки, это намеренные упущения для достижения других, более важных в моем случае, целей. А то, что попытки увязать ЕИ с ОКЕИ бессмысленны - соглашусь, благо, пока мне удается отбиться от этого желания многих юзеров.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34530677
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Есть какой-то критерий, что является справочником

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

> это не ошибки

У меня другая точка зрения. Любая задача может быть решена миллионом разных способов, в том числе и та, которую Вы называете "справочник ЕИ". Решения обсуждать есть смысл. А костыли и подпорки - нет.

Всего хуже то, что ничего более стандартизованного и документированного, чем единицы измерений, и придумать невозможно. Нечего здесь изобретать.
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34530725
оксюморон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> Есть какой-то критерий, что является справочником
Общепринятых нет. Приведенный Вами пример не только справочником не является
Интересно, это шутка юмора такая?
...
Рейтинг: 0 / 0
Таблицы едениц измерений баз данных
    #34530731
тот же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot guest_20040621Решения обсуждать есть смысл. А костыли и подпорки - нет.
Всего хуже то, что ничего более стандартизованного и документированного, чем единицы измерений, и придумать невозможно. Нечего здесь изобретать.[/quot]
Приведите свое стандартизованное решение, обсудим.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Таблицы едениц измерений баз данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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