Re: Why relational division is so uncommon?

From: V.J. Kumar <vjkmail_at_gmail.com>
Date: 27 Apr 2007 02:45:49 +0200
Message-ID: <Xns991ED3395615Dvdghher_at_217.22.228.20>


paul c <toledobythesea_at_oohay.ac> wrote in news:0nbYh.133230$aG1.39278_at_pd7urf3no:

> V.J. Kumar wrote:

>> paul c <toledobythesea_at_oohay.ac> wrote in
>> news:zpaYh.131992$6m4.9100_at_pd7urf1no:
>>
>>
>>>Vadim Tropashko wrote:
>>>...
>>>
>>>>>I notice also that the example doesn't suggest a lot of activity,
>>>>>other than bureaucratic activity, this company might go out of
>>>>>business soon if there is no "sales" or "orders" or "inventory"
>>>>>relations.  Lots of other useful queries would then arise, "who has
>>>>>paid all their invoices on time?", "which students have passed all
>>>>>course exams?". 
>>>>
>>>>
>>>>Quite an interesting perspective. Although, the query "who has paid
>>>>all their invoices
>>>>on time?" doesn't seem to be a relational division (what relation
>>>>are you dividing into?)
>>>>...
>>>
>>>Customers?
>>>
>>>p
>>>

>>
>>
>> It's not a situation where division could/should be used. There are
>> many ways to answer the question. One might be just to subtract
>> those who did not pay from all the customers:
>>
>> Invoice: <invoice_id, customer_id, paid>
>>
>> Project(Invoice, customer_id) MINUS
>> Project_customer_id(Select(Invoice, paid = false, customer_id))
>>
>> vj
>>
>
> What if Invoice had no "paid" attribute?

Then there is no way to determine whether or not it was paid and your question cannot be answered in principle ! Of course, you can use some other attribute name to reflect the invoice status, like 'status' for example.

vj

> 
> p
> 
Received on Fri Apr 27 2007 - 02:45:49 CEST

Original text of this message