Datenbankstruktur

Hallo Zusammen,
habe folgende Frage die nicht unbedingt postgres-spezifisch ist, unter umständen.
Kann ich mit mehreren Tabellenfeldern einer Tabelle, auf EINE andere Tabelle referenzieren (z.B. mit Fremdschlüssel)
Bsp.: Tabelle: Daten Personen
Feld: id-daten id-person
kostentraeger name
antragsteller vorname
empfaenger email

ich möchte die Informationen zu den Feldern aus einer Tabelle (Personen) holen.
wenn ja wie funktioniert das?

Beste Grüße

test=*# create table foo (id1 int, id2 int, id3 int, primary key(id1, id2, id3)); 
CREATE TABLE
test=*# create table bar (fk1 int, fk2 int, fk3 int, foreign key (fk1, fk2, fk3) references foo);
CREATE TABLE

Oder möchtest Du eher 2 Foreign Keys haben auf die selbe Tabelle? Zum Beispiel Fußball, eine Tabelle mit den Mannschaften und eine Tabelle mit Heim und Gast, die jeweils auf die Mannschaftstabelle zeigt? Auch das ist problemlos möglich.

Danke erstmal.
Wie gesagt. Ich habe eine Tabelle mit verschiedenen Feldern.
In drei der Felder stehen Personen (‘kostentraeger’, ‘empfaenger’, ‘antragsteller’). Die Namen sollen aus der Tabelle ‘personen’ kommen. Hätte ich nur ein Feld z.B. ‘kostentraeger’ kann ich das über einen foreign key auf die Tabelle ‘personen’ machen, funktioniert auch. Aber die beiden anderen Felder sollen jetzt ebenfalls aus der Tabelle personen die Namen holen. Da weiß ich nicht wie bzw. ob das auch über einen zweiten foreign key auf die gleiche Tabelle funktioniert. Die Namen in den drei Feldern können natürlich unterschiedlich sein oder aber auch die gleichen Namen enthalten.
Hoffe hab mich halbwegs verständlich ausgedrückt.

ja, geht, ganz easy. Bei der Abfrage mit Aliasen arbeiten.

test=# create table personen (id int primary key, name text);
CREATE TABLE
test=*# copy  personen from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1	person1
>> 2	person2
>> 3	person3
>> \.
COPY 3
test=*# create table theise (p1 int references personen, p2 int references personen, p3 int references personen);
CREATE TABLE
test=*# copy theise from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1	2	3
>> \.
COPY 1
test=*# 
test=*# 
test=*# select * from theise t left join personen p1 on t.p1=p1.id left join personen p2 on t.p2=p2.id left join personen p3 on t.p3=p3.id;
 p1 | p2 | p3 | id |  name   | id |  name   | id |  name   
----+----+----+----+---------+----+---------+----+---------
  1 |  2 |  3 |  1 | person1 |  2 | person2 |  3 | person3
(1 row)

Du siehst den Weg?

Hallo akretschmer,
danke für deine Informationen. Ich muß das erstmal nachvollziehen irgendwie.
Beste Grüße

schaffst Du!

Kannst ja auch bei uns eine Inhouse-Schulung buchen…