PDA

View Full Version : Aiutatemi con Access


BadMirror
22-11-2002, 15:46
Dovrei creare un piccolo database con access ma siccome non l'ho mai usato mi sono bloccato a metà:

prima entità: autori(nome data e luogo di nascita, data e luogo di morte)
seconda entità: pubblicazioni(titolo, data e luogo di edizione, argomento)

Devo fare un'associazione che chiamerò "contatti" tra ogni autore e quelli con cui ha collaborato.

Poi devo fare 2 query:

1 - dato un autore devo elencare gli atri con cui a collaborato che non hanno pubblicato opere dello stesso argomento
2 - data l'età e l'argomento devo elencare gli autori che si sono occupati di quell'argomento e sono morti in età minore a quella specificata

Io mi sono bloccato tra chiavi primarie, relazioni, etc..., senza contare che nelle query non so come definire le espressioni.

Vi prego di aiutarmi, anche perchè è piuttosto urgente, vi pago da bere!!!
;););)

BadMirror
22-11-2002, 20:17
UP :)

BadMirror
23-11-2002, 13:11
Vi prego sto impazzendo :eek:
:)

BadMirror
24-11-2002, 05:24
Dai raga non posso credere che nessuno di voi espertisssssssimi (mi sto arruffianando un pò :D ) non sappia dirmi cosa devo fare, basta che mi dite come faccio a fare l'associazione senza che mi compaia "vuoi inserire secondo foglio dati" e che mi dite le espressioni per le query, ho un giorno di tempo e nessuno a cui chiederlo tranne voi, pleaseeeeeeeeeeeee!!!
;)

BadMirror
24-11-2002, 14:29
Cioè ma rispondete a tutti su access tranne che a me, e che vi ho fatto :(

:p;);)

cionci
24-11-2002, 16:35
Dipende da come vuoi considerare il dominio di Autori...
Può esistere un autore con lo stesso nome, stessa data di nascita e stessa data di morte ? In pratica sì... Quindi dovresti aggiungere un utileriore campo identificativo (ID) che puoi definire di tipo Incremento...e deve essere chiave primaria...
Se supponi che non possano esistere esistere autori aventi lo stesso nome, la stessa data di nascita e la stessa data di morte la relazione è tutta chiave...
Se supponi che non esistano autori con lo stesso nome allora nome è la chiave primaria...

Stesso discorso per le pubblicazioni...

Se lo dovessi fare io metterei sia un campo ID su Autori che su Pubblicazioni...

Autori :
IDAutore Incremento, Intero Lungo, Chiave primaria
Nome Testo(255)
DataNascita Data (solo data)
DataMorte Data (solo data)

Pubblicazioni :
IDPubblicazione Incremento, Intero Lungo, Chiave primaria
Titolo Testo(255)
DataEdizione Data (solo data)
LuogoEdizione Testo(255)
Argomento Testo(255)

Se una pubblicazione può avere più di un autore farei una cosa del genere che definisce anche i "Contatti"...come li chiami tu...

Partecipazioni :
IDAutore Intero lungo
IDPubblicazione Intero lungo

IDAutore, IDPubblicazione Chiave primaria

BadMirror
24-11-2002, 17:27
Originariamente inviato da cionci
[B]Dipende da come vuoi considerare il dominio di Autori...
Può esistere un autore con lo stesso nome, stessa data di nascita e stessa data di morte ? In pratica sì... Quindi dovresti aggiungere un utileriore campo identificativo (ID) che puoi definire di tipo Incremento...e deve essere chiave primaria...
Se supponi che non possano esistere esistere autori aventi lo stesso nome, la stessa data di nascita e la stessa data di morte la relazione è tutta chiave...
Se supponi che non esistano autori con lo stesso nome allora nome è la chiave primaria...

Stesso discorso per le pubblicazioni...

Se lo dovessi fare io metterei sia un campo ID su Autori che su Pubblicazioni...

Autori :
IDAutore Incremento, Intero Lungo, Chiave primaria
Nome Testo(255)
DataNascita Data (solo data)
DataMorte Data (solo data)

Pubblicazioni :
IDPubblicazione Incremento, Intero Lungo, Chiave primaria
Titolo Testo(255)
DataEdizione Data (solo data)
LuogoEdizione Testo(255)
Argomento Testo(255)

Se una pubblicazione può avere più di un autore farei una cosa del genere che definisce anche i "Contatti"...come li chiami tu...

Partecipazioni :
IDAutore Intero lungo
IDPubblicazione Intero lungo

IDAutore, IDPubblicazione Chiave primaria


Grazie prima di tutto di essere intervenuto.
Allora, le tabelle le ho fatte. Il problema è che l'associazione "contatti" non si riferisce a collaborazioni sulle opere ma anche per esempio se un autore è stato allievo di un altro. Io ho messo autori e opere in associazione con contatti (vedi allegato) il problema è che così è solo un'associazione relativa all'opera e non contempla il caso che gli autori abbiano avuto contatti al di fuori della scrittura del libro.
Le Query poi proprio non riesco a capirci un'acca.
thanx ;)

