Witam, dostałem ostatnio zadanie dotyczące zaprojektowania prostej do potęgi bazy która pozwoli obsłużyć system rejestracji pacjentów w przychodni, jednak zapomniałem jak to się w tym SQL robi, z pomocą poradników wymyśliłem takie coś, co widać poniżej. Teraz pytanie, czy klucze obce są dobrze zdefiniowane? Czy jeśli w tabeli definiuję klucz obcy to muszę za nim pisać typ danych, skoro jest on w innej tabeli już zdefiniowany? I co sądzicie o godzinach przyjęć, warto zrobić osobną tabelę w której podam idLekarza oraz godziny przyjęć, czy lepiej zostawić tak jak mam? Z góry dziękuję za pomoc.
CREATE TABLE pacjenci (
idPacjenta int NOT NULL AUTO_INCREMENT PRIMARY KEY,
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 AUTO_INCREMENT PRIMARY KEY,
imie VARCHAR(30) NOT NULL,
nazwisko VARCHAR(30) NOT NULL,
specjalizacja VARCHAR(50),
poniedzialek VARCHAR(20),
wtorek VARCHAR(20),
sroda VARCHAR(20),
czwartek VARCHAR(20),
piatek VARCHAR(20),
sobota VARCHAR(20)
);
CREATE TABLE pokoje_przyjec (
idPokoju int NOT NULL AUTO_INCREMENT PRIMARY KEY,
);
CREATE TABLE limity_przyjec (
idLekarza INT,
limit_przyjec INT,
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza)
);
CREATE TABLE zar_wizyty (
idWizyty INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
data_wizyty DATETIME,
idLekarza INT,
idPacjenta INT,
idPokoju INT,
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) ,
CONSTRAINT idPacjenta FOREIGN KEY (idLekarza) REFERENCES pacjenci (idPacjenta) ,
CONSTRAINT idPokoju FOREIGN KEY (idPokoju) REFERENCES pokoje_przyjec (idPokoju)
);
CREATE TABLE zak_wizyty (
idWizyty INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
idLekarza INT,
idPacjenta INT,
idPokoju INT,
CONSTRAINT idLekarza FOREIGN KEY (idLekarza) REFERENCES lekarze (idLekarza) ,
CONSTRAINT idPacjenta FOREIGN KEY (idLekarza) REFERENCES pacjenci (idPacjenta) ,
CONSTRAINT idPokoju FOREIGN KEY (idPokoju) REFERENCES pokoje_przyjec (idPokoju)
);