![]() | |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Again, I didn't research literature, but here is my shot: the HAS-A is an inclusion dependency. Example: Dept = [DeptNo DeptName] * * * * 10 * * Accounting * * * * 20 * * Research ; Emp = [DeptNo EmpName] * * * *10 * * King * * * *10 * * Smith ; Formally: Emp v (Dept ^ []) < Dept v (Emp ^ []). I suppose HAS-A shares many unconvenient properties with set membership, for example, it is not transitive. Consider Accounts = [EmpName Institution] * * * * * * Smith * BoFA * * * * * * Smith * WellsFargo ; the it is not the case that "Dept HAS-A Accounts". Again, the naming problem raises its ugly head: why would the first attributes be called "EmpName" rather than "PersonName"? More important: is this correct formalization? Specifically, shouldn't functional dependency Dept # DeptNo < Dept # DeptName be a part of HAS-A constraint definition? |
#3
| ||||||||
| ||||||||
|
|
On 4 mei, 23:21, Tegiri Nenashi <tegirinena... (AT) gmail (DOT) com> wrote: Again, I didn't research literature, but here is my shot: the HAS-A is an inclusion dependency. |
|
Example: Dept = [DeptNo DeptName] * * * * 10 * * Accounting * * * * 20 * * Research ; Emp = [DeptNo EmpName] * * * *10 * * King * * * *10 * * Smith |
|
Formally: Emp v (Dept ^ []) < Dept v (Emp ^ []). |
|
I suppose HAS-A shares many unconvenient properties with set membership, for example, it is not transitive. |
|
Accounts = [EmpName Institution] * * * * * * Smith * BoFA * * * * * * Smith * WellsFargo ; the it is not the case that "Dept HAS-A Accounts". Again, the naming problem raises its ugly head: why would the first attributes be called "EmpName" rather than "PersonName"? |
|
More important: is this correct formalization? Specifically, shouldn't functional dependency Dept # DeptNo < Dept # DeptName be a part of HAS-A constraint definition? My feeling is you are treading slippery territory. "Each customer has an address" can (and may likely) be modeled as two distinct relvars, with an inclusion dependency / FK-like database constraint / howyouwanttonameit between the two. |
|
As I already stated elsewhere, my feeling is that "is-a" and "has-a" are part of the world of informal modeling, database constraints are part of the world of formal modeling. |
|
Those two worlds are disjoint, and the only connection between them is that one (informal) may act as the input for the designer who is deciding how to define the other. |
#4
| |||
| |||
|
|
I don't think I'm bothered by that fact. *Belief in strong typing tends to do that to you. *An employee just isn't a department so why would an employee ever need to pose as one? |
|
This is neither aggregation (in the weak entity sense) nor composition (in the cardinality sense). |
#5
| |||
| |||
|
|
On 4 mei, 23:21, Tegiri Nenashi <tegirinena... (AT) gmail (DOT) com> wrote: "Each customer has an address" can (and may likely) be modeled as two distinct relvars, with an inclusion dependency / FK-like database constraint / howyouwanttonameit between the two. This is neither aggregation (in the weak entity sense) nor composition (in the cardinality sense). |
|
As I already stated elsewhere, my feeling is that "is-a" and "has-a" are part of the world of informal modeling, database constraints are part of the world of formal modeling. They are not with my (e.g. Silberschatz et al.'s) definitions. Those two worlds are disjoint, and the only connection between them is that one (informal) may act as the input for the designer who is deciding how to define the other. They are not disjoint at all. *They are both perfectly formalizable, one being more specific than the other. |
#6
| |||
| |||
|
|
Again, I didn't research literature, but here is my shot: the HAS-A is an inclusion dependency. Example: Dept = [DeptNo DeptName] 10 Accounting 20 Research ; Emp = [DeptNo EmpName] 10 King 10 Smith ; Formally: Emp v (Dept ^ []) < Dept v (Emp ^ []). I suppose HAS-A shares many unconvenient properties with set membership, for example, it is not transitive. Consider Accounts = [EmpName Institution] Smith BoFA Smith WellsFargo ; the it is not the case that "Dept HAS-A Accounts". Again, the naming problem raises its ugly head: why would the first attributes be called "EmpName" rather than "PersonName"? More important: is this correct formalization? Specifically, shouldn't functional dependency Dept # DeptNo < Dept # DeptName be a part of HAS-A constraint definition? |
#7
| |||
| |||
|
|
On May 7, 1:38*am, r... (AT) raampje (DOT) lan (Reinier Post) wrote: I don't think I'm bothered by that fact. *Belief in strong typing tends to do that to you. *An employee just isn't a department so why would an employee ever need to pose as one? It looks to me like tuples are being equated with entities. |
|
This is neither aggregation (in the weak entity sense) nor composition (in the cardinality sense). Yep, there's the entity. |
|
A relation is not a domain. |
#8
| |||
| |||
|
|
It's a little difficult to talk about identity 'is a') without talking about entity ('is'). |
#9
| |||
| |||
|
|
"Tegiri Nenashi" <tegirinenashi (AT) gmail (DOT) com> wrote in message news:0b0623a8-7a8c-476b-8de2-78c31a36ab17 (AT) f17g2000pra (DOT) googlegroups.com... Again, I didn't research literature, but here is my shot: the HAS-A is an inclusion dependency. Example: Dept = [DeptNo DeptName] 10 Accounting 20 Research ; Emp = [DeptNo EmpName] 10 King 10 Smith ; Formally: Emp v (Dept ^ []) < Dept v (Emp ^ []). I suppose HAS-A shares many unconvenient properties with set membership, for example, it is not transitive. Consider Accounts = [EmpName Institution] Smith BoFA Smith WellsFargo ; the it is not the case that "Dept HAS-A Accounts". Again, the naming problem raises its ugly head: why would the first attributes be called "EmpName" rather than "PersonName"? More important: is this correct formalization? Specifically, shouldn't functional dependency Dept # DeptNo < Dept # DeptName be a part of HAS-A constraint definition? I don't think nontrivial functional dependencies have any bearing on whether or not there is a 'has-a' relationship; instead, it is the juxtaposition of attributes in a relation scheme under the convention that it is not just components that are significant but also tuples. If there is a mapping from tuples into the domain of discourse, then it follows that the components of a tuple map to parts of the whole that the tuple maps to. |
#10
| |||
| |||
|
|
"Mr. Scott" <do_not_reply (AT) noone (DOT) com> wrote in message news:Atqdnbh1eNZ_YX7WnZ2dnUVZ_g-dnZ2d (AT) giganews (DOT) com... "Tegiri Nenashi" <tegirinenashi (AT) gmail (DOT) com> wrote in message news:0b0623a8-7a8c-476b-8de2-78c31a36ab17 (AT) f17g2000pra (DOT) googlegroups.com... Again, I didn't research literature, but here is my shot: the HAS-A is an inclusion dependency. Example: Dept = [DeptNo DeptName] 10 Accounting 20 Research ; Emp = [DeptNo EmpName] 10 King 10 Smith ; Formally: Emp v (Dept ^ []) < Dept v (Emp ^ []). I suppose HAS-A shares many unconvenient properties with set membership, for example, it is not transitive. Consider Accounts = [EmpName Institution] Smith BoFA Smith WellsFargo ; the it is not the case that "Dept HAS-A Accounts". Again, the naming problem raises its ugly head: why would the first attributes be called "EmpName" rather than "PersonName"? More important: is this correct formalization? Specifically, shouldn't functional dependency Dept # DeptNo < Dept # DeptName be a part of HAS-A constraint definition? I don't think nontrivial functional dependencies have any bearing on whether or not there is a 'has-a' relationship; instead, it is the juxtaposition of attributes in a relation scheme under the convention that it is not just components that are significant but also tuples. If there is a mapping from tuples into the domain of discourse, then it follows that the components of a tuple map to parts of the whole that the tuple maps to. One could argue that a trivial functional dependency from the superkey that consists of the entire heading of a relation to any proper subset of the heading specifies a 'has-a' relationship. I should also point out that because 'has-a' relationships are in essence part-whole relationships, that they are transitive. For example, cars have tires; tires have rims; therefore, cars have rims. |
![]() |
| Thread Tools | |
| Display Modes | |
| |