Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Usare una chiave primaria per due chiavi esterne

    Stavo progettando un database per la gestione di un campionato di calcio, ma mi sono bloccato al principio sulla relazione più importante.

    La mia idea era di mettere come tabelle:
    Squadre (idSquadra, NomeSquadra)
    Partita (idPartita, idSquadra1, idSquadra2, Risultato)

    E in Partita, idSquadra1 e idSquadra2 sarebbero le chiavi esterne (con riferimento alla chiave primaria idSquadra).

    C'è un modo per far sì che la chiave primaria funzioni e mantenga l'integrità referenziale sia con idSquadra1 che con idSquadra2?

    Grazie mille, e se qualcosa non è chiaro, basta dirlo e cerco di rispiegare

  2. #2

    Re: Usare una chiave primaria per due chiavi esterne

    Originariamente inviato da Manuel Derevko
    C'è un modo per far sì che la chiave primaria funzioni e mantenga l'integrità referenziale sia con idSquadra1 che con idSquadra2?
    Hai provato ad aggiungere due foreign key alla tabella partita che puntano alla stessa chiave primaria nella tabella squadra?
    Saluti a tutti
    Riccardo

  3. #3
    se posso, sarebbe importante il codice sql per definire questa relazione:

    codice:
    ALTER TABLE Partita ADD CONSTRAINT 
    FK_Squadra_PartitaForSquadra1 FOREIGN KEY(IDSquadra1)
    REFERENCES Squadra(IDSquadra)
    ON DELETE CASCADE
    ON UPDATE CASCADE
    GO
    ALTER TABLE Partita ADD CONSTRAINT
    FK_Squadra_PartitaForSquadra2 FOREIGN KEY(IDSquadra2)
    REFERENCES Squadra(IDSquadra)
    ON DElETE CASCADE
    ON UPDATE CASCADE
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  4. #4
    Grazie mille, ora sembra che funzioni

    Solo un'ultima cosa, per conferma..ho creato questa query che mi fa vedere tutte le partite giocate, è fatta bene o c'è qualcosa che può renderla migliore e più efficiente?


    codice:
    SELECT Partita.idPartita, Squadra1.NomeSquadra AS NomeSquadra1, Squadra2.NomeSquadra AS NomeSquadra2, Partita.Risultato
    FROM Squadra AS Squadra1 INNER JOIN (Squadra AS Squadra2 INNER JOIN Partita ON Squadra2.idSquadra=Partita.idSquadra2) ON Squadra1.idSquadra=Partita.idSquadra1;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.