[MySQL] Implementazione tabelle??

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
luciano9429
Prode Principiante
Messaggi: 107
Iscrizione: martedì 24 dicembre 2013, 11:40
Distribuzione: ubuntu 12.04 lts 64 bit

[MySQL] Implementazione tabelle??

Messaggio da luciano9429 »

Ho fatto un progetto ed nello schema e/r ho degli attributi che fanno riferimento all'associazione e non all'entità. Nel fare l'implementazione con create table dove devo inserire gli attributi dell' associazione (forse nella tabella a cui si riferiscono)?
Poi ho un' entità identificabile con due primary key come faccio a dichiararle in sql? Mi da errore se metto due primary key.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Implementazione tabelle??

Messaggio da Zoff »

Gli attributi della relazione vanno nella JOIN TABLE per le relazioni N-M, negli altri casi vanno nel lato 1 della 1-N, i casi 1-1 non esistono perché quando vai a portare tutto in terza forma normale le relazioni 1-1 spariscono.

Ad esempio se hai una tabella PERSONE e una tabella ABITAZIONI e nella relazione 1-N ABITA vuoi mettere la data da cui parte la relazione questa va ovviamente nella tabella PERSONE, una persona può iniziare ad abitare una abitazione una sola volta mentre una abitazione, potendo ospitare piu' persone, ha diversi valori per l'attributi data della relazione ABITA.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
luciano9429
Prode Principiante
Messaggi: 107
Iscrizione: martedì 24 dicembre 2013, 11:40
Distribuzione: ubuntu 12.04 lts 64 bit

Re: [MySQL] Implementazione tabelle??

Messaggio da luciano9429 »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591213#p4591213][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Gli attributi della relazione vanno nella JOIN TABLE per le relazioni N-M, negli altri casi vanno nel lato 1 della 1-N, i casi 1-1 non esistono perché quando vai a portare tutto in terza forma normale le relazioni 1-1 spariscono.

Ad esempio se hai una tabella PERSONE e una tabella ABITAZIONI e nella relazione 1-N ABITA vuoi mettere la data da cui parte la relazione questa va ovviamente nella tabella PERSONE, una persona può iniziare ad abitare una abitazione una sola volta mentre una abitazione, potendo ospitare piu' persone, ha diversi valori per l'attributi data della relazione ABITA.
Per le relazioni 0,N?
E per quanto riguarda il discorso delle primary key, posso usare unique giusto?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [MySQL] Implementazione tabelle??

Messaggio da Zoff »

Le relazioni 0,N non esistono. Sono relazioni 1-N facoltative, quindi vanno trattate come 1-N.

Le primary key vanno definite come primary non come unique.
Per creare una tabella con piu' primary key basta mettere i nomi separati da virgola nel costrutto PRIMARY della query:

Codice: Seleziona tutto

CREATE TABLE nome_tabella (
  prima_chiave int(11) NOT NULL,
  seconda_chiave int(11) NOT NULL,
  PRIMARY KEY (prima_chiave, seconda_chiave)
)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
luciano9429
Prode Principiante
Messaggi: 107
Iscrizione: martedì 24 dicembre 2013, 11:40
Distribuzione: ubuntu 12.04 lts 64 bit

Re: [MySQL] Implementazione tabelle??

Messaggio da luciano9429 »

Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4591949#p4591949][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Le relazioni 0,N non esistono. Sono relazioni 1-N facoltative, quindi vanno trattate come 1-N.

Le primary key vanno definite come primary non come unique.
Per creare una tabella con piu' primary key basta mettere i nomi separati da virgola nel costrutto PRIMARY della query:

Codice: Seleziona tutto

CREATE TABLE nome_tabella (
  prima_chiave int(11) NOT NULL,
  seconda_chiave int(11) NOT NULL,
  PRIMARY KEY (prima_chiave, seconda_chiave)
)
A ok grazie delle delucidazioni. Non sapevo si potesse dichiarare cosi due chiavi primarie.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti