tolord

Creating tables

Dec 3rd, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP TABLE IF EXISTS ingredient_stock;
  2. DROP TABLE IF EXISTS provider_ingredient;
  3. DROP TABLE IF EXISTS pizza_ingredient;
  4. DROP TABLE IF EXISTS ingredient;
  5. DROP TABLE IF EXISTS provider;
  6. DROP TABLE IF EXISTS order_item;
  7. DROP TABLE IF EXISTS "order";
  8. DROP TABLE IF EXISTS customer;
  9. DROP TYPE  IF EXISTS order_status;
  10. DROP TABLE IF EXISTS pizza;
  11.  
  12. CREATE TABLE pizza
  13. (
  14.     name   TEXT PRIMARY KEY,
  15.     price  NUMERIC NOT NULL CHECK ( price > 0 ),
  16.     weight NUMERIC NOT NULL CHECK ( weight > 0 )
  17. );
  18. CREATE TABLE ingredient
  19. (
  20.     id   INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  21.     name TEXT NOT NULL UNIQUE
  22. );
  23. CREATE TABLE pizza_ingredient
  24. (
  25.     ingredient_id INT REFERENCES ingredient,
  26.     pizza         TEXT REFERENCES pizza,
  27.     weight        NUMERIC NOT NULL CHECK ( weight > 0 ),
  28.     PRIMARY KEY (ingredient_id, pizza)
  29. );
  30. CREATE TABLE ingredient_stock
  31. (
  32.     ingredient_id INT PRIMARY KEY REFERENCES ingredient,
  33.     weight        NUMERIC NOT NULL CHECK ( weight > 0 )
  34. );
  35. CREATE TABLE customer
  36. (
  37.     phone_number TEXT PRIMARY KEY CHECK ( phone_number ~ '^8[0-9]{10}$' ),
  38.     discount     NUMERIC
  39. );
  40. CREATE TYPE order_status AS ENUM ('принят', 'в обработке', 'отгружен', 'выполнен');
  41. CREATE TABLE "order"
  42. (
  43.     id       SERIAL       PRIMARY KEY,
  44.     date     timestamp    NOT NULL,
  45.     customer TEXT         NOT NULL REFERENCES customer,
  46.     address  TEXT         NOT NULL,
  47.     status   order_status NOT NULL
  48. );
  49. CREATE TABLE order_item
  50. (
  51.     order_id INT REFERENCES "order",
  52.     pizza        TEXT REFERENCES pizza,
  53.     count        INT NOT NULL,
  54.     PRIMARY KEY (order_id, pizza)
  55. );
  56. CREATE TABLE provider
  57. (
  58.     id   INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  59.     org_name     TEXT NOT NULL ,
  60.     phone_number TEXT NOT NULL CHECK ( phone_number ~ '^8[0-9]{10}$' ),
  61.     UNIQUE (org_name, phone_number)
  62. );
  63. CREATE TABLE provider_ingredient(
  64.     provider_id INT REFERENCES provider,
  65.     ingredient_id INT REFERENCES ingredient,
  66.     price NUMERIC NOT NULL,
  67.     PRIMARY KEY (provider_id, ingredient_id)
  68. );
Advertisement
Add Comment
Please, Sign In to add comment