Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760

    SQL - conferma per integrità referenziale

    codice:
    CREATE TABLE persona
    (
      matr character(4) NOT NULL,
      cognome character(40) NOT NULL,
      nome character(40) NOT NULL,
      "Eta" integer DEFAULT 0,
      "Luogo_nascita" character(20),
      CONSTRAINT pk_persona PRIMARY KEY (matr)
    )
    
    
    
    CREATE TABLE telefono
    (
      ntelefono character(12) NOT NULL,
      matr character(4),
      "Luogo_tel" character(20),
      CONSTRAINT pk_telefono PRIMARY KEY (ntelefono),
      CONSTRAINT fk_telefono FOREIGN KEY (matr)
          REFERENCES persona (matr) MATCH FULL
          ON UPDATE CASCADE ON DELETE SET NULL
    )
    è corretto fare in questo modo per creare un vincolo di integrità referenziale (per creare una relazione uno a molti) ,tra persone e telefono?
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Una persona può avere più numeri di telefono ma ogni numero di telefono appartiene ad una sola persona, giusto? Direi che è fatto bene.
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    perfetto,grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    ho ancora un dubbio su un altra cosa,ho postato qui per evitare di fare un doppio messaggio,perchè l' argomento è lo stesso

    In un db su Aereoporti,ho collegato la città di partenza e di arrivo di volo con città di aereoporto.E' corretto così?Inoltre che campo devo mettere,(di Postgresql) per mettere ora arrivo e partenza (es.22.45)
    Graze mille in anticipo


    codice:
    CREATE TABLE aereo
    (
      tipoaereo character(40) NOT NULL,
      numpasseggeri integer NOT NULL,
      qtamerci integer NOT NULL,
      CONSTRAINT pk_aereo PRIMARY KEY (tipoaereo)
    )
    
    CREATE TABLE aereoporto
    (
      citta character(40) NOT NULL,
      nazione character(40) NOT NULL,
      numpiste integer NOT NULL,
      CONSTRAINT pk_aereoporto PRIMARY KEY (citta)
    )
    
    CREATE TABLE volo
    (
      idvolo integer NOT NULL,
      giornosett character(15) NOT NULL,
      cittapart character(40) NOT NULL,
      orapart integer NOT NULL,
      cittaarr character(40) NOT NULL,
      oraarr integer NOT NULL,
      tipo_aereo character(40) NOT NULL,
      CONSTRAINT pk_volo PRIMARY KEY (idvolo, giornosett),
      CONSTRAINT fk_volo FOREIGN KEY (cittapart)
          REFERENCES aereoporto (citta) MATCH FULL
          ON UPDATE CASCADE ON DELETE SET NULL,
      CONSTRAINT fk_volo2 FOREIGN KEY (cittaarr)
          REFERENCES aereoporto (citta) MATCH FULL
          ON UPDATE CASCADE ON DELETE SET NULL,
      CONSTRAINT fk_volo3 FOREIGN KEY (tipo_aereo)
          REFERENCES aereo (tipoaereo) MATCH FULL
          ON UPDATE CASCADE ON DELETE NO ACTION
    )

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da gabama
    In un db su Aereoporti,ho collegato la città di partenza e di arrivo di volo con città di aereoporto.E' corretto così?
    Quando hai una relazione 1:N devi sempre mettere la chiave esterna nella tabella "dalla parte di N". Non è proprio obbligatorio, ma decisamente consigliabile. Inoltre, la chiave esterna deve referenziare la chiave primaria della tabella con cui si vuole creare la relazione. Tu hai fatto proprio così, quindi perché ti poni tanti dubbi? Piuttosto chiediti se "città" può fungere davvero da chiave primaria per aereoporto: esistono città con più aereoporti, poi se nel tuo progetto non hai questo problema è un altro discorso.

    Originariamente inviato da gabama
    Inoltre che campo devo mettere,(di Postgresql) per mettere ora arrivo e partenza (es.22.45)
    Consulta la documentazione di Postgresql, sicuramente avrà dei tipi di dato per tempo e data (timestamp, datetime o simili).
    every day above ground is a good one

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