Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Справочник единиц измерения / 7 сообщений из 7, страница 1 из 1
19.12.2005, 12:32
    #33443855
swanotets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Справочник единиц измерения
Доброго времени суток, коллеги.
Мой опыт в проектировании БД не велик, поэтому хотел попросить у вас совета.
Как грамотнее построить справочник единиц измерения.
То что пришло в голову мне.
Таблица Measures содержит измерения (длина, объем, масса и др)
На нее многие к одному ссылается таблица Units (соотв. единицы измерения, м, см, кг, т и т. п.)
Как лучше организовать пересчет из одних единиц в другие? Мой вариант был указывать в таблице меasures название базовой единицы измерения, а в таблице Units для каждой единицы измерения коэффициент пересчета в базовую. Но тогда контролировать целостность (в units обязательно должна быть базовая единица измерения) придется через триггеры, причем содержащие update, insert units, что по моему скромному мнению не есть хорошо.
Буду рад вашей критике и предложениям.
Да, еще интересно, сталкивался ли кто-нибудь с необходимостью перехода от одного измерения к другому (имеются в виду нефтепродукты и переход от массы к объему).
...
Рейтинг: 0 / 0
19.12.2005, 12:54
    #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
19.12.2005, 13:13
    #33444025
swanotets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Справочник единиц измерения
Единственный вопрос остался, мониторинг того, чтобы у отца и сына measureId совпадали, осуществлять через триггеры?
...
Рейтинг: 0 / 0
19.12.2005, 13:15
    #33444042
swanotets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Справочник единиц измерения
я имел в виду, как контролировать, чтобы нельзя было пересчитывать сантиметры в килограммы и нужен ли этот запрет
...
Рейтинг: 0 / 0
19.12.2005, 13:21
    #33444063
swanotets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Справочник единиц измерения
Или вы предлагаете от сущности Measures вообще отказаться?
...
Рейтинг: 0 / 0
19.12.2005, 14:51
    #33444338
neal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Справочник единиц измерения
swanotets
Единственный вопрос остался, мониторинг того, чтобы у отца и сына measureId совпадали, осуществлять через триггеры

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

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


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


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