>>>sto mettendo in relazione due tabelle di sql server 2005 al fine
>>>di rendere + concrete le mie select con le join...
>>
>>Concrete?
>
>si
E che significa "concrete"?
>>Ella miseria, non ti conviene definire una una colonna ad-hoc
>>(ad es. una colonna IDENTITY) sulla quale definire la PK?
>>Se ti serve l'univocità su queste colonne puoi definire su di
>>esse un constraint UNIQUE.
>
>in che senso?
Aggiungere una colonna IDENTITY alla tabella definendo su di essa un contraint PRIMARY KEY.
>>Se codprov è la PK, a che ti serve Id?
>id non mi serve a nulla appunto lo stavo togliendo ma prima di
>farlo dovrei modificare del codice anche su vb.
OK, modifica il codice poi eliminala.
>>Quale relazione stai definendo?
>>Su quale tabella?
>>Su quali colonne?
>
>mi serve relazionare la tabella archivio_mov con la tabella province,
>ossia in archivio mov ho una colonna chiamata codcomune essa
>è il codprov della tabella province.
OK:
USE tempdb;
CREATE TABLE dbo.Archivio_mov(
Archivio_mov_ID int NOT NULL IDENTITY PRIMARY KEY,
codalbergo int NOT NULL,
CodComAlb int NOT NULL,
prog_schedina int NOT NULL,
annogestionale int NOT NULL,
data_elaborazione smalldatetime NOT NULL,
stato varchar(1) COLLATE Latin1_General_CI_AS NULL,
ncomp int NULL,
stato_res varchar(250) COLLATE Latin1_General_CI_AS NULL,
codstato int NULL,
comune varchar(250) COLLATE Latin1_General_CI_AS NULL,
prov varchar(2) COLLATE Latin1_General_CI_AS NULL,
codcomune int NULL CONSTRAINT DF_Archivio_mov_codcomune DEFAULT ((0)),
codgruppo int NULL
);
CREATE TABLE dbo.province(
codprov int NOT NULL PRIMARY KEY,
descprov varchar(250) COLLATE Latin1_General_CI_AS NULL,
siglaprov varchar(2) COLLATE Latin1_General_CI_AS NULL,
codistat int NULL,
codregione int NULL
);
ALTER TABLE dbo.Archivio_mov
ADD CONSTRAINT FK_Archivio_mov_Provincie FOREIGN KEY(codcomune)
REFERENCES dbo.province(codprov);
/* Output:
Command(s) completed successfully.
*/
>Devo relazionare questi due campi in modo tale da poter effettuare
>delle select tra le due tabelle con il join.
Puoi tranquillamente eseguire JOIN SENZA constraint FK!
Un constraint FK serve solo per evitare di inserire nella tabella molti dei valori inconsistenti con quelli della tabella 1 e per evitare di elimare delle righe dalla tabella 1 che hanno righe "figlie" nella tabella molti.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org