Relazione tra tabelle sql

lunedì 19 novembre 2012 - 12.36
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows Server 2008 R2  |  Visual Studio 2010

trinity Profilo | Guru

Ciao,

domanda ho una combo che carica le regioni d'italia ed in base alla scelta nella seconda combo carica le rispettive province...se in sql creao una relazione tra le due tabelle utilizzando i campi indicizzati, aumento in questo caso la velocità di ricerca e di visualizzazione delle province?

Però c'è un problema o almeno penso...la teballa regioni ha il campo id che è chiave primaria mentre nella tabella province il campo idregione è solo indicizzato non è una chiave primaria, tra questi due campi si può creare ugualmente una relazione oppure devono essere entrambi chiavi primarie?

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

renarig Profilo | Expert

>la teballa regioni ha il
>campo id che è chiave primaria mentre nella tabella province
>il campo idregione è solo indicizzato non è una chiave primaria,
Giusto


>tra questi due campi si può creare ugualmente una relazione
Si, Si fà cosi



>oppure devono essere entrambi chiavi primarie?
No, sarebbe un errore

oppure sarebbe un'altro tipo di relazione ( uno a uno )

Mentre la relazione regione provincie è uno a molti
( una regione molte provincie )

.


.

trinity Profilo | Guru

quindi devo relazionare la chiave primaria della tabella regioni con l'idregione (che è indice) della tabella province
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>quindi devo relazionare la chiave primaria della tabella regioni
>con l'idregione (che è indice) della tabella province
al di là dell'indice.. una relazione ha sempre una parte di chiave primaria ed una esterna.
Se poi nella parte "esterna" c'è una pk, allora, come dice renarig è una 1:1.
Il fatto che tu faccia l'indice sulla chiave esterna non è obbligatorio, ma nella maggior parte dei casi aiuta e velocizza le query che molto probabilmente leggono i dati con relazione identica a quella definita fisicamente, e comunque ogni lookup che viene fatta per la verifica del vincolo. Quindi, non tutte le colonne di fk devono per forza essere indicizzate ma nella maggior parte dei casi aiuta.
Tuttavia, fai attenzione a non metter l'indice laddove non è così importante perchè avresti il rovescio della medaglia:
- frammentazione indici più probabile
- manutenzione indici più dispendiosa
- spazio occupato maggiore inutilmente

ciao

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5