[Basi di dati] Creazione tabella, PK

Messaggioda EveyH » 21/09/2017, 17:10

Ho queste due tabelle:

UTENTE(Username, Password, Tipo)
PROFILOUTENTE(Matricola, Utente, Nome, Cognome, AnnoN, LuogoN, Telefono, Foto, Corso)

Con questo vincolo di integrità:
PROFILOUTENTE.Utente -->UTENTE.Username

Nella creazione della tabella PROFILOUTENTE se metto Matricola ed Utente come Primary Key non posso modellare il fatto che ci potrebbero essere due profili utente con la stessa matricola perché una primary key è per definizione unique.
Ho un vuoto di memoria, quale altra strada posso usare, per fare in modo che Matricola ed Utente siano la chiave di PROFILO UTENTE ma lasciando la possibilità di valori uguali per Matricola?
Grazie!
EveyH
Junior Member
Junior Member
 
Messaggio: 118 di 313
Iscritto il: 18/01/2015, 15:18

Re: [Basi di dati] Creazione tabella, PK

Messaggioda apatriarca » 21/09/2017, 18:19

Se è la coppia (Matricola, Utente) ad essere la primary key allora ci possono essere due matricole uguali a patto che ci siano due utenti diversi.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4823 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Basi di dati] Creazione tabella, PK

Messaggioda EveyH » 21/09/2017, 18:33

Ah ok grazie, non me lo ricordavo proprio :D Effettivamente, a pensarci bene, se non fosse così, che senso avrebbe poter usare più di un attributo per la chiave primaria?
Approfitto per un'altra domanda: per implementare un vincolo di questo tipo: alla rimozione di un utente, in tutti gli eventi a cui ha partecipato va sostituito il nominativo con la stringa "anonimo", mi serve un trigger?
Grazie!
EveyH
Junior Member
Junior Member
 
Messaggio: 119 di 313
Iscritto il: 18/01/2015, 15:18

Re: [Basi di dati] Creazione tabella, PK

Messaggioda apatriarca » 21/09/2017, 18:40

Sì, certo. A meno ovviamente di lasciare questo compito all'applicazione. Mi sembra tuttavia sia in questo caso meglio un trigger.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4824 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Basi di dati] Creazione tabella, PK

Messaggioda EveyH » 21/09/2017, 18:52

Ed in tal caso, cioè creando un trigger, cosa dovrei mettere nella clausola "ON DELETE" ?
EveyH
Junior Member
Junior Member
 
Messaggio: 120 di 313
Iscritto il: 18/01/2015, 15:18

Re: [Basi di dati] Creazione tabella, PK

Messaggioda apatriarca » 21/09/2017, 18:57

Sì, è l'operazione che vuoi catturare.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4825 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [Basi di dati] Creazione tabella, PK

Messaggioda EveyH » 21/09/2017, 19:12

Mi riferivo a cosa devo mettere nella clausa "ON DELETE" che inserirò nel vincolo di integrità referenziale nella tabella "figlia",
EveyH
Junior Member
Junior Member
 
Messaggio: 121 di 313
Iscritto il: 18/01/2015, 15:18

Re: [Basi di dati] Creazione tabella, PK

Messaggioda EveyH » 21/09/2017, 23:28

Altro dilemma: perché non riesco ad impostare una FK su un attributo (della tabella interna) che non è né chiave né unique (e non deve esserlo). Ovviamente l'attributo che sto referenziando (della tabella esterna) è una PK.
Cioè, io ho
PROFILOUTENTE(Matricola, Utente, Nome, Cognome, AnnoN, LuogoN, Telefono, Foto, Corso)
e
CORSO(Codice, Nome)

Ma non riesco a fare in modo che PROFILOUTENTE.Corso sia riferito a CORSO.Codice.
Perché?

Edit: per questa ho risolto. Per motivi che ignoro, l'attributo Corso deve essere "indicizzato".
EveyH
Junior Member
Junior Member
 
Messaggio: 122 di 313
Iscritto il: 18/01/2015, 15:18


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite