Creazione schema E-R: entità o associazione?

giovi8823

Nuovo Utente
28 Ago 2009
13
0
0
Salve ragazzi,
Ho un piccolo problema.
Allora devo creare uno schema e-r avendo a disposizione questo codice sql:

CREATE TABLE Libro (
isbn integer PRIMARY KEY,
titolo varchar(150) NOT NULL,
id_ed integer NOT NULL,
anno integer NOT NULL,
prezzo numeric(6,2) NOT NULL CHECK(prezzo > 0),
num_pag integer NOT NULL CHECK(num_pag > 0),
FOREIGN KEY (id_ed) REFERENCES Editore(ID)
);


CREATE TABLE Acquisto (
id integer PRIMARY KEY,
id_cl integer NOT NULL,
isbn integer NOT NULL,
FOREIGN KEY (id_cl) REFERENCES Cliente(id),
FOREIGN KEY(isbn) REFERENCES Libro(isbn)
);

CREATE TABLE Cliente (
id integer PRIMARY KEY,
nome varchar(100) NOT NULL,
cognome varchar(100) NOT NULL,
anno_nascita integer CHECK (anno_nascita >= 1880),
residenza varchar(100) NOT NULL
);


Ovviamente esistono altre tabelle ma il mio problema è su queste due.
Allora sono nell atroce dubbio se Acquisto sia un ENTITA' oppure una semplice relazione.
All'inizio pensavo ad una relazione ma non capisco perchè esiste un codice univoco che ID dentro acquisto che mi porta a pensare che sia un antità autonoma e i due campi "isbn" e "id_cl" sono messi come chiavi esterne..
Posso aggiungere che so anche che ogni acquisto possiede un codice unico e che un acquisto puo possedere solo un cliente e un oggetto comprato.

Cosa ne pensate voi è un entità o una semplice relazione che collega CLIENTE con LIBRO??

grazie a tutti!!!
 
cioè te dici che é un relazione/associazione (N,N) tra libro e cliente???

Mi puoi spiegrae che c'entra e come mai c'hanno messo una chiave in piu in ACQUISTO (che è ID) e hanno messo le due chiai come chiavi esterne??

Programmatore puoi spiegarmi meglio ti prego non ci capisco piu nulla...sto impazzendo...ufffffffa

ciao grazie mille
 
cioè te dici che é un relazione/associazione (N,N) tra libro e cliente???
Esattamente.
Mi puoi spiegrae che c'entra e come mai c'hanno messo una chiave in piu in ACQUISTO (che è ID) e hanno messo le due chiai come chiavi esterne??
E' la normale traduzione di una relazione molti a molti, dato che nessuno dei 2 campi può essere chiave perché avranno duplicati entrambi nella tabella 'acquisto'.
Anche se acquisto avesse avuto degli argomenti (es. data di acquisto), sarebbe stata associazione comunque (la data sarebbe stato attributo dell'associazione).
Comunque se anziché pensarlo così:
CLIENTE -(1,n)----<>----(1,n)-LIBRO
la pensi:
CLIENTE -(1,n)----<>----(1,1)--ACQUISTO--(1,1)---<>---(1,n)-LIBRO
non è sbagliato. Nel secondo caso faresti prima a tradurre lo schema e/r se acquisto avesse anche degli attributi ('data' nell'esempio che ti avevo fatto io).
Quindi se è relazione o entità dipende dalle 2 versioni di e/r che stai pensando. Non è sbagliato pensarla come relazione (nel secondo caso).
Se volessi essere pignolo, ti direi che è un'associazione perché le tue entità sono LIBRO e CLIENTE e sono legati fra di loro da un ACQUISTO.
 
Ok te intendi dire che le due chiavi non formano un codice univoco e quindi è stato opportuno mettere un ID per creare l'unicità??? Quindi non vuol dire nulla se le dichiara esterne con references???



Quindi io faccio lo schema e-r mettendo la relazione ACQUISTO tra Libro e cliente. Forse è la meglio cosa xchè inizialmente avevo messo come mi hai suggerito nel secondo passo ma forse è piu facile mettere una sola relazione... altrimenti ne vengono ulteriori.

Ti allego come dovrebbe venire lo schema E_R dimmi se è corretto.
 

Allegati

Quindi non vuol dire nulla se le dichiara esterne con references???
Mi sfugge un nesso... non ho capito il tuo dubbio... ti dico cosa penso, scusandomi in anticipo per la schiettezza.
Secondo me questo è un esercizio di scuola, non hai studiato e io te l'ho risolto. Se questo è vero non hai avuto rispetto del mio tempo oltre a non aver neanche letto la teoria sugli e/r né la sintassi dell'sql. Se non è così voglio proprio sapere che motivo avresti per passare da un db (così stupido) al suo schema e/r (dato che il passaggio natuale è in senso contrario). Se per assurdo fosse per lavoro, ti consiglierei di cambiarlo o di crearti delle basi.

Detto questo, a beneficiio di qualche altro scolaro miope (cioè che vede solo i problemi che ha davanti al naso e non quelli che gli si presenteranno in futuro con la propria svogliatezza), sì meglio 1 associazione per non crearne altre 2 fittizie, nello schema e/r hai copiato male mettendo un '!' anziché un '1', per il resto è come l'avevo disegnato io in ascii-art :D
 
Si sono esercizi... ma non come pensi te per consegnare dalle vacanze. Sono esercizi in preparazione degli esami. Sai, NON si nasce IMPARATI e bisgona partire quasi da zero se non se ne sa molto. Lo so sono eseercizi stupidi.
Io ho iniziato da zero e sto esercitamdomi. Adesso avevo questo grosso dubbio e non sapevo come risolverlo e SOPRATTUTTO volevo chiarirlo nelle mia mente .

Scusa se ho portato via il tuo tempo

ciao ciao grazie cmq!
 
esercizio importantissimo da risolvere HELP

Salve, sono una ragazza che frequenta l’ultimo anno della scuola serale e che questa sera deve esporre un problema di informatica. Questo è il testo del problema:

L’ ITIS Lagrange di Milano, istituto in cui sono presenti gli indirizzi Elettronica(E), Meccanica(M) e Informatica(I), decide di far costruire un database contenenti le informazioni anagrafiche di tutti i suoi studenti (Matricola, Cognome, Nome, Sesso, Data di nascita, Indirizzo, CAP, Città, Telefono) e in particolare dei diplomati (indirizzo di studio, Voto di maturità (numero compreso tra 60 e 100), Anno (anno di conseguimento della maturità come numero di 4 cifre)).
Disegnare il modello E/R con i versi delle associazioni. Utilizzando le regole di derivazione costruire il modello relazionale e dopo creare le relazioni con il comando CREATE TABLE.
Successivamente si desidera ottenere:
1. elenco completo degli studenti;
2. voti conseguiti dai diplomati ordinati per matricola;
3. cognome, nome e voto di ogni studente diplomato, con voto compreso tra 60 e 80;
4. elenco dei diplomati i cui cognome comincia con la lettera A, ordinati per cognome e nome;
5. dati completi di tutte le ragazze nate dopo il 31/12/1985, residenti a Legnago o Milano;
6. cognome e nome di tutti i diplomati in Informatica nell’anno 2002 con voto da 80 in poi.


Ecco questo è il mio problema che questa sera dovrò esporre, io ho provato a farlo ma non’ è che ce ne sia venuta fuori, soprattutto nella creazione del modello E/R. Vorrei per cortesia una mano, e vorrei vedere come dovrebbe essere risolto per confrontarlo con il lavoro fatto da me e trovare gli errori. Se cortesemente lei mi potesse inviare lo svolgimento di questo problema le sarei davvero grata. Purtroppo io posseggo un portatile senza stampante e quindi non posso mandare e farle vedere il lavoro fatto da me sul problema sopra elencato, però le posso dire che mi sono bloccata già in partenza sul modello E/R.
Aspetto con ansia una sua e-mail, e la ringrazio già ora per il suo tempo che mi dedicherà.
Saluti Alessia.
 

Discussioni simili