Re: [HACKERS] Re: ORDBMS - Mailing list pgsql-hackers
From | The Hermit Hacker |
---|---|
Subject | Re: [HACKERS] Re: ORDBMS |
Date | |
Msg-id | Pine.BSF.4.21.0001281054130.555-100000@thelab.hub.org Whole thread Raw |
In response to | Re: [HACKERS] Re: ORDBMS (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: [HACKERS] Re: ORDBMS
Re: [HACKERS] Re: ORDBMS |
List | pgsql-hackers |
On Fri, 28 Jan 2000, Tom Lane wrote: > Chris Bitmead <chris@bitmead.com> writes: > > Tom Lane wrote: > >> For a lot of this older stuff, there isn't even any documentation > >> (that I know of) on what it's *supposed* to do, let alone on how > >> thorough the original implementation was. > > > I thought that the original berkeley doco covered this to some extent. > > Where would I find that? > > > Basicly I think you're supposed to be able to go... > > > CREATE TABLE address (street TEXT, number TEXT, suburb TEXT, zip TEXT); > > CREATE TABLE person (name TEXT, address ADDRESS); > > > SELECT name, address FROM person WHERE person.address.suburb = 'New > > York'; > > Hmm. This looks like a CREATE TABLE implicitly creates a datatype > that acts more or less like a C 'struct' declaration, ie, it's just a > collection of subfields. OK, a struct-making declaration is certainly > useful. What I don't understand yet is whether the contents of table > "address" have any connection to the data stored in table "person". > If not, why must I create a table in order to define a datatype? Seems > like a separate CREATE DATATYPE command would make more sense... Not quite an answer to your question, but my guess is that 'address ADDRESS' would contain a pointer (OID) to the address table ... so the person table would be realtively small in comparison to the address table ... The way I look at the above, its a 'JOIN' at table create time, based on a unique value, the OID ... How 'dep' can you go with this? ie: CREATE TABLE address (street TEXT, number TEXT, suburb TEXT, zip TEXT); CREATE TABLE telephone ( home TEXT, business TEXT, fax TEXT ); CREATE TABLE person (name TEXT, address ADDRESS, telephone TELEPHONE); Question, if I did an INSERT person VALUES ('myname'); What happens to the address table? a row gets created with all NULL? Or? The reason I ask is the way it was taught to me was that an RDBMS gains its benefit through normalization and joins ...with the outer join syntax coming up, if you had a table of 'person' fully populated, but only address info for 1/2 of them, you could still get all 'people', while your 'address' table has 1/2 the tuples of the person one ... space savings ... HSorry, rambling thoughts out o fmy head without putting them together very well :) Marc G. Fournier ICQ#7615664 IRC Nick: Scrappy Systems Administrator @ hub.org primary: scrappy@hub.org secondary: scrappy@{freebsd|postgresql}.org
pgsql-hackers by date: