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

    [SQL] Elementi cardine del linguaggio da chiarire

    Buongiorno a tutti,

    Supponiamo di avere due tabelle:

    Padroni (PK_CodiceFiscale, Nome, Cognome)

    AnimaliDomestici (Nome, Razza, FK_CodiceFiscalePadrone)

    Supponiamo che creo(deve essere obbligatorio) prima un record Persona con i dati completi.

    Voglio inserire i dati dell'Animale ed associarlo al suo Padrone.

    Come si risolve in termini di Linguaggio-SQL questa procedura?

    Sapreste descriverla?

    Cordialmente.
    jabjoint

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Fai due insert, è la FK che li lega
    INSERT into Padroni('PADRONE_ID1', 'MARCO', 'ROSSI')
    INSERT into Animali('POLDO', 'LUPO', 'PADRONE_ID1')

  3. #3

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    Il mio problema � un pochino pi� articolato e non mi sembra sia descritto. (Uso Sql Server)

    Infatti supponiamo di avere anche una terza tabella(UbicazioneCanile) e di modificare il nome della tabella AnimaliDomestici con un codice:

    codice:
    Padroni (PK_CodiceFiscale, Nome, Cognome)
    
    AnimaliDomestici (PK_CodiceAnimale, Nome, Razza, FK_CodiceFiscalePadrone)
    
    UbicazioneCanile (PK_CodiceAnimaleUbicazione, Paese, FK_CodiceAnimale)


    codice:
    Create Table Padroni(
    
    PK_CodiceFiscale var(16) Primary Key Not Null,
    Nome varchar(20),
    Cognome varchar,
    
    )
    
    /*Nella tabella seguente collego direttamente la chiave PK_CodiceAnimale alla tabella Padroni*/
    
    Create Table AnimaliDomestici(
    
    PK_CodiceAnimale var(16) Primary Key Not Null,
    CONSTRAINT CodiceAnimale FOREIGN KEY(PK_CodiceAnimale) REFERENCES Padroni,
    Nome varchar(20),
    Razza varchar(20),
    
    ) 
    
    /*Definendo poi questa terza tabella, sembrerebbe che sbaglio qualcosa*/
    
    Create Table UbicazioneCanile(
    
    PK_CodiceAnimaleUbicazione var(16) Primary Key Not Null,
    CONSTRAINT CodiceAnimaleUbicazione FOREIGN KEY(PK_CodiceAnimaleUbicazione) REFERENCES AnimalIDomestici,
    Paese varchar(20),
    
    )
    /*Penso che nella tabella di mezzo debba necessariamente appoggiarmi ad un altro attributo(FK_CodiceFiscalePadrone).*/
    jabjoint

  5. #5
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Il mio problema � un pochino pi� articolato e non mi sembra sia descritto. (Uso Sql Server)
    Ovvio che non c'è descritto il TUO problema : e poi SQL è sempre SQL, salvo peculiarità del singolo db.

    comunque: hai un Animale che è legato a un Padrone, e ANCHE a una Ubicazione nel canile. quindi l'Animale ha una PK e due FK

    Se ti può aiutare fatti un disegnino delle tue entità e di come sono relazionate

  6. #6
    aggiungo: anche la Razza potrebbe far riferimento a una tabella di riferimento (appunto )

  7. #7
    Quote Originariamente inviata da optime Visualizza il messaggio
    aggiungo: anche la Razza potrebbe far riferimento a una tabella di riferimento (appunto )
    Grazie @optime per la risposta, ma le FK non capisco come nominarle e sopratutto non voglio siano visibili, perchè di fatto servirebbero solo a congiungere le tabellle, puoi farmi un esempio cortesemente?
    jabjoint

  8. #8
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    ... le FK non capisco come nominarle ...
    puoi dare il nome che vuoi, la funzione non dipende dal nome: comunque usa una notazione comprensibile, almeno per te

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    ... non voglio siano visibili, perchè di fatto servirebbero solo a congiungere le tabelle...
    che vuol dire "non visibili"?

    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    ... puoi farmi un esempio cortesemente?
    prendi spunto da quello che hai fatto/ti è stato suggerito finora: se fanno tutto gli altri non acquisirai mai le competenze (e non stiamo parlando di chissà cosa, ma di concetti di base, per questo ti avevo linkato quelle pagine )

  9. #9
    Un altro esempio,
    Ho la tabella ordine a cui vogli associare più articoli ed un solo cliente.
    Inizio associando l'articolo(quantomeno ci provo)
    codice:
    
    CREATE TABLE SchemaNegozio.ConsegnaOrdine (
    
    
        PK_CodiceOrdine varchar(30) NOT NULL PRIMARY KEY,    
        FK_CodiceArticolo varchar(30) NOT NULL, 
        DataConsegna date NOT NULL,    
        OraConsegna time NOT NULL,    
        CodiceSpedizioniere varchar(30) NOT NULL UNIQUE,    
    
    
    )
    
    
    
    CREATE TABLE SchemaNegozio.Articolo (
    
    
        PK_CodiceArticolo varchar(30) NOT NULL PRIMARY KEY FOREIGN KEY(PK_CodiceArticolo) REFERENCES SchemaNegozio.ConsegnaOrdine(FK_CodiceArticolo),
        FK_DettagliArticolo varchar(30) NOT NULL,    
        Descrizione varchar(30) NOT NULL,
        Peso int NOT NULL,
        Larghezza int,
        Lunghezza int,
        Altezza int,
        Prezzo float
        
    )
    Qui non mi crea la seconda tabella Articolo perché dice che la FK non è una Key primaria...
    Dove erro?

    Non uso direttamente la Primary Key:
    codice:
    PK_CodiceArticolo varchar(30) NOT NULL FOREIGN KEY(PK_CodiceArticolo) REFERENCES SchemaNegozio.ConsegnaOrdine(PK_CodiceOrdine),
    Perchè dopo non potrei agganciarci il cliente all'ordine.
    Ultima modifica di jabjoint; 02-04-2023 a 14:07
    jabjoint

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 © 2025 vBulletin Solutions, Inc. All rights reserved.