[ccess] aiuto realizzazione e normalizzazione

lunedì 11 agosto 2008 - 21.37

miomiomio Profilo | Junior Member

ciao a tutti

avrei bisogno del vostro aiuto per realizzare un database.

Vorrei creare un database col quale poter associare una parola a più autori.

se la tabella Parole ad esempio contiene:
Amore & nbsp; 1, 2, 3
Amicizia &nbs p; 2, 3
Baffi & nbsp; 3, 1
Mare &n bsp; 3, 2
Zucche 1


e la tabella Autori:
1 Pippo
2 Pluto
3 Paperino

In pratica associo nella prima tabella il codice degli autori che usano questa parola
poi è possibile prendere i numeri separati da virgole e mostrare i nomi degli autori correlati?

come imposto il database? se di ogni autore dovesi mettere anche i riferimenti alle opere in cui appare la parola quale tabella dovrei aggiungere?

grazie

lbenaglia Profilo | Guru

>In pratica associo nella prima tabella il codice degli autori
>che usano questa parola
>poi è possibile prendere i numeri separati da virgole e mostrare
>i nomi degli autori correlati?
No.

>come imposto il database?
Quella che hai appena descritto è una classica relazione molti-a-molti: Ad 1 parola possono corrispondere più autori e ad 1 autore possono corrispondere più parole.
Per implementare questa relationship occorre servirsi di una tabella di giunzione, la cui Primary Key è data dalle Primary Key delle due tabelle che intendi relazionare.

Osserva questo esempio in T-SQL:

USE tempdb; CREATE TABLE dbo.Parole( ParolaID int NOT NULL PRIMARY KEY, Parola varchar(10) NOT NULL ); CREATE TABLE dbo.Autori( AutoreID int NOT NULL PRIMARY KEY, Autore varchar(10) NOT NULL ); CREATE TABLE dbo.Parole_Autori( ParolaID int NOT NULL, AutoreID int NOT NULL, CONSTRAINT PK_Parole_Autori PRIMARY KEY(ParolaID, AutoreID), CONSTRAINT FK_Parole_Autori_Parole FOREIGN KEY(ParolaID) REFERENCES dbo.Parole(ParolaID), CONSTRAINT FK_Parole_Autori_Autori FOREIGN KEY(AutoreID) REFERENCES dbo.Autori(AutoreID) ); INSERT dbo.Parole VALUES(1, 'Amore'); INSERT dbo.Parole VALUES(2, 'Amicizia'); INSERT dbo.Parole VALUES(3, 'Baffi'); INSERT dbo.Parole VALUES(4, 'Mare'); INSERT dbo.Parole VALUES(5, 'Zucche'); INSERT dbo.Autori VALUES(1, 'Pippo'); INSERT dbo.Autori VALUES(2, 'Pluto'); INSERT dbo.Autori VALUES(3, 'Paperino'); INSERT dbo.Parole_Autori VALUES(1, 1); INSERT dbo.Parole_Autori VALUES(1, 2); INSERT dbo.Parole_Autori VALUES(1, 3); INSERT dbo.Parole_Autori VALUES(2, 2); INSERT dbo.Parole_Autori VALUES(2, 3); INSERT dbo.Parole_Autori VALUES(3, 3); INSERT dbo.Parole_Autori VALUES(3, 1); INSERT dbo.Parole_Autori VALUES(4, 3); INSERT dbo.Parole_Autori VALUES(4, 2); INSERT dbo.Parole_Autori VALUES(5, 1); SELECT A.Autore, P.Parola FROM dbo.Autori AS A INNER JOIN dbo.Parole_Autori AS PA ON A.AutoreID = PA.AutoreID INNER JOIN dbo.Parole AS P ON PA.ParolaID = P.ParolaID ORDER BY A.Autore; /* Output: Autore Parola ---------- ---------- Paperino Amore Paperino Amicizia Paperino Baffi Paperino Mare Pippo Amore Pippo Baffi Pippo Zucche Pluto Amore Pluto Amicizia Pluto Mare (10 row(s) affected) */ DROP TABLE dbo.Parole_Autori, dbo.Parole, dbo.Autori;

>se di ogni autore dovesi mettere anche
>i riferimenti alle opere in cui appare la parola quale tabella
>dovrei aggiungere?
Ah non lo so, spiega quello che hai in mente e parliamone

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

miomiomio Profilo | Junior Member

innanzi tutto grazie
forse non ho premesso una cosa fondamentale, so pochissimo di access e il T-sql non so cosa sia.

quello che a me servirebbe è una sorta di vocabolario che, digitata una parola, mi restituisca tutte le opere e rispettivi autori nelle quali compare la patrola ricercata.
faccio una tabella con tutti gli autori, una con tutte le parolee una con tutte le opere poi come le collego?
ti rigrazio per l'auito
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5