• User

    Chiave esterna su due tabelle

    Ciao a tutti!
    Ho un problema con l'SQL. Non mi riferisco ad una specifica implementazione, tipo MySQL. Vorrei che un campo di una tabella faccia riferimento ad un valore contenuto in un'altra tabella oppure ad un valore contenuto in una terza tabella. In poche parole che un campo abbia due chiavi esterne, di cui almeno una rispettata.

    Ho già letto delle soluzioni su internet che consigliano di creare una tabella contenente l'unione dei campi delle due tabelle che devono essere referenziate.
    Supponiamo che io non possa farlo.

    Non esiste una soluzione di vincolo da applicare alla prima tabella tipo:

    
    check ((campo1 IN tabella2.campo2) OR (campo1 IN tabella3.campo3))
    

    Io ho trovato questa soluzione, ma non so se può andare bene...

    
    CREATE VIEW vista1(campo_vista) AS
    SELECT campo2
    FROM tabella2
    UNION 
    SELECT campo3
    FROM tabella3;
    
    ALTER TABLE tabella1
    ADD CONSTRAINT VincoloIntegrita
    CHECK (campo1 IN (SELECT campo_vista FROM vista1));
    

    Credo che i nomi siano abbastanza autoesplicativi, se così non fosse chiedetemi pure di essere più chiaro.

    Grazie mille!