941 lines
25 KiB
PL/PgSQL
941 lines
25 KiB
PL/PgSQL
-- Downloaded from: https://github.com/WhoIsKatie/e-Hotels/blob/83bbd189f6f8ee312e8fca8830e33ae67b18558b/server/database.sql
|
|
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 15.2
|
|
-- Dumped by pg_dump version 15.2
|
|
|
|
-- Started on 2023-03-31 21:08:48
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
--
|
|
-- TOC entry 3475 (class 1262 OID 16899)
|
|
-- Name: e-Hotels; Type: DATABASE; Schema: -; Owner: postgres
|
|
--
|
|
|
|
CREATE DATABASE "e-Hotels" WITH TEMPLATE = template0 ENCODING = 'UTF8' LOCALE_PROVIDER = libc LOCALE = 'English_United States.1252';
|
|
|
|
|
|
ALTER DATABASE "e-Hotels" OWNER TO postgres;
|
|
|
|
\connect -reuse-previous=on "dbname='e-Hotels'"
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
--
|
|
-- TOC entry 238 (class 1255 OID 17123)
|
|
-- Name: employee_is_manager(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.employee_is_manager() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$BEGIN
|
|
IF NOT EXISTS (select * FROM inst_role WHERE (role_sin = NEW.manager_id
|
|
AND role_name = 'manager'))
|
|
THEN ROLLBACK;
|
|
END IF;
|
|
RETURN NULL;
|
|
END;$$;
|
|
|
|
|
|
ALTER FUNCTION public.employee_is_manager() OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 239 (class 1255 OID 17350)
|
|
-- Name: employee_not_customer_or_same_hotel(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.employee_not_customer_or_same_hotel() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$BEGIN
|
|
IF EXISTS (SELECT * FROM booking WHERE (booking_id = NEW.booking_id
|
|
AND customer_sin = NEW.employee_sin))
|
|
THEN ROLLBACK;
|
|
ELSE
|
|
IF NOT EXISTS (SELECT * FROM booking AS b, employee AS e
|
|
WHERE (b.booking_id = NEW.booking_id
|
|
AND b.hotel_id = e.hotel_id))
|
|
THEN ROLLBACK;
|
|
END IF;
|
|
END IF;
|
|
RETURN NULL;
|
|
END;$$;
|
|
|
|
|
|
ALTER FUNCTION public.employee_not_customer_or_same_hotel() OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 221 (class 1259 OID 16925)
|
|
-- Name: chain_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.chain_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.chain_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 235 (class 1259 OID 17127)
|
|
-- Name: hotel_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.hotel_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.hotel_id_seq OWNER TO postgres;
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_table_access_method = heap;
|
|
|
|
--
|
|
-- TOC entry 219 (class 1259 OID 16918)
|
|
-- Name: hotel; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.hotel (
|
|
hotel_id integer DEFAULT nextval('public.hotel_id_seq'::regclass) NOT NULL,
|
|
chain_id integer NOT NULL,
|
|
street_num integer NOT NULL,
|
|
street_name character varying(100) NOT NULL,
|
|
unit_num integer,
|
|
city character varying(100) NOT NULL,
|
|
state character varying(2) NOT NULL,
|
|
country character varying(30) NOT NULL,
|
|
postal_code character varying(10) NOT NULL,
|
|
rating integer NOT NULL,
|
|
manager_id numeric(9,0) NOT NULL,
|
|
email character varying(100) NOT NULL,
|
|
CONSTRAINT hotel_rating_check CHECK (((rating >= 1) AND (rating <= 5)))
|
|
);
|
|
|
|
|
|
ALTER TABLE public.hotel OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 220 (class 1259 OID 16922)
|
|
-- Name: hotel_chain; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.hotel_chain (
|
|
chain_id integer DEFAULT nextval('public.chain_id_seq'::regclass) NOT NULL,
|
|
name character varying(50) NOT NULL,
|
|
street_num integer NOT NULL,
|
|
street_name character varying(100) NOT NULL,
|
|
unit_num integer,
|
|
city character varying(20) NOT NULL,
|
|
state character(2),
|
|
country character varying(30),
|
|
postal_code character varying(10)
|
|
);
|
|
|
|
|
|
ALTER TABLE public.hotel_chain OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 233 (class 1259 OID 16959)
|
|
-- Name: room; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.room (
|
|
room_number integer NOT NULL,
|
|
price money,
|
|
capacity integer,
|
|
max_capacity integer,
|
|
hotel_id integer NOT NULL,
|
|
CONSTRAINT room_check CHECK (((capacity >= 1) AND (max_capacity >= capacity))),
|
|
CONSTRAINT room_number_check CHECK ((room_number >= 0))
|
|
);
|
|
|
|
|
|
ALTER TABLE public.room OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 237 (class 1259 OID 17371)
|
|
-- Name: available_rooms; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.available_rooms AS
|
|
SELECT room.room_number,
|
|
room.price,
|
|
room.capacity,
|
|
room.max_capacity,
|
|
hotel.hotel_id,
|
|
hotel.city,
|
|
hotel.state,
|
|
hotel.country,
|
|
hotel.rating,
|
|
hotel_chain.name AS chain_name
|
|
FROM ((public.room
|
|
JOIN public.hotel ON ((room.hotel_id = hotel.hotel_id)))
|
|
JOIN public.hotel_chain ON ((hotel.chain_id = hotel_chain.chain_id)));
|
|
|
|
|
|
ALTER TABLE public.available_rooms OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 214 (class 1259 OID 16900)
|
|
-- Name: booking; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.booking (
|
|
booking_id bigint NOT NULL,
|
|
checkin_date date NOT NULL,
|
|
checkout_date date NOT NULL,
|
|
hotel_id integer NOT NULL,
|
|
customer_sin numeric(9,0) NOT NULL,
|
|
room_number integer NOT NULL,
|
|
CONSTRAINT valid_dates CHECK ((checkout_date > checkin_date))
|
|
);
|
|
|
|
|
|
ALTER TABLE public.booking OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 215 (class 1259 OID 16903)
|
|
-- Name: booking_booking_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.booking_booking_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.booking_booking_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 3476 (class 0 OID 0)
|
|
-- Dependencies: 215
|
|
-- Name: booking_booking_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER SEQUENCE public.booking_booking_id_seq OWNED BY public.booking.booking_id;
|
|
|
|
|
|
--
|
|
-- TOC entry 217 (class 1259 OID 16910)
|
|
-- Name: chain_inst_phone_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.chain_inst_phone_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.chain_inst_phone_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 230 (class 1259 OID 16952)
|
|
-- Name: customer; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.customer (
|
|
customer_sin numeric(9,0) NOT NULL,
|
|
registration_date date NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.customer OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 218 (class 1259 OID 16914)
|
|
-- Name: employee; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.employee (
|
|
sin numeric(9,0) NOT NULL,
|
|
hotel_id integer NOT NULL,
|
|
salary money NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.employee OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 236 (class 1259 OID 17366)
|
|
-- Name: hotel_capacity; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.hotel_capacity AS
|
|
SELECT room.capacity,
|
|
room.max_capacity,
|
|
hotel.hotel_id
|
|
FROM (public.room
|
|
JOIN public.hotel ON ((room.hotel_id = hotel.hotel_id)));
|
|
|
|
|
|
ALTER TABLE public.hotel_capacity OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 223 (class 1259 OID 16929)
|
|
-- Name: inst_amenity; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_amenity (
|
|
amenity_id integer NOT NULL,
|
|
amenity character varying(100) NOT NULL,
|
|
hotel_id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_amenity OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 216 (class 1259 OID 16907)
|
|
-- Name: inst_chain_phone; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_chain_phone (
|
|
chain_phone_id integer DEFAULT nextval('public.chain_inst_phone_id_seq'::regclass) NOT NULL,
|
|
phone_number numeric(10,0) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_chain_phone OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 224 (class 1259 OID 16932)
|
|
-- Name: inst_concern; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_concern (
|
|
concern_id integer NOT NULL,
|
|
concern character varying(200) NOT NULL,
|
|
hotel_id integer NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_concern OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 226 (class 1259 OID 16938)
|
|
-- Name: inst_email_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.inst_email_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.inst_email_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 225 (class 1259 OID 16935)
|
|
-- Name: inst_email; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_email (
|
|
email_id integer DEFAULT nextval('public.inst_email_id_seq'::regclass) NOT NULL,
|
|
email character varying(100) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_email OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 222 (class 1259 OID 16926)
|
|
-- Name: inst_hotel_phone; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_hotel_phone (
|
|
phone_id integer NOT NULL,
|
|
phone_number numeric(10,0) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_hotel_phone OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 227 (class 1259 OID 16939)
|
|
-- Name: inst_role; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.inst_role (
|
|
role_sin numeric(9,0) NOT NULL,
|
|
role_name character varying(80) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.inst_role OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 228 (class 1259 OID 16942)
|
|
-- Name: manages; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.manages (
|
|
booking_id bigint NOT NULL,
|
|
employee_sin numeric(9,0) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.manages OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 229 (class 1259 OID 16945)
|
|
-- Name: person; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.person (
|
|
sin numeric(9,0) NOT NULL,
|
|
first_name character varying,
|
|
last_name character varying,
|
|
middle_name character varying,
|
|
street_num integer,
|
|
street_name character varying,
|
|
unit_num integer,
|
|
city character varying,
|
|
state character varying(2),
|
|
country character varying(20),
|
|
postal_code character varying(10),
|
|
CONSTRAINT person_street_num_check CHECK ((street_num > 0))
|
|
);
|
|
|
|
|
|
ALTER TABLE public.person OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 231 (class 1259 OID 16955)
|
|
-- Name: renting; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.renting (
|
|
booking_id bigint NOT NULL,
|
|
cc_number numeric(16,0) NOT NULL,
|
|
expiry_date date NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.renting OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 232 (class 1259 OID 16958)
|
|
-- Name: renting_booking_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE SEQUENCE public.renting_booking_id_seq
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
ALTER TABLE public.renting_booking_id_seq OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 3477 (class 0 OID 0)
|
|
-- Dependencies: 232
|
|
-- Name: renting_booking_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER SEQUENCE public.renting_booking_id_seq OWNED BY public.renting.booking_id;
|
|
|
|
|
|
--
|
|
-- TOC entry 234 (class 1259 OID 16964)
|
|
-- Name: supervises; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.supervises (
|
|
subordinate_sin numeric(9,0) NOT NULL,
|
|
supervisor_sin numeric(9,0) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.supervises OWNER TO postgres;
|
|
|
|
--
|
|
-- TOC entry 3248 (class 2604 OID 16967)
|
|
-- Name: booking booking_id; Type: DEFAULT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.booking ALTER COLUMN booking_id SET DEFAULT nextval('public.booking_booking_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 3253 (class 2604 OID 16971)
|
|
-- Name: renting booking_id; Type: DEFAULT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.renting ALTER COLUMN booking_id SET DEFAULT nextval('public.renting_booking_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- TOC entry 3263 (class 2606 OID 16973)
|
|
-- Name: booking booking_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.booking
|
|
ADD CONSTRAINT booking_pkey PRIMARY KEY (booking_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3266 (class 2606 OID 16977)
|
|
-- Name: inst_chain_phone chain_inst_phone_number_key; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_chain_phone
|
|
ADD CONSTRAINT chain_inst_phone_number_key UNIQUE (phone_number);
|
|
|
|
|
|
--
|
|
-- TOC entry 3268 (class 2606 OID 16979)
|
|
-- Name: inst_chain_phone chain_inst_phone_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_chain_phone
|
|
ADD CONSTRAINT chain_inst_phone_pkey PRIMARY KEY (chain_phone_id, phone_number);
|
|
|
|
|
|
--
|
|
-- TOC entry 3298 (class 2606 OID 17356)
|
|
-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.customer
|
|
ADD CONSTRAINT customer_pkey PRIMARY KEY (customer_sin);
|
|
|
|
|
|
--
|
|
-- TOC entry 3270 (class 2606 OID 16983)
|
|
-- Name: employee employee_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.employee
|
|
ADD CONSTRAINT employee_pkey PRIMARY KEY (sin);
|
|
|
|
|
|
--
|
|
-- TOC entry 3280 (class 2606 OID 16985)
|
|
-- Name: hotel_chain hotel_chain_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.hotel_chain
|
|
ADD CONSTRAINT hotel_chain_pkey PRIMARY KEY (chain_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3282 (class 2606 OID 16987)
|
|
-- Name: inst_hotel_phone hotel_inst_phone_number_key; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_hotel_phone
|
|
ADD CONSTRAINT hotel_inst_phone_number_key UNIQUE (phone_number);
|
|
|
|
|
|
--
|
|
-- TOC entry 3275 (class 2606 OID 17121)
|
|
-- Name: hotel hotel_manager_unique; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.hotel
|
|
ADD CONSTRAINT hotel_manager_unique UNIQUE (manager_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3277 (class 2606 OID 17201)
|
|
-- Name: hotel hotel_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.hotel
|
|
ADD CONSTRAINT hotel_pkey PRIMARY KEY (hotel_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3284 (class 2606 OID 16991)
|
|
-- Name: inst_amenity inst_amenity_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_amenity
|
|
ADD CONSTRAINT inst_amenity_pkey PRIMARY KEY (amenity_id, amenity);
|
|
|
|
|
|
--
|
|
-- TOC entry 3286 (class 2606 OID 17132)
|
|
-- Name: inst_concern inst_concern_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_concern
|
|
ADD CONSTRAINT inst_concern_pkey PRIMARY KEY (concern_id, concern);
|
|
|
|
|
|
--
|
|
-- TOC entry 3288 (class 2606 OID 16995)
|
|
-- Name: inst_email inst_email_key; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_email
|
|
ADD CONSTRAINT inst_email_key UNIQUE (email);
|
|
|
|
|
|
--
|
|
-- TOC entry 3290 (class 2606 OID 16997)
|
|
-- Name: inst_email inst_email_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_email
|
|
ADD CONSTRAINT inst_email_pkey PRIMARY KEY (email_id, email);
|
|
|
|
|
|
--
|
|
-- TOC entry 3292 (class 2606 OID 17130)
|
|
-- Name: inst_role inst_role_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_role
|
|
ADD CONSTRAINT inst_role_pkey PRIMARY KEY (role_sin, role_name);
|
|
|
|
|
|
--
|
|
-- TOC entry 3294 (class 2606 OID 17307)
|
|
-- Name: manages manages_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.manages
|
|
ADD CONSTRAINT manages_pkey PRIMARY KEY (booking_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3296 (class 2606 OID 17003)
|
|
-- Name: person person_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.person
|
|
ADD CONSTRAINT person_pkey PRIMARY KEY (sin);
|
|
|
|
|
|
--
|
|
-- TOC entry 3300 (class 2606 OID 17309)
|
|
-- Name: renting renting_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.renting
|
|
ADD CONSTRAINT renting_pkey PRIMARY KEY (booking_id, cc_number, expiry_date);
|
|
|
|
|
|
--
|
|
-- TOC entry 3303 (class 2606 OID 17242)
|
|
-- Name: room room_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.room
|
|
ADD CONSTRAINT room_pkey PRIMARY KEY (room_number, hotel_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3259 (class 1259 OID 17346)
|
|
-- Name: booking_checkin_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX booking_checkin_index ON public.booking USING btree (checkin_date);
|
|
|
|
|
|
--
|
|
-- TOC entry 3260 (class 1259 OID 17347)
|
|
-- Name: booking_checkout_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX booking_checkout_index ON public.booking USING btree (checkout_date);
|
|
|
|
|
|
--
|
|
-- TOC entry 3261 (class 1259 OID 17345)
|
|
-- Name: booking_customer_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX booking_customer_index ON public.booking USING btree (customer_sin);
|
|
|
|
|
|
--
|
|
-- TOC entry 3264 (class 1259 OID 17348)
|
|
-- Name: booking_room_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX booking_room_index ON public.booking USING btree (room_number);
|
|
|
|
|
|
--
|
|
-- TOC entry 3271 (class 1259 OID 17294)
|
|
-- Name: hotel_chain_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX hotel_chain_index ON public.hotel USING btree (chain_id);
|
|
|
|
|
|
--
|
|
-- TOC entry 3272 (class 1259 OID 17295)
|
|
-- Name: hotel_city_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX hotel_city_index ON public.hotel USING btree (city);
|
|
|
|
|
|
--
|
|
-- TOC entry 3273 (class 1259 OID 17296)
|
|
-- Name: hotel_country_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX hotel_country_index ON public.hotel USING btree (country);
|
|
|
|
|
|
--
|
|
-- TOC entry 3278 (class 1259 OID 17297)
|
|
-- Name: hotel_rating_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX hotel_rating_index ON public.hotel USING btree (rating);
|
|
|
|
|
|
--
|
|
-- TOC entry 3301 (class 1259 OID 17293)
|
|
-- Name: room_capacity_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX room_capacity_index ON public.room USING btree (max_capacity);
|
|
|
|
|
|
--
|
|
-- TOC entry 3304 (class 1259 OID 17298)
|
|
-- Name: room_price_index; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX room_price_index ON public.room USING btree (price);
|
|
|
|
|
|
--
|
|
-- TOC entry 3324 (class 2620 OID 17134)
|
|
-- Name: hotel hotel_manager_constraint_trigger; Type: TRIGGER; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE CONSTRAINT TRIGGER hotel_manager_constraint_trigger AFTER INSERT OR UPDATE ON public.hotel DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION public.employee_is_manager();
|
|
|
|
|
|
--
|
|
-- TOC entry 3325 (class 2620 OID 17353)
|
|
-- Name: manages managing_employee_constraint_trigger; Type: TRIGGER; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE CONSTRAINT TRIGGER managing_employee_constraint_trigger AFTER INSERT OR UPDATE ON public.manages NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE FUNCTION public.employee_not_customer_or_same_hotel();
|
|
|
|
|
|
--
|
|
-- TOC entry 3305 (class 2606 OID 17357)
|
|
-- Name: booking booking_customer_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.booking
|
|
ADD CONSTRAINT booking_customer_sin_fkey FOREIGN KEY (customer_sin) REFERENCES public.customer(customer_sin);
|
|
|
|
|
|
--
|
|
-- TOC entry 3306 (class 2606 OID 17325)
|
|
-- Name: booking booking_hotel_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.booking
|
|
ADD CONSTRAINT booking_hotel_id_fkey FOREIGN KEY (hotel_id) REFERENCES public.hotel(hotel_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3307 (class 2606 OID 17340)
|
|
-- Name: booking booking_hotel_id_room_number_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.booking
|
|
ADD CONSTRAINT booking_hotel_id_room_number_fkey FOREIGN KEY (hotel_id, room_number) REFERENCES public.room(hotel_id, room_number) ON UPDATE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3308 (class 2606 OID 17030)
|
|
-- Name: inst_chain_phone chain_inst_phone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_chain_phone
|
|
ADD CONSTRAINT chain_inst_phone_id_fkey FOREIGN KEY (chain_phone_id) REFERENCES public.hotel_chain(chain_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3319 (class 2606 OID 17310)
|
|
-- Name: customer customer_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.customer
|
|
ADD CONSTRAINT customer_sin_fkey FOREIGN KEY (customer_sin) REFERENCES public.person(sin) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3309 (class 2606 OID 17258)
|
|
-- Name: employee employee_hotel_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.employee
|
|
ADD CONSTRAINT employee_hotel_id_fkey FOREIGN KEY (hotel_id) REFERENCES public.hotel(hotel_id) DEFERRABLE INITIALLY DEFERRED;
|
|
|
|
|
|
--
|
|
-- TOC entry 3310 (class 2606 OID 17045)
|
|
-- Name: employee employee_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.employee
|
|
ADD CONSTRAINT employee_sin_fkey FOREIGN KEY (sin) REFERENCES public.person(sin) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3311 (class 2606 OID 17050)
|
|
-- Name: hotel hotel_chain_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.hotel
|
|
ADD CONSTRAINT hotel_chain_id_fkey FOREIGN KEY (chain_id) REFERENCES public.hotel_chain(chain_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3313 (class 2606 OID 17273)
|
|
-- Name: inst_hotel_phone hotel_inst_phone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_hotel_phone
|
|
ADD CONSTRAINT hotel_inst_phone_id_fkey FOREIGN KEY (phone_id) REFERENCES public.hotel(hotel_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3314 (class 2606 OID 17263)
|
|
-- Name: inst_amenity inst_amenity_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_amenity
|
|
ADD CONSTRAINT inst_amenity_id_fkey FOREIGN KEY (amenity_id, hotel_id) REFERENCES public.room(room_number, hotel_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3315 (class 2606 OID 17268)
|
|
-- Name: inst_concern inst_concern_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_concern
|
|
ADD CONSTRAINT inst_concern_id_fkey FOREIGN KEY (concern_id, hotel_id) REFERENCES public.room(room_number, hotel_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3316 (class 2606 OID 17070)
|
|
-- Name: inst_email inst_email_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_email
|
|
ADD CONSTRAINT inst_email_id_fkey FOREIGN KEY (email_id) REFERENCES public.hotel_chain(chain_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3317 (class 2606 OID 17075)
|
|
-- Name: inst_role inst_role_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.inst_role
|
|
ADD CONSTRAINT inst_role_sin_fkey FOREIGN KEY (role_sin) REFERENCES public.employee(sin) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3312 (class 2606 OID 17080)
|
|
-- Name: hotel manager_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.hotel
|
|
ADD CONSTRAINT manager_id_fkey FOREIGN KEY (manager_id) REFERENCES public.employee(sin) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
|
|
|
|
|
|
--
|
|
-- TOC entry 3318 (class 2606 OID 17090)
|
|
-- Name: manages manages_employee_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.manages
|
|
ADD CONSTRAINT manages_employee_sin_fkey FOREIGN KEY (employee_sin) REFERENCES public.employee(sin) ON UPDATE CASCADE ON DELETE RESTRICT;
|
|
|
|
|
|
--
|
|
-- TOC entry 3320 (class 2606 OID 17105)
|
|
-- Name: renting renting_booking_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.renting
|
|
ADD CONSTRAINT renting_booking_id_fkey FOREIGN KEY (booking_id) REFERENCES public.booking(booking_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3321 (class 2606 OID 17288)
|
|
-- Name: room room_hotel_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.room
|
|
ADD CONSTRAINT room_hotel_id_fkey FOREIGN KEY (hotel_id) REFERENCES public.hotel(hotel_id) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3322 (class 2606 OID 17110)
|
|
-- Name: supervises supervises_subordinate_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.supervises
|
|
ADD CONSTRAINT supervises_subordinate_sin_fkey FOREIGN KEY (subordinate_sin) REFERENCES public.employee(sin) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- TOC entry 3323 (class 2606 OID 17115)
|
|
-- Name: supervises supervises_supervisor_sin_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.supervises
|
|
ADD CONSTRAINT supervises_supervisor_sin_fkey FOREIGN KEY (supervisor_sin) REFERENCES public.employee(sin) ON UPDATE CASCADE ON DELETE CASCADE;
|
|
|
|
|
|
-- Completed on 2023-03-31 21:08:49
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|