init.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. -- Скрипт инициализации БД для ПМ-11
  2. CREATE SCHEMA IF NOT EXISTS gaukov_dp;
  3. CREATE TABLE IF NOT EXISTS gaukov_dp.users (
  4. login VARCHAR(50) PRIMARY KEY,
  5. password VARCHAR(255) NOT NULL,
  6. role VARCHAR(20) NOT NULL
  7. );
  8. CREATE TABLE IF NOT EXISTS gaukov_dp.groups (
  9. id SERIAL PRIMARY KEY,
  10. name VARCHAR(50) NOT NULL UNIQUE,
  11. year INTEGER NOT NULL
  12. );
  13. CREATE TABLE IF NOT EXISTS gaukov_dp.students (
  14. record_book_id VARCHAR(20) PRIMARY KEY,
  15. last_name VARCHAR(100) NOT NULL,
  16. first_name VARCHAR(100) NOT NULL,
  17. middle_name VARCHAR(100),
  18. group_id INTEGER REFERENCES gaukov_dp.groups(id) ON DELETE SET NULL
  19. );
  20. CREATE TABLE IF NOT EXISTS gaukov_dp.teachers (
  21. id SERIAL PRIMARY KEY,
  22. last_name VARCHAR(100) NOT NULL,
  23. first_name VARCHAR(100) NOT NULL,
  24. middle_name VARCHAR(100)
  25. );
  26. CREATE TABLE IF NOT EXISTS gaukov_dp.subjects (
  27. id SERIAL PRIMARY KEY,
  28. title VARCHAR(200) NOT NULL UNIQUE,
  29. hours INTEGER
  30. );
  31. CREATE TABLE IF NOT EXISTS gaukov_dp.grades (
  32. id SERIAL PRIMARY KEY,
  33. record_book_id VARCHAR(20) REFERENCES gaukov_dp.students(record_book_id) ON DELETE CASCADE,
  34. subject_id INTEGER REFERENCES gaukov_dp.subjects(id) ON DELETE CASCADE,
  35. grade INTEGER NOT NULL CHECK (grade BETWEEN 2 AND 5),
  36. date DATE DEFAULT CURRENT_DATE
  37. );
  38. CREATE TABLE IF NOT EXISTS gaukov_dp.login_logs (
  39. id SERIAL PRIMARY KEY,
  40. user_role VARCHAR(20),
  41. status VARCHAR(50),
  42. login_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  43. );
  44. INSERT INTO gaukov_dp.users (login, password, role) VALUES
  45. ('admin', 'admin123', 'admin'),
  46. ('teacher1', 'teacher123', 'teacher'),
  47. ('student1', 'student123', 'student')
  48. ON CONFLICT (login) DO NOTHING;