Re: Why relational division is so uncommon?

From: V.J. Kumar <vjkmail_at_gmail.com>
Date: 27 Apr 2007 03:45:06 +0200
Message-ID: <Xns991EDD45C9635vdghher_at_217.22.228.20>


Vadim Tropashko <vadimtro_invalid_at_yahoo.com> wrote in news:1177635290.419975.51750_at_r35g2000prh.googlegroups.com:

> On Apr 26, 3:22 pm, "V.J. Kumar" <vjkm..._at_gmail.com> wrote:

>> Vadim Tropashko <vadimtro_inva..._at_yahoo.com> wrote
>> innews:1177607284.813162.87940_at_t38g2000prd.googlegroups.com: 
>>
>> > This is an interesting observation as well. Consider a medical
>> > database schema:
>>
>> > PatientSymptom (
>> >     name string,
>> >     symptom string
>> > )
>>
>> > DeceaseSymptom (
>> >    name string,
>> >    symptom string
>> > )
>>
>> > Would db designers pressed hard to avoid set joins and create a
>> > redundant relation
>>
>> The db designers won't be hard pressed to avoid set containment joins
>> at all because the above schema does't have any set valued attributes
>> to join on -:)

>
> Don't understand. Certainly patient can have a set of symptoms, and if
> this set is a superset of some decease, then he got this decease?

My simple point is that you cannot talk about the set containment join if the relation attributes are not sets. You can say that the set containment join is similar to relational division but saying that it is the same thing would only confuse people.

>

>> What relation is redundant depends on your point of view.  'Symptom
>> string' is an ugly hack to emulate relational division for the
>> original table you've specified below.  

>
> How about symptom = headache, does this sounds like a legitimate
> symptom? And having {headache,temperature} is a prerequisite for a
> decease = flu?

Oh, sorry, I misunderstood your schema. Some medical db developers represent a set of symptoms as a comma delimited string: "headache,nausea,fever". By doing that, they can express relational division more efficiently, in some cases, than with traditional wellknown  SQL queries.  

>

>> You surely do not claim that the symptom
>> string is a set valued attribute, do you ? Medical db developers
>> usually have to maintain both tables for obvious reasons.

>
> Dont understand, again. Are you challenging the following
>
> PatientDecease(PatientName,DeceaseName) =
> PatientSymptom(PatientName,SymptomName) /
> DeceaseSymptom(SymptomName, DeceaseName)
>

I do not. See above about a comma delimited list of symptoms.

> ?
>
Received on Fri Apr 27 2007 - 03:45:06 CEST

Original text of this message