No-Explanation Question:
========================

Is there anyway to have a constrain of 2 null values that always requires 1 to have value ? For example two date columns both null but having *at least* 1 that requires to have a value

Problem Description:
====================

Let's say I have table called Expense

and have 2 dates :

prevision\_expense\_expiration\_date DATE NULLABLE
expense\_payment\_date DATE NULLABLE

the logic of those 2 columns is the following:

I made a purchase of something and I know I have to pay for it, some date, like a phone bill. I will enter this as an expense with a expense\_payment\_date. This date is the supposed date I should pay but not the actual date of the payment, like the expiration date of the invoice.

In other situation I sell a gift card of some provider for it's service. I *may* have the expense of buying to my provider the service transfered to my client *only* if the client redeem the card. Hence the gift card has an expiration date, I want to do a prevision for that 'expense' without inserting as an expense for the time the gift card is valid, if the gift card expires, that 'expense' should not enter into the account system.

I know I can have 2 equally tables called prevision\_expense and confirmed\_expense but doesn't sounds right so I have in the same table, 2 dates, nullable, but I want to constrain or something so that one is always required.

There's another posible strategy:

payment\_date DATE NOT NULL
is\_prevision\_date BOOL NOT NULL

So, in this case, if the date is prevision bool value would be 1, otherwise will be 0. No null values, all is good. except that I want the option to store BOTH values when first I have a prevision date and THEN (lets says two days later) have a confirmed date for that expense, in which case with strategy 2 i won't have that option.

Am I doing everything wrong in the database design ? :D