2014-01-10 2 views
4

입니다. 프랑스 (프랑스)의 경우 생일은 YYYY-00-00 (00/00/YYYY)입니다. 이는 정확한 출생일을 모르는 이민자들을위한 합법적 인 협약입니다 (신원 카드에 사용).생년월일은 "YYYY-00-00"/ "00/00/YYYY"

물론 데이터베이스와 알고리즘의 문제입니다.

혹시이 상황이 발생 했습니까? 어떻게 처리할까요? 당신의 선택은 무엇입니까?

+0

여기서 "AAAA"는 "AAAA"문자열 리터럴이며, 실제 날짜의 자리 표시자를 나타냅니다. 생년월일은'1950-00-00' 일 수 있습니까? – Dukeling

+0

불어로'AAAA'는 영어로'YYYY'라고 생각합니다. 그것은 4 자리 연도의 자리 표시 자입니다. 질문은 0 일과 1 월에 관한 것입니다. –

+0

죄송합니다. YYYY 여야합니다. 나는 그것을 고쳤다. –

답변

0

문제에 대한 몇 가지 가능한 해결 방법이 있습니다, 내가 그들에게 설명하자

  1. 귀하의 솔루션은 문제를 해결하지만, 몇 가지 새로운 문제를 작성합니다. Moo-Juice는 문제 중 하나를 지적했지만 몇 가지 다른 문제도 있습니다. 예를 들어, 응용 프로그램 수준에서 이러한 날짜를 처리하는 것이 점점 어려워집니다. 왜냐하면 이러한 값을 날짜로 변환하는 데 문제가있을 것이라고 생각하기 때문입니다. 또한, 날짜와 날짜를 읽는 데 어려움이있는 것은 좋지 않습니다. 요일을 읽으려면 수천 개의 문자열 파싱을 처리해야합니다.

  2. 3 개의 열을 사용할 수 있습니다. 한 해는 한 달, 다른 한 달은 다른 날, 다른 날은 한 해. 일 또는 월이 0 일 경우 불확실한 출생 날짜를 가진 이민자에 대해 이야기하고 있습니다.

  3. 해당 연도와 기본 월/일로 날짜를 설정하여 응용 프로그램 수준에서 문제를 해결할 수도 있습니다. 물론 기본 월과 일을 현명하게 선택해야합니다. 가장 간단한 방법은 1 월 1 일을 기본 날짜로 선택하는 것입니다. 내가 너라면하지만, 나는 다음과 같은 질문에 대한 답변을 확인합니다 :

이민자는 2000 년에 태어 났으며, 그/그녀의 출생 월과 일이 알려져 있지 인 경우, 다음 될 것인가 정확한 숫자는 프랑스의 법안에 따라 주어진 사람이 고려하고 투표 할 수 있도록 허용합니다. 2018?

값의 처리 방법을 단순화하고 원 자성을 유지하며 그 유형을 날짜로 할 수 있으므로 세 번째 옵션을 선택합니다. 또한 기본값을 변경해야하는 경우 저장 알고리즘을 변경하여 기본값을 변경하는 것이 간단합니다. 가능한 문제는 기본 날짜를 변경하고이를 데이터베이스에 이미 저장된 이민자에게 적용해야한다는 것입니다. 응용 프로그램을 위협하는 심각한 일관성 문제를 방지하려면 UnkownBirthDate에 대한 테이블에 다른 열을 만들 수 있습니다. 따라서 기본 날짜를 변경하는 경우 이미 저장된 사용자/사람에서 누구의 날짜를 변경해야하는지 알 수 있습니다.

건배.

0

생년월일을 계산할 필요가 거의 없기 때문에 (나이를 결정하기 위해) 때로는 문자열로 저장하고 날짜로 사용할 때 01/01/YYYY으로 바꿉니다. 그러나 나이가 법적으로 계산되는 방법을 모르겠다. 나는 의미 론적으로 행복하지 않다.

+1

문자열로 저장할 때 정렬 문제가 발생할 수도 있습니다.계산을 할 필요는 없지만 정렬이 문제 일 수 있습니다. –

관련 문제