설명이없는 질문 :
어쨌든 항상 1을 필요로하는 2 개의 null 값을 제한해야합니까? 예를 들어 두 개의 날짜 열이 모두 null이지만 값이 필요한 1 개 이상이어야 합니다.
문제 설명:
Expense라는 테이블이 있다고 가정 해 봅시다.
그리고 2 개의 날짜가 있습니다 :
prevision_expense_expiration_date DATE NULLABLE cost_payment_date DATE NULLABLE
이 두 열의 논리는 다음과 같습니다.
나는 물건을 사서 전화 청구서와 같은 날짜에 돈을 지불해야한다는 것을 안다. 나는 이것을 cost_payment_date와 함께 비용으로 입력 할 것입니다. 이 날짜는 인보이스 만료 날짜와 같이 지불해야하는 실제 날짜이지만 실제 지불 날짜는 아닙니다.
다른 상황에서는 서비스 제공 업체의 기프트 카드를 판매합니다. 나는 할 수있다 , 서비스 내 클라이언트로 옮겨진 내 공급자에게 구매의 비용이 단지 클라이언트가 카드를 사용할 경우. 기프트 카드 유효 기간이 있으므로 기프트 카드 유효 기간에 대한 비용을 기프트 카드가 만료 된 경우 계정에 입력하면 안되는 비용으로 삽입하지 않고 해당 '비용'에 대한 사전 준비를하고 싶습니다. 체계.
나는 prevision_expense와 confirm_expense라는 두 개의 동등한 테이블을 가질 수 있지만 올바른 소리가 들리지 않으므로 같은 테이블, 2 개의 날짜, 널 입력 가능을 갖지만 항상 하나가 필요하도록 제한하거나 무언가를 원합니다.
또 다른 가능한 전략이 있습니다.
payment_date DATE NOT NULL is_prevision_date BOOL NOT NULL
따라서이 경우 날짜가 프리비 안일 경우 bool 값은 1이되고 그렇지 않으면 0이됩니다. null 값이 없으면 모두 좋습니다. 처음에 사전 준비 날짜가 있고 THEN (이틀 후에 말하겠습니다)이 해당 비용에 대해 확인 된 날짜를 가질 때 BOTH 값을 저장하는 옵션을 원합니다.이 경우 전략 2의 경우 해당 옵션이 없습니다.
데이터베이스 디자인에서 모든 것을 잘못하고 있습니까? :디
CHECK
에서도 제약 조건 으로이 작업을 수행 할 수 있습니다. 지속 열이 필요하지 않습니다.