2009-07-15 3 views
0

실험실 데이터베이스를 설계 중입니다. 여러 제품, 샘플 등은 출발지, 날짜, 유형, 오늘 ID 등과 같은 여러 값을 나타내는 여러 부분으로 구성된 복합 번호로 식별됩니다. 복합 번호의 예로는 운전 면허 번호 (X44-555-3434) , 로트 번호 (XBR-A26-500-2).복합 제품 번호 저장

복합 번호를 데이터베이스에 저장하는 방법은 무엇입니까? 문자열로 저장해야합니까? 또는 복합 숫자의 각 구성 요소를 별도로 저장하거나 파생해야합니까?

참고 : 질문에 일반적으로 대답 할 수없는 경우 Oracle을 사용하십시오.

답변

8

내 경험상 의미가있는 문자열 요소가있는 경우 해당 필드에 입력하는 것이 가장 좋습니다. 우리가 의미를 알아 내려고 애쓰는 체조는 복잡하고 오류가 발생하기 쉽습니다. 또한 각 필드를 명시 적으로 처리 할 때 데이터 유효성 검사를하는 것이 더 쉽습니다. 복잡한 문자열을 쉽게 생성 할 수 있으며, 생성 된 문자열을 쉽게 검색 할 수 있습니다 (색인 생성이 어려운 경우도 있음). 세밀한 스토리지가 항상 가장 잘 작동했습니다.

+2

+1, 진정한 데이터 분석가처럼 말하자면, – DCookie

+0

+1, 나는이 점장이 원칙에 충실하지 않은 몇 가지 코드를 보았으며 항상 후회했습니다. –

3

결국 쿼리 할 내용에 따라 다릅니다. 문자열의 일부를 별도로 검색하려면 별도로 저장하십시오. 대시를 사용하거나 사용하지 않고 전체 코드를 찾으려면 단일 문자열로 저장하십시오.

1

또한 개별 열에 저장하기로 결정한 경우 고유 한 키 (모든 열을 포함하는 고유 키)를 만드는 것이 좋습니다.

1

"XBR"을 "2007 년 1 월 12 일에 저장"대신 타임 스탬프로 저장하는 대신 합성 숫자의 각 코딩 된 부분을 별도로 저장할 수 있습니다. 그러나 이것은 코드화 된 복합 숫자로 항목을보다 자주 조회 할 것인지 또는 실제 의미에 따라 항목을 조회 할 것인지 여부에 달려 있습니다.

그런 다음 코드와 실제 값 사이의 매핑을 데이터베이스 어딘가에 유지합니다. 따라서 두 개의 열을 각각 저장하는 몇 개의 작은 테이블이 있습니다. 하나는 코드를 나타내고 다른 하나는 예를 들어 타임 스탬프를 나타냅니다.

1

이러한 숫자의 파생어가 변경 될 가능성이 있으며 응용 프로그램에 영향을 미칠 것으로 예상되는 방법은 무엇입니까?

예를 들어, 몇 년 전에 영국의 자동차 등록 번호판은 3 개의 문자 (지역을 나타냈다 고 생각하는)와 3 자리 숫자, 그리고 등록 연도를 나타내는 다른 문자로 시작되었습니다.

결국 접미사 문자가 부족하여 "ABC 123 A"가 아니라 "A 123 ABC"가 될 수 있으므로 순서를 변경했습니다. 두 대의 자동차를 등록 할 수 있었을 것입니다. 같은 시간, 하나는 "ABC 123 A"이고 다른 하나는 "A 123 ABC"입니다. 아, 그리고 그들은 한 글자 표시기를 사용하기 시작했습니다. (많은 사람들이 차를 구입하기 전에 새 편지가 발효 될 때까지 기다리고 있었기 때문에) 일년을 더 이상 나타내지 않았습니다.

등록 플레이트에 관심이 있다면 등록 플레이트를 하나의 값으로 저장하는 것이 가장 좋을 것입니다. 그러나 번호를 발행하는 응용 프로그램은 아마도 해당 구성 요소로 분류해야했습니다.

관련 문제