Re: [HACKERS] Re: ORDBMS

Поиск
Список
Период
Сортировка
От The Hermit Hacker
Тема Re: [HACKERS] Re: ORDBMS
Дата
Msg-id Pine.BSF.4.21.0001281054130.555-100000@thelab.hub.org
обсуждение исходный текст
Ответ на Re: [HACKERS] Re: ORDBMS  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] Re: ORDBMS  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: [HACKERS] Re: ORDBMS  ("Ross J. Reedstrom" <reedstrm@wallace.ece.rice.edu>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] postgres under gdb
Следующее
От: Jose Soares
Дата:
Сообщение: Re: [HACKERS] Column ADDing issues