Hello,
I am a new user of postgresql... I have to create a table named person
like:
create table person (
personname varchar(40),
telefonnumber varchar(20)
);
Now, I have to create tables for personname and telefonnumber like:
create table personname (
firstname varchar(20),
lastname varchar(20)
);
and,
create table telefonnumber (
countrycode varchar(20),
areacode varchar(20),
number int4
);
Now, when the personname table has attributes: firstname = 'John'
lastname= 'Paul'
and similarly somevalues for telefonnumber table,
i must have the value of personname attribute in person table as 'John
Paul' and the telefonnumber attribute of person table must be the
integration of attributes in the telefonnumber table.
Pls. guide me how to make this possible?...Is there any way to do so?
I don't understand why you wan't to do this that way, wouldn't it be
easier with a single table like :
create table person (
firstname varchar(20),
lastname varchar(20),
countrycode varchar(20),
areacode varchar(20),
number int4
);
?
Or, if you really want to use 3 tables, i suggest using one as an index
and others are refering to it using foreign keys. It can be useful if you
need several "telefonnumber" entries for one person.
For example :
create table person (
id serial primary key
);
create table personname (
person_id bigint references person,
firstname varchar(20),
lastname varchar(20)
);
create table telefonnumber (
person_id bigint references person,
countrycode varchar(20),
areacode varchar(20),
number int4
);
Then you can retrieve all the data for 'somebody' with something like :
select * from personname,telefonnumber
where personname.person_id = telefonnumber.person_id
and personname.lastname = 'somebody';
In this example, the table "person" is useless, since it would be better
to put the index in "personname".
Finally, if you really want to keep the tables as you describe and you
need to update the "person" table each time the "personname" or
"telefonnumber" table are updated, you can play with triggers but i don't
see any interest in this.
Hope this helps.
Bye.