3

대부분의 속성에 단위가있는 데이터베이스 테이블을 디자인해야합니다. 예 :데이터베이스 디자인에서 애트리뷰트 단위를 모델링하는 방법은 무엇입니까?

Readings 
-------- 

id load (kW) fuel_consumption (tonnes) - etc 
1 1154  89.4 
2 1199  54.2 

디자인 단위를 캡처하는 데 권장되는 방법은 무엇입니까? 예를 들어, 내가 수 : 속성 이름을 예를 들어, 내

  • 저장 장치 load_kW 및 fuel_consumption_tonnes
  • 별도의 테이블에 저장 단위 예. 각 값은 값과 단위에 대한 열이있는 다른 테이블에 대한 외래 키가됩니다.
  • 데이터베이스 외부에 저장 : 예 :. 비즈니스 로직 또는 문서에서
  • 다른 것들이 있습니까?

나는 MySQL을 사용하기도하지만 일반적인 데이터베이스 정규화 문제라고 생각합니다.

+0

SI 시스템의 기본 단위와 축척 만 저장하려는 경우 또는 가속도'm/(s^2) '와 같은 결합 된 단위가 필요할 경우에도 유용 할 수 있습니다. 그런 다음 SI 시스템을 모델링하는 테이블을 갖는 것이 좋습니다. – SpaceTrucker

답변

1

흥미로운 질문 ...

두 가지 분명한 경로가 있습니다

id load_kW  fuel_consumption_tonnes 
-------------------------------------------------- 
1 1154  89.4 
2 1199  54.2 

이것은 인간이 읽기 쉽게, 그리고 매우 논리적이다. 그러나 일부 수치가 "킬로", 다른 수치가 "톤"인 경우, 해당 수치를 "수치"표에 맞게 변환해야합니다. 이 프로세스는 "무손실"이어야하며 멱등 원이어야합니다. 예를 들어, "89403 kilos"의 수치는 "89.4 tonnes"가 아니지만 편의상 킬로미터에서 톤으로 돌릴 수 있습니다. 일반적으로 반 직관적 인 반올림 작업이 있습니다.당신이 그것을 필요로하는 경우에, "단위"테이블로

id  load load_unit fuel_consumption fuel_consumption_unit 
-------------------------------------------------- 
1 1154 kW   89403    kg 
2 1199 kW   54.2    t 

:

unit_id unit_name 
-------------------- 
kg   kilogramme 
t   Tonne 

그러나,이 모델은 인간의 실패에 열려 그런 경우에는

, 당신은 스키마를 변경할 수 있습니다 - "load"열을 수정하지 않고 "load_unit"열을 쉽게 변경하여 데이터를 깨뜨릴 수 있습니다. 이를 피하기 위해 데이터 모델에 실제로 할 수있는 것은 없습니다. 또한 공통 쿼리를 매우 까다롭게 만듭니다. 일관된 측정 단위로 "로드"총을 검색하려고합니다.

이 경우 원본 데이터가 위의 형식 인 "raw_readings"과 모든 판독 값을 일관된 측정 단위로 변환하여 채워지는 "normalized_readings"라는 두 개의 테이블이 있어야합니다.

2

궁극적으로 귀하가 원하는 양 또는 수량에 따라 달라집니다.

스컬라 값이 모델에 의미 적으로 중요하지 않기 때문에 (나중에는 거의 일어나지 않을 경우) 나중에 역류의 값을 기록하는 것이 좋습니다. 그렇다면 단위로 무엇을할지는 중요하지 않습니다.

시스템의 스칼라가 시스템에 중요성을 갖는 경우가 훨씬 많습니다. 예를 들어 계산을 수행 중이기 때문일 수 있습니다. 그런 경우에 당신의 부대는 매우 중요합니다.

당신이 스스로 대답해야 할 질문은 단위가 항상 일관성을 유지할 수 있으며 변경이 허용되어서는 안되는지 여부입니다. 대부분의 경우 나는 이것이 위험한 결론이라고 말할 것이다. 그것은 당신이 당신의 시스템을 통해 강요하는 비즈니스 규칙 일 수 있지만, 비즈니스 규칙은 변화의 불쾌한 버릇이 있습니다.

실제 측정을 나타내는 모든 스칼라에 측정 단위를 저장하는 것이 좋습니다. 이런 방식으로 명시 적으로 사용하면 약간의 디스크 공간이 필요하지만 명확성과 유연성을 제공합니다.

내가 과거에 한 일은 길이, 온도, 부피, 시간 등과 같은 UOM 유형을 포함하도록 측정 단위 모델을 확장하는 것입니다. 각 UOM을 UOM 유형에 매핑하는 테이블을 유지하면 또한 전환 요소를 저장하십시오. 그런 식으로 누군가가 당신에게 BHP와 파운드로 읽기를해야한다면, 당신은 그것으로 무엇을해야하는지 알 수있을 것이며 그것을 kW와 톤으로 당신의 전형적 항목과 비교하는 방법을 알게 될 것입니다.

관련 문제