2010-05-26 3 views
2

안녕하세요 저는 매주 요일마다 1 또는 0을 저장해야하는 특정 레코드에 대한 데이터베이스를 보유하고 있습니다. 어느 쪽이 더 좋을까요? 각 비트를 정수로 비트 시프트하고 데이터베이스에 정수가있는 경우 days 또는 sunday, monday, tuesday... 열을 갖도록이 모든 부울 값을 구분해야합니까?관련된 부울 열 - 별도의 열 또는 비트 열로 정수 열로?

이 열은 DB 자체가 아닌 소프트웨어의 계산에만 사용되므로이 값으로 수행 할 수있는 유일한 작업은 선택, 업데이트 및 삽입입니다.

답변

2

나는 다음과 같은 이유로, 별도의 열 가고 싶어 :

  • 더 나은 디자인 데이터베이스 모델처럼 보일 것이다 그 (때문에 명확하게, 더 직관적이고 이해하기 쉬운) 아마도 모든 사람들은 더 이상의 설명을 필요로하지 않을 것이다.

  • "어떤 비트가 일요일에 다시 ... ... 내가 가장 중요한 비트를 할당 했습니까? 아니면 가장 중요하지 않은 비트를 할당 했습니까?" - 별도의 이름이 지정된 열을 사용하면 이러한 문제가 발생하지 않으므로 버그 가능성이 줄어 듭니다.

  • 나중에 데이터베이스 모델을 향상시켜 단 하루 동안 NULL을 저장할 수 있다면 거의 매일 별도의 열을 원할 것입니다. 그렇지 않으면 하루에 적어도 2 비트가 필요합니다 (이제 3 가지 상태가 가능하고 1 비트는 더 이상 충분하지 않으므로). 적절한 가정용 인코딩 체계.

  • 오늘날의 RDBMS는 여러 부울 열을 함께 묶을만큼 똑똑하다고 확신합니다.

2

분리 된 열.

DB 엔진은 어쨌든 이들을 압축하여 비트를 투명하게 처리합니다. 나는 당신이나 내가 우리 자신을 굴리는 것보다이게 더 낫다고 생각합니다 ...

0

당신의 필요에 따라 다릅니다. 비트 시프트로 쿼리 할 때 SQL Server의 성능이 저하됩니다. 쿼리 당 하루에 많은 필터링을 수행한다면 매일 별도의 비트 필드를 사용하는 것이 좋습니다.

+0

이것을 백업 할 수 있습니까? 아니면 MS 엔지니어보다 잘 할 수 있다고 생각합니까? – gbn

관련 문제