![]() | |
#51
| |||
| |||
|
|
paul c wrote: Bob Badour wrote: paul c wrote: Bob Badour wrote: paul c wrote: paul c wrote: ... if those make sense, by the D&D definition of "cartesian product", I think r1 |x| r2 would be empty and I presume so would I(r1 |x| r2). Sorry, let me take that back, I think I should have said intersection, not cartesian product. The join is empty. The intersection is empty. If one renamed one of the "car" attributes to something else, the join would have 4 rows. I think it would have 20! r1: Name Car ----------- ------------ {bill} {car1,car2,car4} {john,fred} {car3} r2: Car Colour ---------------- --------- {car1,car3,car4} {red} {car2} {green} r1 join ( r2 rename Car as Vehicle ): Name Car Vehicle Colour ------------- ------------------ ----------------- --------------- {bill} {car1,car2,car4) {car1,car3,car4} {red} {bill} {car1,car2,car4) {car2} {green} {john,fred} {car3} {car1,car3,car4} {red} {john,fred} {car3} {car2} {green} I count 4 rows. Okay, I thought you were using the sources from David B's post about his "I" function which would have 20. I don't bother reading David's posts. I only see what you excerpt, and when I replied to you this time, I was replying to you.- Hide quoted text - - Show quoted text - |
#52
| |||
| |||
|
|
paul c wrote: I think it would have 20! r1: Name Car ----------- ------------ {bill} {car1,car2,car4} {john,fred} {car3} r2: Car Colour ---------------- --------- {car1,car3,car4} {red} {car2} {green} r1 join ( r2 rename Car as Vehicle ): Name Car Vehicle Colour ------------- ------------------ ----------------- --------------- {bill} {car1,car2,car4) {car1,car3,car4} {red} {bill} {car1,car2,car4) {car2} {green} {john,fred} {car3} {car1,car3,car4} {red} {john,fred} {car3} {car2} {green} I count 4 rows. |
#53
| |||
| |||
|
|
paul c wrote: ... along with a constraint such as B REFERENCES R. and umpteen+1: ... such as B REFERENCES R.A. |
#54
| |||
| |||
|
|
On another note, I've been thinking of an interesting partial ordering on mv-tuples that is associated with information redundancy : t1 <= t2 if attribs(t1) is a subset of attribs(t2) and for each attrib a in attribs(t1), t1(a) is a subset of t2(a) t1 <= t2 means that t1 is (information) redundant with respect to t2. |
|
Definition: Let attribs(t) be a subset of X. Let t' = extend(t,X) represent the extension of t onto X by defining for all a in attribs(t), t'(a) = t(a) for all a in X\attribs(t), t'(a) = {} Note that extending a tuple with empty sets doesn't change the information content. More formally extend(t,X) <=> t |
#55
| |||
| |||
|
|
paul c wrote: David BL wrote: ... Is this what you mean (in Prolog): r(Name,Car,Colour) :- Name owns Car with Colour. r1'(Name,Car) :- r(Name,Car,Colour). or in natural language r1'(Name,Car) :- there exists Colour such that r(Name,Car,Colour). ... I think so. By the same token, r1'(Colour) :- there exists Name, Car such that r(Name, Car) |
|
et al, ie., applies to all combinations of projections. I think of these as symmetrical REFERENCE'ing statements and they are implicit from the choice of attributes of a relation. For me, this means that the orthodox view is that the form of optional data must involve more than one relation. So if set-valued attributes are eligible in the orthodox framework, I think I'd want to be able to say similar sentences about them. |
|
The snippet above doesn't mention the types of Name, Car, Colour. I think there is a difference between saying the type of Car is set of elements and the type of Car is a subset of those elements and if I understand correctly, David is talking about a Car attribute which allows subsets as values (as I have been too). |
#56
| |||
| |||
|
|
David BL wrote: On Nov 6, 3:45 pm, David BL <davi... (AT) iinet (DOT) net.au> wrote: On another note, I've been thinking of an interesting partial ordering on mv-tuples that is associated with information redundancy : t1 <= t2 if attribs(t1) is a subset of attribs(t2) and for each attrib a in attribs(t1), t1(a) is a subset of t2(a) t1 <= t2 means that t1 is (information) redundant with respect to t2. This isn't quite right. Instead the definition should be t1 <= t2 if both the following for each attrib a in (attribs(t1) intersect attribs(t2)), t1(a) is a subset of t2(a) for each attrib a in (attribs(t1) \ attribs(t2)), t1(a) = {} ... Sorry if I missed something but does "\" mean divide? (If so, which divide, Codd's or another one?) (not saying I understand the rest, because I'm a slowpoke, but I do think the first version can be expressed with D&D "semijoin".) |
#57
| |||
| |||
|
|
David BL wrote: ... I think of these as symmetrical REFERENCE'ing statements and they are implicit from the choice of attributes of a relation. For me, this means that the orthodox view is that the form of optional data must involve more than one relation. So if set-valued attributes are eligible in the orthodox framework, I think I'd want to be able to say similar sentences about them. Are you saying you want to make statements about sets without those statements being reinterpreted as instead applying to the elements of the sets? ... I'm not sure if I understand you but at first glance I'd say no, that's not what I "want". I think if there is missing information then we can't express that in a conventional RM theory without multiple relations. |
|
Maybe I'm misunderstanding, but I think RM allows sets to make statements about something we're interested in whereas statements about those sets are something else. |
#58
| |||
| |||
|
|
Jon Heggland wrote: I see no need for presumption. Without RVAs, an AMI would probably be in order, and by not associating any attributes with it, one would have an explicitly empty key, no? I'd see it exactly as an application presumption if the catalog had a value in the "AMIS" table that wasn't in the "KEYS" table (unless the dbms didn't support empty headers as keys.) |
|
The single table/relvar allowing RVA's seems neater to me, more exact than using two relvars. |
#59
| |||
| |||
|
|
I have been on the fence about RVAs for years. I can see why Date and others (including you guys) want to talk about them for the purpose of understanding where the theory takes you. But this little exchange shows me that I never want to see RVAs implemented in any product. (I am not talking about paul's confusion about the relations in question.) I don't care if there is a problem that can be solved only with RVAs, the misery they would invite just wouldn't be worth it. |

#60
| |||
| |||
|
|
One thing that annoys me about them is how they allow two attributes with the same name to be thought of as "in the same outer relation", if you will. |
|
But I'd like to suggest that even though I throw the term RVA around, pretty loosely too, I'm not sure all these posts have been about RVA's but rather something else, even if that something else is not well defined in the context of the rest of RT. Perhaps "set-valued attributes" describes it better. |
![]() |
| Thread Tools | |
| Display Modes | |
| |