MS SQL Studio błąd podczas kompilacji

0

Witam, mam poniższy kod:

CREATE TABLE pacjenci ( 
idPacjenta int NOT NULL PRIMARY KEY IDENTITY(1,1), 
imie VARCHAR(30) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
pesel VARCHAR(11) NOT NULL, 
adres VARCHAR(255) NOT NULL 
); 

CREATE TABLE lekarze ( 
idLekarza int NOT NULL PRIMARY KEY IDENTITY(1,1),
imie VARCHAR(30) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
specjalizacja VARCHAR(50),
nr_pokoju int
); 

CREATE TABLE godziny_przyjec (
idLekarza int, 
poniedzialek VARCHAR(20),
wtorek VARCHAR(20),
sroda VARCHAR(20),
czwartek VARCHAR(20),
piatek VARCHAR(20),
sobota VARCHAR(20),
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) 
); 


CREATE TABLE limity_przyjec (
idLekarza INT, 
limit_przyjec INT,
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) 
); 

CREATE TABLE zar_wizyty ( 
idWizyty INT PRIMARY KEY IDENTITY(1,1) NOT NULL, 
data_wizyty DATETIME,
idLekarza INT, 
idPacjenta INT, 
nr_pokoju INT, 
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) ,
CONSTRAINT idPacjenta FOREIGN KEY (idLekarza) REFERENCES pacjenci (idPacjenta) ,
CONSTRAINT nr_pokoju FOREIGN KEY (nr_pokoju) REFERENCES lekarze (nr_pokoju) 
);

CREATE TABLE zak_wizyty ( 
idWizyty INT PRIMARY KEY IDENTITY(1,1) NOT NULL, 
idLekarza INT, 
idPacjenta INT, 
nr_pokoju INT, 
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) ,
CONSTRAINT idPacjenta FOREIGN KEY (idLekarza) REFERENCES pacjenci (idPacjenta) ,
CONSTRAINT nr_pokoju FOREIGN KEY (nr_pokoju) REFERENCES lekarze (nr_pokoju) 
); 

Po wykonaniu go w MS SQL Studio wyskakuje mi błąd "There is already an object named 'pacjenci' in the database." i nie mam pojęcia dlaczego, nigdzie nic nie ma takiej samej nazwy. Poza tym np. w tabeli 'zak_wizyty' podkreśla mi przy definiowaniu klucza obcego słowo lekarze, a po najechaniu na to wyskakuje: "There are no primary or candidate keys in the referenced table 'lekarze' that match the referencing columns list in the foreign key 'nr pokoju' " . Mógłby ktoś powiedzieć gdzie jest błąd? Z góry dziękuję.

0

Odśwież sobie listę tabel na drzewku baz danych zapewne jest tam już dodana tabela o takiej nazwie.

0

W skrypcie masz błędy

  • nazwy CONSTRAINT muszą być unikatowe w ramach bazy a np idPacjenta powiela się kilka razy.
  • w tabeli zak_wizyty/zar_wizyty przy tworzeniu CONSTRAINT idPacjenta odwołujesz się do pola idLEkarza które nie istnieje w tabeli pacjenci.

Co do błędu to wynika on z tego, że klucz obcy musi sie odwoływać do kolumny która jest unikatowa, (PK, CONSTRAINT UNIQUE)

Więc zmień definicje lekarza na:

CREATE TABLE lekarze ( 
idLekarza INT NOT NULL PRIMARY KEY IDENTITY(1,1),
imie VARCHAR(30) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
specjalizacja VARCHAR(50),
nr_pokoju INT NOT NULL
CONSTRAINT l_nr_pokoju UNIQUE(nr_pokoju)
); 

I będzie ok z punktu widzenia technicznego, bo z punktu sensowności już nie, w końcu jeden pokoj może być dostępny dla kilku lekarzy...

1 użytkowników online, w tym zalogowanych: 0, gości: 1