>Io volevo creare una relazione tra queste due tabelle al fine
>di ottimizzare e migliorare le join che andrò ad eseguire.
Se non ricordo male, in passato ti ho già spiegato che i constraint FK NON SERVONO a "migliorare le join" ma semplicemente impostano un vincolo che fa in modo che non esistano "figli orfani".
>Lavorando sulla tabella schedineps nel momento che creo la relazione
>e la vado a salvare mi esce questo messaggio di errore:
>
>Tabella 'Tab_datiAlbergo' salvata
>Tabella 'SchedinePS'
>- Impossibile creare la relazione 'FK_SchedinePS_Tab_datiAlbergo'.
>L'istruzione ALTER TABLE è in conflitto con il vincolo FOREIGN
>KEY "FK_SchedinePS_Tab_datiAlbergo". Il conflitto si è verificato
>nella tabella "dbo.Tab_datiAlbergo", column 'codalb' del database
>"Questura".
Mi sembra di capire che vuoi definire una relazione 1 a molti tra dbo.Tab_datiAlbergo e dbo.SchedinePS:
USE tempdb;
CREATE TABLE dbo.Tab_datiAlbergo(
codalb int NOT NULL
CONSTRAINT PK_Tab_datiAlbergo_1 PRIMARY KEY(codalb)
);
CREATE TABLE dbo.SchedinePS(
codalbergo int NOT NULL,
AnnoGestionale int NOT NULL,
NSchedina int NOT NULL,
IdComponente int NOT NULL,
CodAlloggiato int NOT NULL,
CONSTRAINT PK_SchedinePS PRIMARY KEY(
codalbergo ASC,
AnnoGestionale ASC,
NSchedina ASC,
IdComponente ASC,
CodAlloggiato ASC
));
ALTER TABLE dbo.SchedinePS
ADD CONSTRAINT FK_SchedinePS_Tab_datiAlbergo
FOREIGN KEY(codalbergo)
REFERENCES dbo.Tab_datiAlbergo(codalb);
/* Output:
Command(s) completed successfully.
*/
DROP TABLE dbo.SchedinePS, dbo.Tab_datiAlbergo;
Come vedi non ci sono problemi di sorta...
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org