>Salve,
>si esempio con primary key, foreign key, anche perchè in quanto
>in sql server certe volte durante la relazione tra due tabelle
>mi dà l'avviso che esse non hanno relazioni unique.
sì, perchè una primary key o una unique key devono esistere per stabilire la relazione..
Comunque eccoti un esempio di 1:1 e 1:N:
USE tempdb;
GO
-- creazione di una ipotetica tabella utenti.
-- In essa viene definita la PK su un codice progressivo IDUtente.
-- La chiave parte da 1 e incrementa, ad ogni inserimento, di 1.
-- Il campo IDProvincia è il legame verso la tabella province sotto definita.
CREATE TABLE dbo.Utenti
(
IDUtente int IDENTITY(1, 1) NOT NULL
, Nome varchar(30) NOT NULL
, Cognome varchar(30) NOT NULL
, IndirizzoResidenza varchar(30) NOT NULL
, IDProvincia int NOT NULL
, CONSTRAINT PK_dboUtenti PRIMARY KEY CLUSTERED
(
IDUtente
)
)
-- creazione tabella province
CREATE TABLE dbo.Province
(
IDProvincia int NOT NULL
, Nome varchar(30) NOT NULL
, CONSTRAINT PK_dboProvince PRIMARY KEY CLUSTERED
(
IDProvincia
)
)
-- creazione tabella UtentiEstesa
CREATE TABLE dbo.UtentiEstesa
(
IDUtente int NOT NULL
, Note varchar(MAX) NOT NULL
, CONSTRAINT PK_dboUtentiEstesa PRIMARY KEY CLUSTERED
(
IDUtente
)
)
-- relazione 1:N (1 Provincia, N Utenti)
ALTER TABLE dbo.Utenti
ADD CONSTRAINT FK_dboUtenti_dboProvince
FOREIGN KEY (IDProvincia)
REFERENCES dbo.Province(IDProvincia)
GO
-- relazione 1:1 (1 Utente, 1 UtentiEstesa)
ALTER TABLE dbo.UtentiEstesa
ADD CONSTRAINT FK_dboUtentiEstesa_dboUtenti
FOREIGN KEY (IDUtente)
REFERENCES dbo.Utenti(IDUtente)
GO
-- pulizia
DROP TABLE dbo.UtentiEstesa
DROP TABLE dbo.Utenti
DROP TABLE dbo.Province
GO
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi