DROP TABLE IF EXISTS address_types CASCADE;
CREATE TABLE address_types (
address_type_id SERIAL PRIMARY KEY,
address_type VARCHAR(20) NOT NULL
);
DROP TABLE IF EXISTS cities CASCADE;
CREATE TABLE cities (
city_id SERIAL PRIMARY KEY,
city_name VARCHAR(255) NOT NULL,
city_state VARCHAR(255) NOT NULL
);
DROP TABLE IF EXISTS addresses CASCADE;
CREATE TABLE addresses (
address_id SERIAL PRIMARY KEY,
address_type_id INTEGER REFERENCES address_types ( address_type_id ),
street VARCHAR(255) NOT NULL,
city_id INTEGER REFERENCES cities ( city_id )
);
DROP TABLE IF EXISTS districts CASCADE;
CREATE TABLE districts (
district_id SERIAL PRIMARY KEY,
district_code VARCHAR(255) NOT NULL
);
DROP TABLE IF EXISTS address_districts CASCADE;
CREATE TABLE address_districts (
address_id INTEGER REFERENCES addresses ( address_id ),
district_id INTEGER REFERENCES districts ( district_id )
);