2016-10-21 5 views
1

enter image description here0.59 Beziehung zwischen drei Tabellen

Hallo Ich möchte ein ot eine Beziehung Schiff zwischen drei Tabellen erreichen, so dass rtTicketId (1) kann nur verwendet werden vmID (1) und nicht durch Dbid verwendet werden können (1).

Ich habe dies getan, aber dies erstellen eins zu eins Beziehung zwischen nur zwei getrennt. Ich möchte, dass rt id einzigartig ist. Im Moment können sowohl vm als auch db table dieselbe rtTicketId verwenden, um eine Verbindung zur Anfragetabelle herzustellen. Ich will das nicht

+0

Um völlig klar zu sein - eine Anfrage kann entweder für eine DB oder eine VM sein, aber nicht beides? –

+0

@NevilleK ja nur einer kann auf einmal anfordern – Pritbh

+0

http://stackoverflow.com/questions/1493229/multiple-yet-mutual-exclusive-foreign-keys-ist-the-way-to-go - tut dies beantworte deine Frage? –

Antwort

0

Vielleicht polymorphe Assoziation wird helfen; z.B. Anstelle von VM, da DB eine Spalte zum Speichern von rtTicketId hat, wird RT 2 Spalten haben, fkId und fkType zum Beispiel, fkId speichert den Primärschlüssel in VM oder DB und fkType definiert, wo beim Abfragen (DB oder VM) zu suchen ist.

Siehe auch hier: Possible to do a MySQL foreign key to one of two possible tables?

Eine andere Option, die ich denken kann, ist, dies zu tun programmatisch wie:

SELECT * FROM RequestTable WHERE rtTicketId NICHT IN (DISTINCT rtTicketId VON your_other_table_vm_or_db SELECT)

+0

es programmatisch zu tun ist wahrscheinlich nicht der effiziente Weg, wie später auf Datenbank zu wachsen, um andere Typen wie Desktop und einige andere Tabellen zu haben (anders als vm und db) – Pritbh

Verwandte Themen