mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-05-17 01:19:38 +00:00
57 lines
1.4 KiB
MySQL
57 lines
1.4 KiB
MySQL
![]() |
-- 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);
|