cionci
24-11-2002, 17:31
Allora...ho visto che non ci possono essere autori con los tesso nome e pbblicazioni con lo stesso titolo...

Che significa quel campo "Contatti" ?

Per riolvere il problema dei contatti al di fuori della pubblicazione...potresti creare una tabella Contatti in cui in ogni tupla ci sono due autori che hannoa vuto contatti... Il roblema è che la tabella potrebbe presentare anche ridondanza visto che, nel caso ceh due autori si chiamino Tizio e Caio...(Tizio, Caio) è diverso da (Caio, Tizio), mentre in realtà questa relazione dovrebbe essere descritta da una unica tupla...

Altrimenti potresti fare un cosa un po' brutta dal punto di vista "stilistico" ma che sicuramente descrive pienamente la realtà...

Due tabelle :

IDGruppo(chiave), MotivoContatto

Autore, IDGruppo (la chiave è tutta la tabella)

In questo modo allo stesso contatto possono partecipare più di un autore...

BadMirror
24-11-2002, 17:40
Originariamente inviato da cionci
[B]Allora...ho visto che non ci possono essere autori con los tesso nome e pbblicazioni con lo stesso titolo...

Che significa quel campo "Contatti" ?

Il campo contatti è un'associazione (che non è una query) cioè una tabella che lega le altre due. In realtà il fatto che non ci sono autori con lo stesso nome e pubblicazioni con lo stesso titolo è x il fatto che latrimenti non riuscivo a fare òl'associazione (non potevo applicare l'integrità referenziale) ma tu fai conto che possano esistere.Boh, la verità è che in università ci hanno fatto un corso di access coi piedi e poi vogliono che risolviamo stò esercizio sigh! :(

cionci
24-11-2002, 17:46
Ho modificato il mio post precedente...dacci un'occhiata...

cionci
24-11-2002, 18:04
Ah...in realtà se MotivoContatto non è una informazione rilevante puoi eliminare la prima tabella e lasciare solo l'ultima...

Per sapere ad esempio con quali autori è in contatto ogni singolo autore puoi fare una query del genere :

SELECT A.Autore AS Autore, B.Autore AS Contatto
FROM Contatti AS A, Contatti AS B
WHERE A.IDGruppo=B.IDGruppo And A.Autore<>B.Autore
ORDER BY A.Autore;

BadMirror
24-11-2002, 18:07
Originariamente inviato da cionci
[B]Per riolvere il problema dei contatti al di fuori della pubblicazione...potresti creare una tabella Contatti in cui in ogni tupla ci sono due autori che hannoa vuto contatti... Il roblema è che la tabella potrebbe presentare anche ridondanza visto che, nel caso ceh due autori si chiamino Tizio e Caio...(Tizio, Caio) è diverso da (Caio, Tizio), mentre in realtà questa relazione dovrebbe essere descritta da una unica tupla...

Altrimenti potresti fare un cosa un po' brutta dal punto di vista "stilistico" ma che sicuramente descrive pienamente la realtà...

Due tabelle :

IDGruppo(chiave), MotivoContatto

Autore, IDGruppo (la chiave è tutta la tabella)

In questo modo allo stesso contatto possono partecipare più di un autore...

Allora, in effetti la prima cosa che devo evitare è proprio la ridondanza quindi la prima ipotesi non può andare. la seconda non ho capito dove devo mettere i nomi degli autori "collaboratori" che si legano agli autori delle opere. Poi ho il timore che quando vado a collegare opere ad autori si sovrappongano 2 relazioni e mi chieda di inserire un foglio dati secondario.

cionci
24-11-2002, 18:10
Un esempio :

Autore IDGRuppo

Tizio 1
Caio 1
Sempronio 1
Pippo 2
Pluto 2

Pippo è in contatto con Pluto...Tizio è in contatto sia con Caio che con Sempronio e anche Caio è in contatto con Sempronio...

BadMirror
24-11-2002, 18:38
Ok e metti che tizio si8a in contatto con caio e con pluto, come viene?

cionci
24-11-2002, 18:55
Tizio 1
Caio 1
Sempronio 1
Pippo 2
Pluto 2
Tizio 3
Pluto 3

Sai già che Tizio è in contatto con Caio...

Se vuoi fare tutto da zero :

Tizio 1
Caio 1
Tizio 2
Pluto 2

Comunque se vuoi che la relazione di contatto sia solo binaria, la prima tabella diventa :

Tizio 1
Caio 1
Tizio 4
Sempronio 4
Sempronio 5
Caio 5
Pippo 2
Pluto 2
Tizio 3
Pluto 3

BadMirror
24-11-2002, 19:03
Ok vedo che ne esce, mi sa che sarà una lunga notte! ;););)