Advertisement
alsiva

CreateTables

Dec 6th, 2022
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. CREATE TABLE IF NOT EXISTS Rights(
  2. id SERIAL UNIQUE,
  3. name VARCHAR(50) UNIQUE,
  4. PRIMARY KEY(id,name)
  5. );
  6.  
  7. DO $$
  8. BEGIN
  9. IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname='gender') THEN
  10. CREATE TYPE gender AS ENUM ('man','woman');
  11. END IF;
  12. END
  13. $$;
  14.  
  15. CREATE TABLE IF NOT EXISTS BerryPeople(
  16. id Serial PRIMARY KEY,
  17. Right_ID INT NOT NULL REFERENCES Rights(id) ON DELETE SET NULL,
  18. name VARCHAR(50) NOT NULL,
  19. surname VARCHAR(50) NOT NULL,
  20. password VARCHAR(50) UNIQUE NOT NULL,
  21. sex gender,
  22. date_of_birth DATE NOT NULL,
  23. telegram VARCHAR(50),
  24. vk VARCHAR(50)
  25. );
  26. CREATE TABLE IF NOT EXISTS TripType(
  27. id SERIAL PRIMARY KEY,
  28. name VARCHAR(50)
  29. );
  30. CREATE TABLE IF NOT EXISTS Trip(
  31. id SERIAL PRIMARY KEY,
  32. name VARCHAR(50) NOT NULL,
  33. description VARCHAR(100) NOT NULL,
  34. start_date DATE NOT NULL,
  35. finish_date DATE NOT NULL,
  36. main_organizer_ID INT NOT NULL REFERENCES BerryPeople(id) ON DELETE SET NULL
  37. );
  38. CREATE TABLE IF NOT EXISTS TripRelType(
  39. Type_ID INT NOT NULL,
  40. Trip_ID INT NOT NULL,
  41. PRIMARY KEY(Type_ID, Trip_ID),
  42. CONSTRAINT fk_triptypes FOREIGN KEY (Type_ID) REFERENCES TripType(id) ON DELETE CASCADE,
  43. CONSTRAINT fk_trip FOREIGN KEY (Trip_ID) REFERENCES trip(id) ON DELETE CASCADE
  44. );
  45. CREATE TABLE IF NOT EXISTS EventRating(
  46. Person_ID INT NOT NULL,
  47. Trip_ID INT NOT NULL,
  48. Rating INT,
  49. PRIMARY KEY(Person_ID,Trip_ID),
  50. FOREIGN KEY (Person_ID) REFERENCES BerryPeople(id) ON DELETE CASCADE,
  51. FOREIGN KEY (Trip_ID) REFERENCES Trip(id) ON DELETE CASCADE
  52. );
  53. CREATE TABLE IF NOT EXISTS OverallRating(
  54. Person_ID INT NOT NULL REFERENCES BerryPeople(id) ON DELETE CASCADE,
  55. Rating INT,
  56. PRIMARY KEY(Person_ID)
  57. );
  58. CREATE TABLE IF NOT EXISTS House(
  59. id SERIAL PRIMARY KEY,
  60. Name VARCHAR(50) NOT NULL,
  61. maxPeople INT NOT NULL
  62. );
  63. CREATE TABLE IF NOT EXISTS TripsParticipants(
  64. Trip_ID INT NOT NULL REFERENCES Trip(id) ON DELETE CASCADE,
  65. Person_ID INT NOT NULL REFERENCES BerryPeople(id) ON DELETE CASCADE,
  66. Letter VARCHAR(1000),
  67. approved BOOLEAN
  68. );
  69. CREATE TABLE IF NOT EXISTS Settlement(
  70. Trip_ID INT NOT NULL REFERENCES Trip(id) ON DELETE CASCADE,
  71. Person_ID INT NOT NULL REFERENCES BerryPeople(id) ON DELETE CASCADE,
  72. House_ID INt NOT NULL REFERENCES House(id) ON DELETE CASCADE,
  73. PRIMARY KEY(Trip_ID,Person_ID,House_ID)
  74. );
  75. CREATE TABLE IF NOT EXISTS TripSchedule(
  76. Trip_ID INT NOT NULL REFERENCES Trip(id) ON DELETE CASCADE,
  77. start_time TIMESTAMP NOT NULL,
  78. end_time TIMESTAMP NOT NULL,
  79. description TEXT,
  80. PRIMARY KEY (Trip_ID, start_time, end_time)
  81. );
  82. CREATE TABLE IF NOT EXISTS TripsOrganizer(
  83. Trip_ID INT NOT NULL REFERENCES Trip(id) ON DELETE CASCADE,
  84. Person_ID INT NOT NULL REFERENCES BerryPeople(id) ON DELETE CASCADE,
  85. PRIMARY KEY(Trip_ID, Person_ID)
  86. );
  87.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement