powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочник единиц измерения
7 сообщений из 7, страница 1 из 1
Справочник единиц измерения
    #33443855
swanotets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, коллеги.
Мой опыт в проектировании БД не велик, поэтому хотел попросить у вас совета.
Как грамотнее построить справочник единиц измерения.
То что пришло в голову мне.
Таблица Measures содержит измерения (длина, объем, масса и др)
На нее многие к одному ссылается таблица Units (соотв. единицы измерения, м, см, кг, т и т. п.)
Как лучше организовать пересчет из одних единиц в другие? Мой вариант был указывать в таблице меasures название базовой единицы измерения, а в таблице Units для каждой единицы измерения коэффициент пересчета в базовую. Но тогда контролировать целостность (в units обязательно должна быть базовая единица измерения) придется через триггеры, причем содержащие update, insert units, что по моему скромному мнению не есть хорошо.
Буду рад вашей критике и предложениям.
Да, еще интересно, сталкивался ли кто-нибудь с необходимостью перехода от одного измерения к другому (имеются в виду нефтепродукты и переход от массы к объему).
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33443928
Фотография neal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В единицах измерения как в многовалютном учете может быть основная единица измерения, а может и не быть - тогда пользователю предоставляется само выбирать единицу измерения в каждом конкретном отчете.
Первый вариант проще.

CREATE TABLE dbo.UnitType (
Kod int not NULL,
ShortName varchar(20) not NULL,
FullName varchar(50) not NULL,
Koef float not NULL,
Parent int NULL,
...
)
GO
ALTER TABLE dbo.UnitType ADD
CONSTRAINT [PK_UnitType] PRIMARY KEY CLUSTERED
(
[Kod]
) ON [PRIMARY]
GO

Parent - ссылка на базовую единицу измерения, Koef - коэфициент к ней,
Например:

INSERT INTO dbo.UnitType (Kod, ShortName, FullName, Koef, Parent)
VALUES (1,'kg','Килограмм',0,NULL)

INSERT INTO dbo.UnitType (Kod, ShortName, FullName, Koef, Parent)
VALUES (2,'g','Грамм',0.001,1)

INSERT INTO dbo.UnitType (Kod, ShortName, FullName, Koef, Parent)
VALUES (3,'tn','Тонн',1000,1)

INSERT INTO dbo.UnitType (Kod, ShortName, FullName, Koef, Parent)
VALUES (4,'lbs','Фунт',0.4536,1)

...

-------------------------------------------------------
Люди делятся на 2 категории - те, которые делают бэкапы, и те, которые будут делать бэкапы. (c)Шкшыр скуфь
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33444025
swanotets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственный вопрос остался, мониторинг того, чтобы у отца и сына measureId совпадали, осуществлять через триггеры?
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33444042
swanotets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я имел в виду, как контролировать, чтобы нельзя было пересчитывать сантиметры в килограммы и нужен ли этот запрет
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33444063
swanotets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или вы предлагаете от сущности Measures вообще отказаться?
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33444338
Фотография neal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
swanotets
Единственный вопрос остался, мониторинг того, чтобы у отца и сына measureId совпадали, осуществлять через триггеры

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

Или вы предлагаете от сущности Measures вообще отказаться?


Контроль типа измерения через триггеры на INSERT,UPDATE
Эта табличка всегда обычно относиться к ведению администраторов или продвинутых пользователей, добавление новых измерений не такое частое явление, на моей практике ошибки перепривязки типа сантиментров в килограммы в этой таблице встречались редко.
-------------------------------------------------------
Люди делятся на 2 категории - те, которые делают бэкапы, и те, которые будут делать бэкапы. (c)Шкшыр скуфь
...
Рейтинг: 0 / 0
Справочник единиц измерения
    #33444463
swanotets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочник единиц измерения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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