Pagina 1 di 1

[MySQL] Implementazione tabelle??

Inviato: venerdì 30 maggio 2014, 11:32
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.

Re: [MySQL] Implementazione tabelle??

Inviato: venerdì 30 maggio 2014, 14:56
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.

Re: [MySQL] Implementazione tabelle??

Inviato: venerdì 30 maggio 2014, 17:26
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?

Re: [MySQL] Implementazione tabelle??

Inviato: sabato 31 maggio 2014, 19:32
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)
)

Re: [MySQL] Implementazione tabelle??

Inviato: domenica 1 giugno 2014, 21:59
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.