Files
pclinic-andrej-demo1/src/main/resources/db/postgres/schema.sql
Scaffolder 35c67a8a52 initial commit
Change-Id: I80adb770c7d485cdc89c6871a5436866722fb7dd
2026-08-10 08:25:31 +00:00

54 lines
1.7 KiB
SQL

CREATE TABLE IF NOT EXISTS vets (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
first_name TEXT,
last_name TEXT
);
CREATE INDEX IF NOT EXISTS idx_vets_last_name ON vets (last_name);
CREATE TABLE IF NOT EXISTS specialties (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name TEXT
);
CREATE INDEX IF NOT EXISTS idx_specialties_name ON specialties (name);
CREATE TABLE IF NOT EXISTS vet_specialties (
vet_id INT NOT NULL REFERENCES vets (id),
specialty_id INT NOT NULL REFERENCES specialties (id),
UNIQUE (vet_id, specialty_id)
);
CREATE TABLE IF NOT EXISTS types (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name TEXT
);
CREATE INDEX IF NOT EXISTS idx_types_name ON types (name);
CREATE TABLE IF NOT EXISTS owners (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
first_name TEXT,
last_name TEXT,
address TEXT,
city TEXT,
telephone TEXT
);
CREATE INDEX IF NOT EXISTS idx_owners_last_name ON owners (last_name);
CREATE TABLE IF NOT EXISTS pets (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name TEXT,
birth_date DATE,
type_id INT NOT NULL REFERENCES types (id),
owner_id INT REFERENCES owners (id)
);
CREATE INDEX IF NOT EXISTS idx_pets_name ON pets (name);
CREATE INDEX IF NOT EXISTS idx_pets_owner_id ON pets (owner_id);
CREATE UNIQUE INDEX IF NOT EXISTS unique_owner_pet_name ON pets (owner_id, LOWER(name));
CREATE TABLE IF NOT EXISTS visits (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
pet_id INT REFERENCES pets (id),
visit_date DATE,
description TEXT
);
CREATE INDEX IF NOT EXISTS idx_visits_pet_id ON visits (pet_id);