|
|
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
ДОбрый день. ТАкой вопрос . Есть ли стандартные шаблоны для таблиц едениц измерений. Дабы не изобретать велосипед. Пример есть несколько единиц измерений СИ Ток - Амперы Напряжение - Вольты Активная Энергия - W*(60*60s) - ваттчасы При этом нужны порожденные единицы тоже допустим милли амперы , КилоВаттЧасы..и т д... Так вот вопрос есть ли что-то стандартное по этому поводу. ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2006, 12:35 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Создайте справочник(можно древовидный) единиц измерения с указанием коеф. пересчёта. Упоминание АМПЕР имеет коэф=1 МиллиАмпер Коеф.=0,001 Также полезно указать деноминатор т.е. "допустимость деления" Для ШТ деном.=1 Для КГ деном.=0,001 Для БуханкаХлеба деном.=0,25 или 0,5 если допустим отпуск половинок/четвертушек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2006, 14:18 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Группы единиц измерений (меры длины, веса итп). Справочник. Удобно выделить особую группу "контейнеры" - в ней будут "упаковка", "ящик" итп. Единицы измерения. Относятся к группам, в каждой группе отмечена единственная базовая единица, для прочих вводятся коэффициенты пересчета в базовую. Межгрупповые коэффициенты пересчета. Вводит коэффициент пересчета между двумя ЕИ, атрибуты задают дополнительные условия. Смысл: для товара "ПЕПСИ 2Л" "1 штука" = "2 л", а "1 упаковка" = "6 штук". Для товара "ПИВО 0.5Л" другие записи с другими коэффициентами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2006, 15:38 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
ОКЕИ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 09:03 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
В пищевке, химии и др. пересчет единиц измерения для данного наименования материала к тому же параметризуется. 1 литр бензина при температуре ... = ... кг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 10:31 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, *км=*м=*дм=*см=*мм. Зарание спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 22:15 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Надо бы начать с изучения русского. Зарание ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 22:33 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
iscrafmНадо бы начать с изучения русского. Согласен. Без этого вряд ли удастся понять и применить ответ: тугугл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 22:50 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
LSVСоздайте справочник(можно древовидный) Упаси Боже от деревьев в столь просто й задаче! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2007, 23:43 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
gybsonОКЕИ+1 Читайте Общероссийский классификатор единиц измерений (ОКЕИ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 13:13 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Cat2 LSVСоздайте справочник(можно древовидный) Упаси Боже от деревьев в столь простой задаче!А что Вас испугало ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 15:27 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
LSVА что Вас испугало ? Не то чтобы испугало, просто... сомнительная мысль, назовем так. Сейчас прикинул, когда это может быть удобно, придумал единственный вариант - какой-нибудь онлайновый сервис вида "перевод из любых единиц в любые". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2007, 15:30 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
softwarerНе то чтобы испугало, просто... сомнительная мысль, назовем так. Сейчас прикинул, когда это может быть удобно, придумал единственный вариант - какой-нибудь онлайновый сервис вида "перевод из любых единиц в любые".С сомнительностью согласен. Потому и указал "возможно". Кому как нравится. Некоторые справочники со временем разрастаются и появляется необходимость упрощения поиска и классификации строк по типам. Древовидность тут может помочь. ЗЫ: Не должно быть никакой проблемы превращения справочника из плоского в древовидный и наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2007, 10:57 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Ну что ж, дерево здесь и правда не нужно. А нужно сделать так: Классы ЕИ <----- ЕИ (вес/объем/время) (кг|г|т / м3|л|мл| / с|мин.|час.|сут.) В каждом классе 1 ЕИ выбирается за основную, а внутриклассовые коэффициенты задаются для всех неосновных ЕИ к основной. Переназначение основной ЕИ после первого назначения в своем классе не допускается. Коэффициенты допускается вводить только после выбора основной ЕИ класса. Можно реализовать логику и так, что первая введенная ЕИ в классе автоматически становится основной, а все прочие ЕИ - производными. Коэффициент пересчета для основной ЕИ, естественно, = 1. Например, в классе "объем" основной ЕИ назначен м3, и для всех остальных ЕИ прописаны коэффициенты их пересчета в кубометры. Например, для литров 0.001, а для мл 0.000001 Пересчет в пределах класса будет равен отношению коэффициентов ЕИ, участвующих в пересчете. Например, переводим в литры миллилитры. 1000 мл = 1000*0.000001/0.001 = 1л А еще междуклассовые пересчеты могут быть. Например, 1 красный кирпич весит 3 кг. Так вот, конкретно для этого сорта кирпичей 1 шт = 3 кг. А для силикатных, например, 1 шт = 5 кг. Или 1 коробка с каким-то конкретным содержимым весит 15 кг и занимает объем 0.045 м3. Тогда для конкретно этого содержимого 1 кг = 0.045/15 = 0.003 м3. Это если базовой ЕИ выберем кг. А если за основу возьмем м3, то запишем 1 м3 = 333.33333 кг. Для хранения таких пересчетов нужны будут дополнительные таблицы и связка с номенклатурным справочником. А еще бывают производные ЕИ. Например, 1 лс = 1 кг * 1 м / 1 с. Но это уже физика, и я не думаю, что в учетной системе такие зависимости вообще потребуется реализовывать. ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 03:30 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Про комментарий ModelR не стоит забывать - не все коэффициенты пересчета между классами можно задать константой. Его пример с увеличением объема бензина в зависимости от температуры - подобное для некоторых бизнесов оказывается очень важно. Естественно, такие зависимости здорово усложняют структуру данных. ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 03:35 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Urri1 лс = 1 кг * 1 м / 1 с ЧЕГО-ЧЕГО? Вы с размерностями явно ошиблись. Вт = Дж/с = кг * (м/с)^2 / с = кг * м^2 / с^3. (здесь ^ - степень). А лс - вообще не метрическая ЕИ, но той же размерности, что и Вт (ЕИ измерения мощности). Если по существу темы - метод предложили рабочий, только он будет давать погрешности при отношении неметрических ЕИ между собой через метрические. Да и не всегда удобно бывает выбрать одну основную ЕИ, например, что взять за основную ЕИ длины, пс, км, м или нм? По идее, зависит от задачи, но по Вашей схеме, в БД может быть только одна основная ЕИ длины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 15:40 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовДа и не всегда удобно бывает выбрать одну основную ЕИ, например, что взять за основную ЕИ длины, пс, км, м или нм? По идее, зависит от задачи, но по Вашей схеме, в БД может быть только одна основная ЕИ длины. Не очень понял сути Вашей мысли. С моей точки зрения, практически все равно, что именно брать за основную единицу - поскольку это почти нигде не играет особой роли, есть только технические моменты - невыход за размерность, занимаемое место итп. Подозреваю, причина в расхождении трактовки роли основной единицы. С моей точки зрения, у нее только одна роль - быть эталоном, тем, от чего считаются коэффициенты других единиц. С точки зрения учета можно сказать, что все учитываемые количества переводятся в основную единицу - а можно и не говорить, можно выбрать учетную единицу свою для каждого товара. И мне кажется, именно каким-то подобным "навешиванием дополнительного функционала" Ваша мысль и обусловлена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 15:47 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
UrriПереназначение основной ЕИ после первого назначения в своем классе не допускается. Можно и допустить. Принципиальных проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 15:50 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
softwarerНе очень понял сути Вашей мысли Urri предложил "В каждом классе 1 ЕИ выбирается за основную", поэтому, так как "длина" - класс ЕИ (в терминах Urri), то основная ЕИ длины у него может быть только одна. Предположим, это метр. Соответственно, если в одной БД есть данные по астрономии и атомной физике, то коэффициенты перевода различаются на 20-30 порядков. Именно поэтому проще не фиксировать одну основную ЕИ для класса ЕИ, а разрешить формирование "дополнительных" ЕИ для любой ЕИ (как у меня, собственно, и сделано). Таким образом, я не про то, что "как предлагает Urri, так в принципе нельзя", а про то, что "можно по-другому, чтобы было проще пользоваться". То что "можно выбрать учетную единицу свою для каждого товара" безусловно верно, но непосредственно к обсуждению построения справочника ЕИ не относится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:01 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов Понял, и оказался прав :) C моей точки зрения, то, о чем Вы говорите - вопрос интерфейса ввода, а не структуры данных. Когда я ввожу новую единицу, можно сделать интерфейс со вводом коэффициента к основной ЕИ, можно - со вводом коэффициента к выбираемой ЕИ и так далее, в данных это никак не отражается. Роль основной ЕИ - в удобстве пересчета. Раз любая ЕИ имеет коэффициент к основной, а межклассовые коэффициенты также связывают основные ЕИ, значит задача "сложить два литра пива с шестью банками и выдать результат в пьяных сотрудниках" выполняется легко, просто, быстро, и что самое главное - надежно. И эта роль достаточно значима для того, чтобы "иметь ЕИ и только одну", имхо. Конечно, можно усложнить эту структуру, и хранить как основные данные "коэффициенты пересчета в неосновные ЕИ". В результате по сути получится дерево, в котором ОЕИ - корень, но путь до корня может занять несколько шагов. Однако, при этом: Сложнее делать пересчет. Потребуется делать денормализацию, держать предрассчитанную таблицу коэффициентов Придется постоянно проверять "деревянность" данных - отсутствие циклов и связность графа Придется постоянно проверять согласованность данных - скажем, для пива заданные и хранящиеся коэффициенты преобразования "из литров в килограммы" и "из кубометров в килограммы" должны соответствовать коэффициенту между литрами и кубометрами. Итого - не вижу смысла так поступать. Лучше хранить с основной единицей, а интерфейс - как удобнее в конкретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:25 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
softwarerв данных это никак не отражается Не соглашусь. Безусловно, можно взять очень широкие флоатовые или нумериковые поля (чтобы не терять точность при больших по модулю порядках) или хранить коэффициенты в логарифмическом виде, но в любом случае это требует 1) больше места и 2) принятия решения о порядке вычисления операций. Например, если есть 2 ЕИ масштаба аттометра или фемтометра и между ними надо перевести значение, то придется сначала взаимно приводить их коэффициенты, а уж потом умножать или делить значение на полученный коэффициент. Так как у меня - я обхожусь сермяжным флоатовым полем и для коэффициентов перевода, и для самих значений количеств. При этом флоат делает именно то, что от него требуется - хранение с максимальной точностью в рамках ограничения по размеру поля, независимо от того, ввел я 10^-15 или 10^18. А моя схема позволяет все то, что схема Urri (то есть, любые две ЕИ одного класса можно связать через 2 коэффициента), но и даже больше, а именно, если очень потребуется, то между любыми двумя ЕИ одного класса можно установить один коэффициент пересчета, минуя основную ЕИ (фактически, любая ЕИ может играть роль основной). Кроме того, одна основная ЕИ дает погрешность при переводе между неметрическими ЕИ (переводе, замечу, изначально точном), ибо исходные коэффициенты пересчета от неметрических ЕИ к основной метрической ЕИ вводятся с погрешностью. softwarer Сложнее делать пересчет. Потребуется делать денормализацию, держать предрассчитанную таблицу коэффициентов Я все же думаю, я не смог толком объяснить, как у меня сделано. Ну да и ладно. Разве что замечу, что никакой предрассчитанной таблицы коэффициентов нет. softwarer Придется постоянно проверять "деревянность" данных - отсутствие циклов и связность графа Продуманный интерфейс решает эту задачу даже без дополнительной логики в триггерах. softwarerПридется постоянно проверять согласованность данных - скажем, для пива заданные и хранящиеся коэффициенты преобразования "из литров в килограммы" и "из кубометров в килограммы" должны соответствовать коэффициенту между литрами и кубометрами. Скажем так, принципиальную возможность их несоответствия я рассматриваю скорее как фичу, а не как багу. В любом случае, все, что Вы имеете в виду под "придется постоянно", реализуется ровно один раз в триггерах и потом работает как часы. softwarerИтого - не вижу смысла так поступать. Лучше хранить с основной единицей, а интерфейс - как удобнее в конкретном случае. 1. Именно это и называется "зависит от задачи". 2. Про интерфейс я вообще не писал в своем исходном сообщении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 17:07 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов softwarerв данных это никак не отражается Не соглашусь. Согласен, стоило сказать "принципиально не отражается". Я сначала написал некий абзац, потом потер его, и потерял упоминание о технических аспектах. Сергей Васкецовно в любом случае это требует 1) больше места Да не сказал бы, различия малозначительны. Правда, это наверное зависит от формата хранения в конкретной СУБД. В моем случае - Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Сергей ВаскецовНапример, если есть 2 ЕИ масштаба аттометра или фемтометра и между ними надо перевести значение, то придется сначала взаимно приводить их коэффициенты, а уж потом умножать или делить значение на полученный коэффициент. И в чем проблема в этом случае? Сергей ВаскецовА моя схема позволяет все то, что схема Urri Ваша схема - более общая, нежели "схема Urri". И поэтому операции в ней сложнее. Скажем, я могу пересчитать "из любой ЕИ в любую" одним запросом, Вам придется использовать как минимум функцию, потихоньку ползущую по связям. И хорошо если не потребуется писать алгоритм обхода графа конвертаций, да с возвратами. Сергей Васкецова именно, если очень потребуется, то между любыми двумя ЕИ одного класса можно установить один коэффициент пересчета, минуя основную ЕИ И тратить силы на проверку согласованности. Сергей ВаскецовКроме того, одна основная ЕИ дает погрешность при переводе между неметрическими ЕИ Cогласен, в этом есть определенная проблема. Появляется желание внедрить еще понятие "семейства", что ли, и иметь основную ЕИ для каждого семейства. Сергей Васкецов softwarer Сложнее делать пересчет. Потребуется делать денормализацию, держать предрассчитанную таблицу коэффициентов Я все же думаю, я не смог толком объяснить, как у меня сделано. Ну да и ладно. Разве что замечу, что никакой предрассчитанной таблицы коэффициентов нет. Хм. Имхо в Вашей схеме расчет коэффициента на лету окажется неприятной штукой. Сергей Васкецов softwarer Придется постоянно проверять "деревянность" данных - отсутствие циклов и связность графа Продуманный интерфейс решает эту задачу даже без дополнительной логики в триггерах. Данные вносятся не только через интерфейс. Нет такой БД, в которой время от времени не выполняли бы патчи и прочие sql-скрипты. Сергей Васкецов softwarerПридется постоянно проверять согласованность данных - скажем, для пива заданные и хранящиеся коэффициенты преобразования "из литров в килограммы" и "из кубометров в килограммы" должны соответствовать коэффициенту между литрами и кубометрами. Скажем так, принципиальную возможность их несоответствия я рассматриваю скорее как фичу, а не как багу. В любом случае, все, что Вы имеете в виду под "придется постоянно", реализуется ровно один раз в триггерах и потом работает как часы. Ну, фича..... опасная, назовем так. Реализуется, конечно, один раз. Но тем не менее, это работа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 17:41 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов Urri1 лс = 1 кг * 1 м / 1 с ЧЕГО-ЧЕГО? Вы с размерностями явно ошиблись. Вт = Дж/с = кг * (м/с)^2 / с = кг * м^2 / с^3. (здесь ^ - степень). А лс - вообще не метрическая ЕИ, но той же размерности, что и Вт (ЕИ измерения мощности). Если по существу темы - метод предложили рабочий, только он будет давать погрешности при отношении неметрических ЕИ между собой через метрические. Да и не всегда удобно бывает выбрать одну основную ЕИ, например, что взять за основную ЕИ длины, пс, км, м или нм? По идее, зависит от задачи, но по Вашей схеме, в БД может быть только одна основная ЕИ длины.Дж, если я физику не окончательно забыл, строится от Н, а не от кг. А Н переводятся в кг как раз умножением на ускорение (м/с2). И получается что Н * м2/с3 (Дж) [ = Н * м/с2 * м/с ] = С * кг * м/с (лс, здесь С - коэффициент). А по существу основной критики могу сказать так, мы ж строим цифровые модели реального мира. И пока что разрядность компьютерных чисел не позволяет покрыть все многообразие реального мира. Но ведь и модели наши, как правило, не призваны применяться одновременно и для учета объектов макро- и для объектов микромира. Чаще всего мы имеем дело с сугубо товарно-денежными отношениями и объемами одной компании (пусть даже это ТНК с бюджетом среднего государства). И товар весит килограммы, граммы или тонны (ну, если это не редкоземельные металлы, конечно), а занимает объем кубические сантиметры, литры, кубометры или стандартные карго-контейнеры, и доставляется даже не на луну. С учетом этих допущений, моя схема работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 21:27 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
UrriДж, если я физику не окончательно забыл, строится от Н, а не от кг. А Н переводятся в кг как раз умножением на ускорение (м/с2). И получается что Н * м2/с3 (Дж) [ = Н * м/с2 * м/с ] = С * кг * м/с (лс, здесь С - коэффициент) Я ж написал цепочку. Вт=Дж/с. Дж=кг*(м/с)^2 (вспоминайте E=mv^2/2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 16:47 |
|
||
|
Таблицы едениц измерений баз данных
|
|||
|---|---|---|---|
|
#18+
softwarerПоявляется желание внедрить еще понятие "семейства", что ли, и иметь основную ЕИ для каждого семейства. Почти в точку. Это решает как раз проблему точного расчета коэффициента отношения, незавиcимо от природы возникновения погрешности. Только что я не называю это "семейством", ибо у меня нет "одной основной ЕИ для класса". softwarerХм. Имхо в Вашей схеме расчет коэффициента на лету окажется неприятной штукой. Ничего на лету не считается. Просто через coalesce кроме "стандартного" отношения коэффициентов пытается использоваться еще более приоритетный прямой коэффициент. softwarerНет такой БД, в которой время от времени не выполняли бы патчи и прочие sql-скрипты. У меня это решено просто. Справочник ЕИ поддерживается полностью силами клиентов. Патчей, обновляющих данные в справочнике ЕИ, не припомню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 17:09 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33986201&tid=1544532]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 522ms |

| 0 / 0 |
