create_tables.sql 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. -- Table: kotov_aa.cargo
  2. -- DROP TABLE IF EXISTS kotov_aa.cargo;
  3. CREATE TABLE IF NOT EXISTS kotov_aa.cargo
  4. (
  5. cargoid integer NOT NULL DEFAULT nextval('cargo_cargoid_seq'::regclass),
  6. name character varying(100) COLLATE pg_catalog."default" NOT NULL,
  7. weight numeric(10,2) NOT NULL,
  8. CONSTRAINT cargo_pkey PRIMARY KEY (cargoid),
  9. CONSTRAINT cargo_weight_check CHECK (weight > 0::numeric)
  10. )
  11. TABLESPACE pg_default;
  12. ALTER TABLE IF EXISTS kotov_aa.cargo
  13. OWNER to kotov_aa;
  14. -- Table: kotov_aa.cities
  15. -- DROP TABLE IF EXISTS kotov_aa.cities;
  16. CREATE TABLE IF NOT EXISTS kotov_aa.cities
  17. (
  18. cityid integer NOT NULL DEFAULT nextval('cities_cityid_seq'::regclass),
  19. name character varying(100) COLLATE pg_catalog."default" NOT NULL,
  20. region character varying(50) COLLATE pg_catalog."default",
  21. CONSTRAINT cities_pkey PRIMARY KEY (cityid)
  22. )
  23. TABLESPACE pg_default;
  24. ALTER TABLE IF EXISTS kotov_aa.cities
  25. OWNER to kotov_aa;
  26. -- Table: kotov_aa.customers
  27. -- DROP TABLE IF EXISTS kotov_aa.customers;
  28. CREATE TABLE IF NOT EXISTS kotov_aa.customers
  29. (
  30. customerid integer NOT NULL DEFAULT nextval('customers_customerid_seq'::regclass),
  31. companyname character varying(100) COLLATE pg_catalog."default" NOT NULL,
  32. phone character varying(20) COLLATE pg_catalog."default",
  33. address text COLLATE pg_catalog."default",
  34. CONSTRAINT customers_pkey PRIMARY KEY (customerid)
  35. )
  36. TABLESPACE pg_default;
  37. ALTER TABLE IF EXISTS kotov_aa.customers
  38. OWNER to kotov_aa;
  39. -- Table: kotov_aa.drivers
  40. -- DROP TABLE IF EXISTS kotov_aa.drivers;
  41. CREATE TABLE IF NOT EXISTS kotov_aa.drivers
  42. (
  43. driverid integer NOT NULL DEFAULT nextval('drivers_driverid_seq'::regclass),
  44. lastname character varying(50) COLLATE pg_catalog."default" NOT NULL,
  45. fullname character varying(100) COLLATE pg_catalog."default" NOT NULL,
  46. tabnumber character varying(20) COLLATE pg_catalog."default" NOT NULL,
  47. CONSTRAINT drivers_pkey PRIMARY KEY (driverid),
  48. CONSTRAINT drivers_tabnumber_key UNIQUE (tabnumber)
  49. )
  50. TABLESPACE pg_default;
  51. ALTER TABLE IF EXISTS kotov_aa.drivers
  52. OWNER to kotov_aa;
  53. -- Table: kotov_aa.orders
  54. -- DROP TABLE IF EXISTS kotov_aa.orders;
  55. CREATE TABLE IF NOT EXISTS kotov_aa.orders
  56. (
  57. orderid integer NOT NULL DEFAULT nextval('orders_orderid_seq'::regclass),
  58. customerid integer NOT NULL,
  59. vehicleid integer NOT NULL,
  60. cargoid integer NOT NULL,
  61. routeid integer NOT NULL,
  62. orderdate date NOT NULL,
  63. plandate date NOT NULL,
  64. factdate date,
  65. status character varying(30) COLLATE pg_catalog."default" DEFAULT 'В пути'::character varying,
  66. CONSTRAINT orders_pkey PRIMARY KEY (orderid),
  67. CONSTRAINT orders_cargoid_fkey FOREIGN KEY (cargoid)
  68. REFERENCES kotov_aa.cargo (cargoid) MATCH SIMPLE
  69. ON UPDATE NO ACTION
  70. ON DELETE NO ACTION,
  71. CONSTRAINT orders_customerid_fkey FOREIGN KEY (customerid)
  72. REFERENCES kotov_aa.customers (customerid) MATCH SIMPLE
  73. ON UPDATE NO ACTION
  74. ON DELETE NO ACTION,
  75. CONSTRAINT orders_routeid_fkey FOREIGN KEY (routeid)
  76. REFERENCES kotov_aa.routes (routeid) MATCH SIMPLE
  77. ON UPDATE NO ACTION
  78. ON DELETE NO ACTION,
  79. CONSTRAINT orders_vehicleid_fkey FOREIGN KEY (vehicleid)
  80. REFERENCES kotov_aa.vehicles (vehicleid) MATCH SIMPLE
  81. ON UPDATE NO ACTION
  82. ON DELETE NO ACTION,
  83. CONSTRAINT orders_status_check CHECK (status::text = ANY (ARRAY['В пути'::character varying, 'Доставлен'::character varying, 'Отменён'::character varying]::text[]))
  84. )
  85. TABLESPACE pg_default;
  86. ALTER TABLE IF EXISTS kotov_aa.orders
  87. OWNER to kotov_aa;
  88. -- Table: kotov_aa.routes
  89. -- DROP TABLE IF EXISTS kotov_aa.routes;
  90. CREATE TABLE IF NOT EXISTS kotov_aa.routes
  91. (
  92. routeid integer NOT NULL DEFAULT nextval('routes_routeid_seq'::regclass),
  93. distance numeric(10,2) NOT NULL,
  94. fromcityid integer NOT NULL,
  95. tocityid integer NOT NULL,
  96. CONSTRAINT routes_pkey PRIMARY KEY (routeid),
  97. CONSTRAINT routes_fromcityid_fkey FOREIGN KEY (fromcityid)
  98. REFERENCES kotov_aa.cities (cityid) MATCH SIMPLE
  99. ON UPDATE NO ACTION
  100. ON DELETE NO ACTION,
  101. CONSTRAINT routes_tocityid_fkey FOREIGN KEY (tocityid)
  102. REFERENCES kotov_aa.cities (cityid) MATCH SIMPLE
  103. ON UPDATE NO ACTION
  104. ON DELETE NO ACTION,
  105. CONSTRAINT chk_cities_different CHECK (fromcityid <> tocityid),
  106. CONSTRAINT routes_distance_check CHECK (distance > 0::numeric)
  107. )
  108. TABLESPACE pg_default;
  109. ALTER TABLE IF EXISTS kotov_aa.routes
  110. OWNER to kotov_aa;
  111. -- Table: kotov_aa.users
  112. -- DROP TABLE IF EXISTS kotov_aa.users;
  113. CREATE TABLE IF NOT EXISTS kotov_aa.users
  114. (
  115. id integer NOT NULL DEFAULT nextval('users_id_seq'::regclass),
  116. username character varying(50) COLLATE pg_catalog."default" NOT NULL,
  117. password_hash character varying(255) COLLATE pg_catalog."default" NOT NULL,
  118. role character varying(20) COLLATE pg_catalog."default" NOT NULL,
  119. CONSTRAINT users_pkey PRIMARY KEY (id),
  120. CONSTRAINT users_username_key UNIQUE (username),
  121. CONSTRAINT users_role_check CHECK (role::text = ANY (ARRAY['admin'::character varying, 'dispatcher'::character varying, 'driver'::character varying]::text[]))
  122. )
  123. TABLESPACE pg_default;
  124. ALTER TABLE IF EXISTS kotov_aa.users
  125. OWNER to kotov_aa;
  126. -- Table: kotov_aa.vehicles
  127. -- DROP TABLE IF EXISTS kotov_aa.vehicles;
  128. CREATE TABLE IF NOT EXISTS kotov_aa.vehicles
  129. (
  130. vehicleid integer NOT NULL DEFAULT nextval('vehicles_vehicleid_seq'::regclass),
  131. brand character varying(50) COLLATE pg_catalog."default" NOT NULL,
  132. bodytype character varying(30) COLLATE pg_catalog."default",
  133. color character varying(30) COLLATE pg_catalog."default",
  134. driverid integer,
  135. CONSTRAINT vehicles_pkey PRIMARY KEY (vehicleid),
  136. CONSTRAINT vehicles_driverid_fkey FOREIGN KEY (driverid)
  137. REFERENCES kotov_aa.drivers (driverid) MATCH SIMPLE
  138. ON UPDATE NO ACTION
  139. ON DELETE SET NULL
  140. )
  141. TABLESPACE pg_default;
  142. ALTER TABLE IF EXISTS kotov_aa.vehicles
  143. OWNER to kotov_aa;