2009-09-20 5 views
4

길이가 30 미터 또는 50 피트이거나 온도가 50 켈빈이고 속도가 시속 50 킬로미터임을 데이터베이스에 기록한다고 가정합니다. 단위를 어떻게 표현 하시겠습니까? 표준화 된 방식으로 차원 단위 표현

은 명확하게 두 지점하려면

  • 단위의 모든 종류의,하지 말라고 미리 정의 된, 잘 정의 된 부분 집합.
  • 내 질문은 단위의 온톨로지의 존재와 더 관련이 있습니다. 처음으로 데이터베이스를 사용했기 때문에 예제를 사용했지만, XML 또는 JSON으로 유니트를 표현하는 것과 같은 시나리오도 마찬가지입니다.
+1

이 내용은 http://stackoverflow.com/questions/1224770/dimensional-and-unit-analysis-in-sql-database와 어떻게 비교됩니까? – dmckee

+0

질문에 설명을 추가했습니다. 거의 유사하지만 대답은 차원 분해를 설명합니다. 어쩌면 나의 질문은 명확하지 않지만 db에 저장 전략보다는 일반적인 단위의 표준화 된 표현에 대해 더 많이 묻습니다. 다시 말해 프로그래밍 언어의 아름다움을 표현하는 단위로 'Foobaricity'를 정의한다면, 이미 존재하는 것의 흔적을 따라 존재 론적 표현이 필요합니다. . –

답변

6

관계형 데이터베이스 설계의 기본 개념 중 하나는 주어진 열의 모든 값이 논리적으로 호환 가능한 유형의 데이터를 나타내야한다는 것입니다. 형식적으로 한 열에는 유형이라는 단 하나의 단일 열이 있으며 유형의 임의의 두 값은 등호 술어로 서로 비교할 수 있습니다. 이것은 유형 이론의 중요한 부분입니다.

측정 결과가 길이 대비 온도와 비교할 수없는 경우 동일한 열에 저장하지 마십시오.

ISO 2955, "제한된 문자 세트가있는 시스템에서 SI 및 기타 단위의 정보 처리 - 표현 "을 볼 수 있습니다.

"Joe Celko's SQL Programming Style", 제 4 장, 계량 및 측정을 참조하십시오.

+0

흥미 롭습니다. 매우 흥미로운. 감사 –

0

일부 "표준"단위 (예 : 미터법)로 변환하는 대신 다른 유형의 단위로 수량을 저장해야하는 특별한 이유가 있습니까? 데이터를 삽입 할 때 입력 수량을 표준 단위로 변환합니다. 그리고 데이터를 읽을 때 필요한 출력 단위로 변환합니다.

이 방법은 데이터를 다른 단위로 저장하는 것보다 여러 가지면에서 더 간단하지만 데이터가 지정된 원래 단위에 대한 정보가 손실됩니다.

+0

그게 문제 야. 원래 단위에 대한 정보를 보존해야합니다. –

0

열 이름 (예 : LengthInMeters, WeightInKilograms, AnnoyingnessInFishSlapsPerSecond 등)에 단위를 포함시킨 다음 열에 숫자를 저장하면됩니다.

이상적으로, 단위를 열의 (적절한) 속성으로 정의하는 것이 좋을 수도 있지만, 이것을 허용하는 데이터베이스를 알지 못합니다. 단위가 열 이름에 포함되면 이후 개발자는이 문제에 대해 혼란을 느끼기가 어렵습니다.

단위를 두 번째 열에 포함하는 DB 솔루션을 실행했지만 단위를 나타내는 표준화 된 방법이 없으므로 "ft.", "feet" "와 같은 값을 가진 텍스트 필드가됩니다. 피트 (Feet) "등으로 표시하거나 FK를 사용하여 가능한 단위 (텍스트)를 저장하는 테이블로 이동합니다. 어느 쪽이든 SUM 또는 AVG 쿼리 (또는 계산)를 실행하면 특히 단위가 다른 값을 동일한 열에 저장할 수있는 경우 악몽이됩니다.

+0

사용자가 임의의 단위를 정의 할 수 있기 때문에 쉽지 않습니다. 나는 나의 질문이 단위의 존재론의 존재 (또는 그것의 부족)로 귀결된다고 생각한다. –

2

관계 이론은 각 relvar ("table")에 튜플의 의미를 정의하는 관련 조건자를 가지고 있습니다. 그 술어는 실제로 데이터베이스를 공식적으로 다루는 사람의 누구도 "오해가있다"는 핑계를 가질 수 없도록 데이터베이스의 공식 문서의 일부분이어야합니다 (물론 문서가 불완전하지 않은 한).

해당 술어에 단위 정의를 포함합니다 (예 : "사람의 길이는 ... FEET입니다.", "측정 된 온도는 ... KELVIN", ...)은 완전성을 달성하고 휴양을하지 않아도됩니다. 오히려 못생긴 속성 ("열") 이름.

왜 "숫자 저장"(모든 사용자가 동의 한 표준 단위)이 "쉽지 않은"이유인지 이해할 수 없습니다.

만약 하나의 단위로 어음 교환이 존재하고 어떤 사람이 새로운 단위의 솜털 모양을 발견한다면, 어쨌든 그 사람은 어쩌다 허식의 양과 허풍의 양 사이의 관계를 형식적으로 확립해야 할 것입니다. 누구든지 이해할 수 있습니다.

나는이 추가 보았다

편집 : ". 내가 원래 장치에 대한 정보를 보존 할 필요가" 가

아무 일도하지 않습니다. "정규화 된"값 옆에 두 개의 추가 열 (원래 수량 및 원래 단위 이름). 원 단위 이름을 강하게 또는 느슨하게 지정할 수 있습니다.