![]() | |
#61
| |||
| |||
|
|
Marshall wrote: Consider relations A and B each with a single, common attribute. Natural join and inner union will behave much like intersection and union in this case. If the result type of the join isn't an intersection type, then we lose the property: A = A join (A union B) because the type of the attribute of the expression is different than the type of the attribute of A. I don't see that you do. The type will be the MST of the resulting join. Because you will join A with a supertype of A, the MST will be the same as the type of A. This is different from the case joining an integer with a string because the MST is the universal supertype. |
|
More generally, the values in the result of a join are the intersection of the values in the operands; why wouldn't the result type be the intersection type? I am not sure what you mean by the intersection type. |
#62
| |||
| |||
|
|
Marshall wrote: ... Consider relations A and B each with a single, common attribute. Natural join and inner union will behave much like intersection and union in this case. If the result type of the join isn't an intersection type, then we lose the property: * * A = A join (A union B) because the type of the attribute of the expression is different than the type of the attribute of A. ... Marshall, I probably am diverging from your purpose but let me ask if that property is important because without it you don't have a relational lattice or is it important because without it some practical use is lost? |
#63
| |||
| |||
|
|
On Oct 27, 11:41*am, Bob Badour <bbad... (AT) pei (DOT) sympatico.ca> wrote: I didn't skip anything, but I missed Ollie's radio collar, which I took off him before bathing him. I have to mix up another batch of peroxide and baking soda just for it. I should have just left it on him.- Hide quoted text - - Show quoted text - I mostly lurk, but on the subject of skunks and dogs, I can offer some meaningful advice (since, like mine, your dogs will undoubtedly play this game again) Next time, try Dawn dishwashing liquid. |
#64
| |||
| |||
|
|
I didn't skip anything, but I missed Ollie's radio collar, which I took off him before bathing him. I have to mix up another batch of peroxide and baking soda just for it. I should have just left it on him. |
#65
| |||
| |||
|
|
On Oct 27, 12:41 pm, TroyK <cs_tr... (AT) juno (DOT) com> wrote: On Oct 27, 11:41 am, Bob Badour <bbad... (AT) pei (DOT) sympatico.ca> wrote: I didn't skip anything, but I missed Ollie's radio collar, which I took off him before bathing him. I have to mix up another batch of peroxide and baking soda just for it. I should have just left it on him.- Hide quoted text - - Show quoted text - I mostly lurk, but on the subject of skunks and dogs, I can offer some meaningful advice (since, like mine, your dogs will undoubtedly play this game again) Next time, try Dawn dishwashing liquid. I don't think he's going to like that advice; Bob has gone on record repeatedly saying mean things about Dawn. |
#66
| |||
| |||
|
|
"Marshall" <marshall.spight (AT) gmail (DOT) com> wrote in message news:386975f9-472c-4184-8661-5c3d1e2f7621 (AT) r24g2000prf (DOT) googlegroups.com... On Oct 24, 10:53 am, Keith H Duggar <dug... (AT) alum (DOT) mit.edu> wrote: Anyhow, the question here is not one of our imagination but rather simply this: if it makes sense for the RM to support constraints on relational /values/ (taken on by variables) why does it not make sense to support constraints on relational /expressions/? That is a question of general principle not specific design. This question, it seems to me, is clear and to the point. And I would answer it by saying that we shouldn't really even make the distinction! (At least not formally.) I think we should make the distinction, and formally. (p /\ q) -> r is not the same as (p -> r) /\ (q -> r) but (p \/ q) -> r is the same as (p -> r) \/ (q -> r) A view consisting of a natural join, for example, represents a set of conjunctions. Each row of the join represents a conjunction of propositions, one for each operand. A constraint defined on a join would be of the form (p /\ q) -> r. That is definitely not the same as constraints defined on one or more tables, which would take the form (p \/ q) -> r. ... |
#67
| |||
| |||
|
|
*If I recall it wasn't until his second paper that he introduced the pair of attribute and domain name, he was adjusting his theory to meet practice. Precisely. |
#68
| |||
| |||
|
|
Mr. Scott wrote: "Marshall" <marshall.spi... (AT) gmail (DOT) com> wrote in message news:386975f9-472c-4184-8661-5c3d1e2f7621 (AT) r24g2000prf (DOT) googlegroups.com.... On Oct 24, 10:53 am, Keith H Duggar <dug... (AT) alum (DOT) mit.edu> wrote: Anyhow, the question here is not one of our imagination but rather simply this: if it makes sense for the RM to support constraints on relational /values/ (taken on by variables) why does it not make sense to support constraints on relational /expressions/? That is a question of general principle not specific design. This question, it seems to me, is clear and to the point. And I would answer it by saying that we shouldn't really even make the distinction! (At least not formally.) I think we should make the distinction, and formally. (p /\ q) -> r * is not the same as * (p -> r) /\ (q -> r) but *(p \/ q) -> r * is the same as * (p -> r) \/ (q -> r) A view consisting of a natural join, for example, represents a set of conjunctions. *Each row of the join represents a conjunction of propositions, one for each operand. *A constraint defined on a join would be of the form (p /\ q) -> r. *That is definitely not the same as constraints defined on one or more tables, which would take the form (p \/ q) -> r. ... Forgot to mention that I don't see that a "a constraint defined on a join" would necessarily be "of the form (p /\ q) -> r". *I had thought that many people think it could be any truth-valued expression such as "(p /\ q) = r". This leads me to think that most, if not all, view definitions can be interpreted as constraints. *It is interesting to me to then ask what makes a view different from a base. *Is it enough to say that a view always has one constraint (of possibly several) that is an equality and a view may be 'updated' without reference to the view? A more opaque way but perhaps less useful way of saying this is that a relation's definition in the first place amounts to nothing more than a constraint. |
#69
| |||
| |||
|
|
Is view definition a constraint? IMO it's purely terminological matter. Consider relations x and y defined by some algebraic identities. Is adding new view z (as a function of x and y) adding a constraint to the system? Let's analyze a simpler example. Consider two real values constrained by the equality: x + y = 5 Is introducing a new variable z, say z = x - 2y a new constraint imposed onto the system? Not really, because, variable z is redundant and can be eliminated, and it doesn't affect the formal property of the system of being under constrained. |
#70
| |||
| |||
|
|
... Is adding new view z (as a function of x and y) adding a constraint to the system? ... |
![]() |
| Thread Tools | |
| Display Modes | |
| |