Ich baue eine Postgressql-Datenbank mit SQLALCHEMY. Ich frage mich, ob es möglich ist, eine Struktur wie folgt zu haben:SQL-Feld mit einer fremden ID aus zwei Tabellen
Zwei Tabellen, bestehend aus Personen und Organisationen.
Table - Person -
person_id, name
1, Jeffery
2, Frank
Table - Org -
org_id, name
a, Pepsi
b, Microsoft
Eine dritte Tabelle von Adressen oder entweder Personen oder Organisationen:
Table - Addresses -
address_id, type_of_id, (either person_id or org_id), addresses
1, person, 1, "2 Jeffery way"
2, person, 1, "7 Holland Avenue"
3, org, b, "1 Microsoft way"
4, person, 2, "2 Frank Street"
Ist dies möglich mit Postgres? Und wie schreibe ich es in sqlalchemy Python-Code?
Update:
Ich glaube, dass dies eine polymorphe Vereinigung wie in genannt wird: Possible to do a MySQL foreign key to one of two possible tables?
Dies ist tatsächlich möglich, obwohl, aus einer * relationalen * Sichtweise, nicht viel Sinn macht. Normalerweise hätten die Tabellen "Person" und "Org" eine Spalte "address_id", die auf "Addresses (address_id)" verweist und die Adressen seien Adressen (keine person org oder person_id dort). – joanolo
Was passiert, wenn ich mehrere Adressen pro Person und mehrere Adressen für Organisationen habe? – labjunky
Ich würde für zwei "Link-Tabellen" gehen: eine für 'person_x_address (person_id, address_id)', und eine andere für 'organization_x_address (organisation_id, address_id) '. Es wird * sauberer * als die meisten anderen Optionen. – joanolo