Tabelele ar putea fi structurate astfel:
CREATE TABLE Clienti (
CodClient int IDENTITY PRIMARY KEY,
NumeClient varchar(50) NOT NULL UNIQUE
)
CREATE TABLE SediiClienti (
CodSediu int IDENTITY PRIMARY KEY,
CodClient int NOT NULL REFERENCES Clienti,
Localitate varchar(30) NOT NULL, -- eventual poate exista o tabelă cu localităţi, una cu ţări, etc
Adresa varchar(100) NULL,
UNIQUE (CodClient, Localitate, Adresa)
)
CREATE TABLE Telefoane (
CodSediu int NOT NULL REFERENCES SediiClienti,
Telefon varchar(20) NOT NULL,
Observatii varchar(50) NULL, -- se poate mentiona daca e mobil/fix/fax, cine raspunde, intre ce ore, etc
PRIMARY KEY (CodSediu, Telefon)
)
CREATE TABLE PersoaneDeContact (
CodSediu int NOT NULL REFERENCES SediiClienti,
NumeSiPrenume varchar(30) NOT NULL, -- eventual pot fi doua coloane (Nume şi Prenume), dacă e necesar la ceva
Functie varchar(50) NULL,
PRIMARY KEY (CodSediu, NumeSiPrenume)
)
Pentru a obţine lista sediilor care au mai multe numere de telefon putem folosi:
SELECT * FROM SediiClienti WHERE CodSediu IN (
SELECT CodSediu FROM Telefoane GROUP BY CodSediu HAVING COUNT(*)>1
)
Răzvan