-- Wipe everything before creating the tables to make the script idempotent. DROP SCHEMA public cascade; CREATE SCHEMA public; CREATE TABLE vets ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, first_name TEXT, last_name TEXT ); CREATE INDEX ON vets (last_name); CREATE TABLE specialties ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name TEXT ); CREATE INDEX ON specialties (name); CREATE TABLE 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 types ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, name TEXT ); CREATE INDEX ON types (name); CREATE TABLE owners ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, first_name TEXT, last_name TEXT, address TEXT, city TEXT, telephone TEXT ); CREATE INDEX ON owners (last_name); CREATE TABLE 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 NOT NULL REFERENCES owners (id) ); CREATE INDEX ON pets (name); CREATE INDEX ON pets (owner_id); CREATE TABLE visits ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, pet_id INT NOT NULL REFERENCES pets (id), visit_date DATE, description TEXT ); CREATE INDEX ON visits (pet_id);