-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of Javier Molina
Sent: Wednesday, November 23, 2005 2:19 PM
To: [email protected]
Subject: Re: OT: Stupid SQL Question
Depending on your model, you might be able to refactor Family and
Company to descend from a common class, let's say, Contact, such that
class Contact {
long id;
String name;
[getters and setters]
}
class Family extends Contact {
...
}
class Company extends Contact {
...
}
class Car {
Contact owner;
}
You would then have tables:
- contacts (id,name) primary key(id)
- families (id,<additional fields specific to class Family>) primary
key(id), foreign key contacts(id)
- companies (id,<additional fields specific to class Company>) primary
key(id), foreign key contacts(id)
and change the hibernate mapping to use a table-per-subclass mapping.
To me, this looks like a cleaner model, although it will require
additional selects to join the families and companies when you read a car.
Another option, if your fields are nullable, is the table per class
hierarchy mapping, with a single table for both Family and Company, but
all non-inherited fields will cannot be marked not null.
Once you decide to create an inheritance hierarchy, there are several
mapping options, see the Inheritance mapping chapter on the
documentation and/or Hibernate In Action.
Patrick Casey escribió:
Ok, I admit it, this is probably a stupid question, but I
can't
(curiously) seem to find an answer to this in the SQL spec.
Is it legal for a child table (the n side of a 0..n)
relationship to have a foreign key relationship to *more than one*
parent
table?
e.g.
is this legit:
family
---------
id
name
company
-------
id
name
cars
--------
id
owner_class (either family or company)
owning_id (foreign_key company(id)), foreign_key
family(id))?
In that either a family, or a company, might potentially own
a
car?
I'm actually not using cars, of course, it's an attachment
table
that currently all my tables share (any attachment to any object, gets
stuffed into attachment).
Naturally, mySQL lets me get away with it, but then mySQL
lets
you get away with *anything* so my question is, should I refactor this
now
on the expectation that some day I may need to use a real database? Or
is
having multiple foreign key constraints on the same column copasetic
under
the ANSI spec?
--- Pat
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]