Fremdschlüssel aus 2 Tabellen generieren

susanne_knapp

Neues Mitglied
Hallo, ich habe leider wenig Erfahrung in der Softwareentwicklung und muss für mein Studium ein Projekt abschließen. Es geht um folgende Situation: Wir müssen eine Datenbank für einen e-Commerce Shop aufstellen. Die Produkte werden entweder über einen Paketdienstzusteller (Parcel) oder Auslieferungspartner (Distributor) zugestellt, was in der Bestellliste angezeigt werden muss. Es existieren bereits 2 Tabellen mit allen Attributen zu den Paketdienstzustellern sowie Auslieferungspartnern. Meine Frage lautet wie es möglich ist, in der Bestellliste unter Shipping_ID auf beide Tabellen zuzugreifen, sodass in der Spalte Shipping_ID entweder der Primary Key der Tabelle Parcel oder der Tabelle Distributor angezeigt wird. Ist es überhaupt möglich einen Foreign Key zu erstellen, der auf den Primary Key aus 2 verschiedenen Tabellen zugreift und entweder das eine, oder andere anzeigt?

Folgenden Code habe ich bereits zum Erstellen der Tabelle:
SQL:
create table Orders (
Orders_ID varchar(255),
Customer_ID varchar(255),
Employee_ID varchar(255),
Product_ID varchar(255),
Shipping_ID varchar(255),
Quantity int,
Order_date date,
Order_weight decimal(7,2),
Status varchar(255),
Cost decimal(7,2),
Discount varchar(255),
Total_cost decimal(7,2),


constraint PK_Orders primary key(Orders_ID),
constraint FK_CustomerOrders foreign key (Product_ID) references Customer(Customer_ID),
constraint FK_EmployeeOrders foreign key (Employee_ID) references Employee(Employee_ID),
constraint FK_ProductOrders foreign key (Product_ID) references Product(Product_ID),

    //hier gehört die Verknüpfung zu den Tabellen Parcel und Distributor, welche den korrekten Primary Key über Shipping_ID ausgibt 
);

die Idee ist, dass in der Spalte Shipping_ID entweder PA1, PA2, PA3,.. oder DI1, DI2, DI3,.. angezeigt wird
 

httpdigest

Top Contributor
There's no way to model Polymorphic Associations using SQL constraints. A foreign key constraint always references one target table.

Polymorphic Associations are supported by frameworks such as Rails and Hibernate. But they explicitly say that you must disable SQL constraints to use this feature.
 

dünner

Mitglied
Die xor Relation (1:n) geht entweder mit einer check constraint oder mit einer supertype table:

Code:
alter table `Orders` add constraint chk_Zusteller
    check (Parcel is not null xor Distributor is null);

(beide dürfen nicht null sein und beide dürfen nicht nicht-null sein, also genau was du willst)

 

Ähnliche Java Themen

Neue Themen


Oben