2010-04-28 9 views
4

나는 사용자가 평일의 일부 (상점 개점 일)를 선택하는 체크 박스 그룹을 가지고있다. 선택한 요일을 저장하려면 어떻게해야합니까? 동일한 필드에 0111111 (0은 일요일에 마감됨을 의미)을 저장하고 데이터를 읽을 때 결과를 분할해야합니까? 또는 매일 매일 필드를 만들고 각 (별난)에 0 또는 1을 저장할 수 있습니까?데이터베이스에 개점 평일을 저장하는 방법

+0

휴일 관련 휴업은 어떻게 처리합니까? –

+0

그게 문제가 아닙니다. 상점은 연 2 ~ 3 일 (크리스마스, 부활절)에만 폐쇄됩니다. 개점 일/주 및 영업 시간/일을 저장해야합니다. – JoaoPedro

답변

7

첫 번째 방법은 공간을 절약하고 두 번째 방법은 데이터를 검색하는 동안 성능을 향상시킵니다. 특히 요일별로 필터링해야하는 경우 특히 그렇습니다. 또한 평일을 조작하는 쿼리를 더 명확하게 만듭니다. 응용 프로그램의 논리에 따라 더 중요한 것이 무엇인지 결정해야합니다.

일반적으로 일일 현장 해결책을 사용합니다.

+2

두 번째 솔루션을 선호합니다. 먼저 특정 날짜를 제외한 특정 날짜에 열리는 매장을 검색하기 위해 인덱스를 사용할 수 없습니다. 일요일 (첫 번째 문자)이므로 테이블 스캔이 필요합니다. 작은 테이블이라면 큰 문제는 아니지만 여전히 효율적이지는 않습니다. 일주일이 바뀌지 않으므로 하루에 1 개 필드로 이동합니다. – SqlRyan

+0

"일요일을 제외한 특정 날짜에 열리는 상점 검색". 좋은 지적. 아픈 날 필드 옵션으로 이동하십시오. 모두에게 감사드립니다. – JoaoPedro

0

일단 데이터를 가지고 나면 그 데이터로 무엇을 할 것인가에 달려 있습니다. 전반적으로이 7 명의 사실적 사례 (평일 매장 운영)가 하나의 사실이라면, 하나의 사실로 취급되며 문자열 내의 "사실상"중 하나를 구문 분석하고 개별적으로 처리 할 필요가 없습니다. 그것은 하나의 데이터로 저장 될 수 있고 아마도 저장되어야합니다.

그러나이 정보를 7 가지 데이터로 간주해야한다면 7 가지 데이터 (예 : 7 가지 열)로 기록하는 것이 좋습니다.

다시 말하지만, 이것의 뒤에는 "많이 달라집니다". 생각해 볼 수있는 또 다른 방법은 데이터를 어떻게 사용할 것인지 미리 살펴보고 스토리지를 구조화하여 프로세스를 단순화하는 것입니다 (예 : 원하는 요소에 대해 항상 문자열 "1010101"을 파싱하고 싶습니까). ?)

관련 문제