mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-04-24 19:32:48 +00:00

This is reverting a workaround for a Hibernate "feature". There's no need for the child entities (Pet and Visit) to know about their parent (foreign key). Hibernate can manage that just fine with a @JoinColumn. But it needs a nullable foreign key column in the DB schema. That's the downside. The upside is much less code in Java.
55 lines
1.5 KiB
SQL
55 lines
1.5 KiB
SQL
CREATE TABLE IF NOT EXISTS vets (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
first_name VARCHAR(30),
|
|
last_name VARCHAR(30),
|
|
INDEX(last_name)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS specialties (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(80),
|
|
INDEX(name)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS vet_specialties (
|
|
vet_id INT(4) UNSIGNED NOT NULL,
|
|
specialty_id INT(4) UNSIGNED NOT NULL,
|
|
FOREIGN KEY (vet_id) REFERENCES vets(id),
|
|
FOREIGN KEY (specialty_id) REFERENCES specialties(id),
|
|
UNIQUE (vet_id,specialty_id)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS types (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(80),
|
|
INDEX(name)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS owners (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
first_name VARCHAR(30),
|
|
last_name VARCHAR(30),
|
|
address VARCHAR(255),
|
|
city VARCHAR(80),
|
|
telephone VARCHAR(20),
|
|
INDEX(last_name)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS pets (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(30),
|
|
birth_date DATE,
|
|
type_id INT(4) UNSIGNED NOT NULL,
|
|
owner_id INT(4) UNSIGNED,
|
|
INDEX(name),
|
|
FOREIGN KEY (owner_id) REFERENCES owners(id),
|
|
FOREIGN KEY (type_id) REFERENCES types(id)
|
|
) engine=InnoDB;
|
|
|
|
CREATE TABLE IF NOT EXISTS visits (
|
|
id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
pet_id INT(4) UNSIGNED,
|
|
visit_date DATE,
|
|
description VARCHAR(255),
|
|
FOREIGN KEY (pet_id) REFERENCES pets(id)
|
|
) engine=InnoDB;
|