|
|
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
> у меня нет "одной основной ЕИ для класса" Очень хочется посмотреть, как в Вашем замечательном справочнике отражены простые факты: 1 кибибайт = 1024 байтам; 1 кибикилограмма в природе не существует. Ну, и чуть меньше хочется посмотреть на бардак с не метрическими величинами и константами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 17:23 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовТолько что я не называю это "семейством", ибо у меня нет "одной основной ЕИ для класса". Ничего на лету не считается. Просто через coalesce кроме "стандартного" отношения коэффициентов пытается использоваться еще более приоритетный прямой коэффициент. Хм. Фразы "на лету не считается" и "нет предрассчитанных коэффициентов" в моем представлении почти взаимоисключающие Кроме них, я вижу только два экстремальных варианта - данные "предвведены" вместо "предрасчитаны" (то есть вводятся коэффициенты всего ко всему) и "пересчет между ЕИ вообще нигде не ведется". Возможно, Вам таки следует более четко обрисовать, что же у Вас хранится и как, может быть просто привести репрезентативный фрагмент данных. В моем представлении, раз у Вас нет понятия основной ЕИ и одни ЕИ выражаются через произвольные другие ЕИ, значит, путь конвертации между двумя ЕИ может оказаться непредсказуемо долог; придется делать рекурсивный запрос или функцию, которая будет разматывать дерево зависимостей. Что за "стандартные отношения коэффициентов" я, признаться, не понял. Сергей ВаскецовУ меня это решено просто. Справочник ЕИ поддерживается полностью силами клиентов. Патчей, обновляющих данные в справочнике ЕИ, не припомню. Ну.... не стоит, наверное, закапываться. В любом случае вопрос сохранения согласованности данных потребует усилий, не в БД так в интерфейсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 17:48 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
ЕИ к-рая измеряется ЕИ в к-рой измеряется коэфф-ткг г 1000г мг 1000Кб б 1024КВт лс 1.36 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 19:59 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven Мало. Хотелось бы увидеть таблицу для, например, грамма-килограмма-тонны-золотника-фунта-пуда-унции-фунта-стоуна. Ну и авторства Сергея, чтобы в дальнейшем обсуждении не гадать, правильно ли мы поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 20:56 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
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, но это-то и правильно, потому что преобразования из пуда в килограммы и наоборот, вообще говоря, при наличии округления не взаимно обратны). Конвертация из одной ЕИ в другую запрещено, если они не связаны прямым отношением (то есть, одна должна быть основной, вторая - дополнительной для нее). Конвертация между двумя дополнительными ЕИ (одной основной ЕИ) есть просто умножение на отношение коэффициентов (есть еще модификация схемы с дополнительной прямой связкой двух дополнительных ЕИ, но принципиально она ничего не меняет). Замечу, что, например, кубометр может быть легко дополнительной ЕИ для тонны с уточнением по номенклатуре. Итого, имеем отказ от классов ЕИ (роль класса ЕИ играет сама основная ЕИ), возможность произвольной конвертации с максимальной точностью, но есть и недостатки (я их все и так знаю, так как схема работает много лет, они все "на поверхности", некоторые я привел, еще, например, такая практическая "беда", что напрямую ОКЕИ к такой "денормализованной" схеме "в лоб" не прикрутить, придется, правда несильно, поизвращаться с кодом ЕИ, потому что в такой схеме неясно, чьим атрибутом является номер ЕИ по ОКЕИ). Предложенная схема не ставит задачу запретить указание более одной кратной или дольной приставки, поэтому если юзер захочет ввести кибикилограмм - он это сделает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 12:26 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовДавайте без подробных таблиц и примеров. Как хотите. Я полагал, пример в данном случае будет короче и яснее, нежели описание. Сергей ВаскецовВсе сущности в системе, имеющие связь со справочником ЕИ, имеют обязательно связь с основной ЕИ OK. Итого, практически Вашу фразу "нет одной основной ЕИ для класса" в ранее использовавшейся терминологии следует понимать следующим образом: "для одной и той же меры может быть заведено несколько классов ЕИ с одной основной ЕИ в каждом". [то, что я назвал семейством] Кроме того, вместо межклассовых коэффициентов Вы используете "якобы внутриклассовые дополнительные". Не думаю, что имеет смысл подробно обсуждать эту схему. Основной вопрос, из которого собственно возникло это обсуждение, как мне кажется, исчерпан. Лично мне кажется, что стремление уложить все в одну таблицу в данном случае вредно, но это вопрос технический - мощность решения та же самая, вопрос только в количестве кода, требующегося для операций и проверок целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 14:13 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
> если юзер захочет ввести кибикилограмм - он это сделает Последний вопрос: почему Вы назвали это справочником? Вы сами описали Ваши ошибки, так что подробно на них останавливаться, видимо, не нужно. Замечу только, что попытки увязать ЕИ с ОКЕИ бессмысленны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 17:15 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
guest_20040621Последний вопрос: почему Вы назвали это справочником? Если честно, не очень понял этот вопрос. Есть какой-то критерий, что является справочником, а что нет, и то, что я написал, не удовлетворяет ему? Или это вопрос по поводу пользовательского интерфейса всей этой байды? guest_20040621Вы сами описали Ваши ошибки, так что подробно на них останавливаться, видимо, не нужно. Замечу только, что попытки увязать ЕИ с ОКЕИ бессмысленны. Скорее, это не ошибки, это намеренные упущения для достижения других, более важных в моем случае, целей. А то, что попытки увязать ЕИ с ОКЕИ бессмысленны - соглашусь, благо, пока мне удается отбиться от этого желания многих юзеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 17:27 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
> Есть какой-то критерий, что является справочником Общепринятых нет. Приведенный Вами пример не только справочником не является, но и вообще не может быть использован в реляционных структурах. Полагаю, Вы это понимаете не хуже меня. > это не ошибки У меня другая точка зрения. Любая задача может быть решена миллионом разных способов, в том числе и та, которую Вы называете "справочник ЕИ". Решения обсуждать есть смысл. А костыли и подпорки - нет. Всего хуже то, что ничего более стандартизованного и документированного, чем единицы измерений, и придумать невозможно. Нечего здесь изобретать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 20:36 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Есть какой-то критерий, что является справочником Общепринятых нет. Приведенный Вами пример не только справочником не является Интересно, это шутка юмора такая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 21:13 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
[quot guest_20040621Решения обсуждать есть смысл. А костыли и подпорки - нет. Всего хуже то, что ничего более стандартизованного и документированного, чем единицы измерений, и придумать невозможно. Нечего здесь изобретать.[/quot] Приведите свое стандартизованное решение, обсудим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 21:16 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34530725&tid=1544532]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 453ms |

| 0 / 0 |
