Загрузка данных


привет, дай пожалуйста дмл код для этих таблиц
Studios, Equipment - 10 records
Payment, Promocodes, Discount, PaymentDiscount (m:m), StudioType, Equipment, Warranty, PackEquipment (m:m) - at least 10 records  in each table
вот весь код ддл

-- ================================================================
-- SQL DDL TEMPLATE (TOPIC 04)
-- ================================================================
-- WHAT SHOULD BE ADDED HERE:
-- 1) Full PostgreSQL DDL for your finalized schema.
-- 2) CREATE TABLE statements for all entities from your ER diagram.
-- 3) Primary keys, foreign keys, NOT NULL, UNIQUE, CHECK constraints.
-- 4) Indexes for important search/join columns.
-- 5) Clean structure and comments (group by tables/constraints/indexes).
--
-- RECOMMENDED ORDER:
-- 1) Tables
-- 2) Constraints (if not inline)
-- 3) Indexes
--
-- TEAM NOTE:
-- Add short attribution comments for who implemented which part.
-- Example:
-- [Name] - users, roles, permissions tables
-- [Name] - orders, payments, invoices tables
--
-- IMPORTANT:
-- The script must run in PostgreSQL and produce a working schema that
-- matches your approved ER diagram and conceptual schema.
-- Submit this as one SQL file.
-- ================================================================

-- Add your DDL below this line

CREATE SCHEMA FitServe;

-- ENUMs
CREATE TYPE FitServe.sex_type AS ENUM ( -- Oleksii
  'Male',
  'Female',
  'Other'
);

CREATE TYPE FitServe.role_type AS ENUM ( -- Oleksii
  'Administrator',
  'Athlete',
  'Trainer'
);

CREATE TYPE FitServe.achievement_rate_type AS ENUM ( -- Oleksii
  'Bronze', 
  'Silver', 
  'Gold', 
  'Platinum', 
  'Diamond'
);

CREATE TYPE FitServe.interest_rate_type AS ENUM ( -- Oleksii
  'Bronze', 
  'Silver', 
  'Gold', 
  'Platinum', 
  'Diamond'
);

CREATE TYPE FitServe.contract_type_enum AS ENUM ( -- Oleksii
  'individual', 
  'salaried', 
  'both'
);

CREATE TYPE FitServe.severity_level AS ENUM ( -- Oleksii
  'mild', 
  'moderate', 
  'severe' 
);

CREATE TYPE FitServe.studio_name_enum AS ENUM ( -- lily
  'aerobics',
  'yoga',
  'pilates',
  'weightlifting',
  'cycling',
  'powerlifting',
  'boxing',
  'swimming_pool',
  'gymnastics'
);

CREATE TYPE FitServe.booking_status_enum AS ENUM ( -- lily
  'planned',
  'confirmed',
  'completed',
  'cancelled'
);

CREATE TYPE FitServe.status_type AS ENUM ( -- Oleksii
  'ready', 
  'repairing', 
  'occupied'
);

CREATE TYPE FitServe.warranty_type AS ENUM ( -- Oleksii
  'full', 
  'partial'
);

CREATE TYPE FitServe.payment_status_type AS ENUM ( -- Oleksii
  'unpaid', 
  'in_process', 
  'completed'
);


-- TABLEs
CREATE TABLE FitServe.user_info ( -- Oleksii
  user_info_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  registration_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

  first_name VARCHAR(50) NOT NULL,
  last_name VARCHAR(50) NOT NULL,
  date_of_birth DATE NOT NULL,
  phone_number VARCHAR(20) NOT NULL UNIQUE,

  sex FitServe.sex_type NOT NULL,

  preferred_pronouns VARCHAR(20),
  address VARCHAR(255) NOT NULL,

  CONSTRAINT chk_user_info_minimum_age
    CHECK (
      registration_date >= date_of_birth + INTERVAL '14 years'
    ) -- lily-CHECK
);

CREATE TABLE FitServe.users ( -- Oleksii
  user_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  role FitServe.role_type NOT NULL,
  login varchar(255) NOT NULL UNIQUE,
  password_hash varchar(1024) NOT NULL,
  user_info_id INTEGER,

  CONSTRAINT uq_users_user_info_role -- lily-UNIQUE 
    UNIQUE (user_info_id, role),
  FOREIGN KEY (user_info_id) REFERENCES FitServe.user_info(user_info_id)
);

CREATE TABLE FitServe.interest_rate ( -- Oleksii
  interest_rate_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  trainer_share_rate NUMERIC(5, 2) NOT NULL,
  trainer_rate FitServe.interest_rate_type NOT NULL,

  CONSTRAINT chk_interest_rate_share_range
   CHECK (trainer_share_rate BETWEEN 0 AND 100) -- lily-CHECK
);

CREATE TABLE FitServe.trainers ( -- Oleksii
  trainer_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  contract_type FitServe.contract_type_enum NOT NULL,

  user_id INTEGER NOT NULL UNIQUE,
  interest_rate_id INTEGER UNIQUE,

  FOREIGN KEY (user_id) REFERENCES FitServe.users(user_id),
  FOREIGN KEY (interest_rate_id) REFERENCES FitServe.interest_rate(interest_rate_id)
);

CREATE TABLE FitServe.trainer_specialization ( -- Oleksii
  trainer_specialization_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  specialization_name VARCHAR(100) NOT NULL,

  trainer_id INTEGER NOT NULL,

  FOREIGN KEY (trainer_id) REFERENCES FitServe.trainers(trainer_id)
);

CREATE TABLE FitServe.certifications ( -- Oleksii
  certification_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  certification_link VARCHAR(500) NOT NULL UNIQUE,
  receiving_date DATE,

  trainer_specialization_id INTEGER NOT NULL,

  FOREIGN KEY (trainer_specialization_id) REFERENCES FitServe.trainer_specialization(trainer_specialization_id)
);

CREATE TABLE FitServe.athletes( -- Andriy
  athlete_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  goals VARCHAR(1500) NOT NULL,

  user_id INTEGER NOT NULL UNIQUE,

  FOREIGN KEY (user_id) REFERENCES FitServe.users(user_id) 
);

CREATE TABLE FitServe.achievements ( -- Andriy
  achievement_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  name VARCHAR(100) NOT NULL,
  category VARCHAR(50),
  tier FitServe.achievement_rate_type NOT NULL,
  description VARCHAR(255) NOT NULL,
  target_value SMALLINT NOT NULL,

  CONSTRAINT chk_achievements_target_positive
   CHECK (target_value > 0) -- lily-CHECK
);

CREATE TABLE FitServe.athlete_achievement( -- Andriy
  athlete_achievement_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  achievement_id INTEGER NOT NULL,
  athlete_id INTEGER NOT NULL,
  date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  current_state SMALLINT,

  UNIQUE (achievement_id, athlete_id),

  CONSTRAINT chk_athlete_achievement_date_not_future
   CHECK (date <= CURRENT_TIMESTAMP), -- lily-CHECK

  CONSTRAINT chk_athlete_achievement_state_nonnegative
   CHECK (current_state >= 0), -- lily-CHECK

  FOREIGN KEY (achievement_id) REFERENCES FitServe.achievements(achievement_id),
  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id)
);

CREATE TABLE FitServe.body_metrics( -- Andriy
  metric_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  date DATE NOT NULL DEFAULT NOW(),
  weight NUMERIC(4,1) NOT NULL,
  athlete_id INTEGER NOT NULL,

  CONSTRAINT chk_body_metrics_date_not_future
   CHECK (date <= CURRENT_DATE), -- lily-CHECK

  CONSTRAINT chk_body_metrics_weight_range
   CHECK (weight BETWEEN 40.0 AND 200.0), -- lily-CHECK

  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id)
);

CREATE TABLE FitServe.health_restrictions ( -- Andriy
  health_restriction_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  description VARCHAR(4000) NOT NULL,
  severity_level FitServe.severity_level NOT NULL,
  athlete_id INTEGER NOT NULL,

  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id)
);

CREATE TABLE FitServe.nutrition( -- Andriy
  nutrition_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  date DATE NOT NULL DEFAULT NOW(),
  calories SMALLINT NOT NULL,
  carbs_weight SMALLINT,
  fat_weight SMALLINT,
  athlete_id INTEGER NOT NULL,

  CONSTRAINT chk_nutrition_calories_nonnegative
   CHECK (calories >= 0), -- lily-CHECK 

  CONSTRAINT chk_nutrition_carbs
   CHECK (carbs_weight >= 0 AND carbs_weight < 1000), -- lily-CHECK

  CONSTRAINT chk_nutrition_fat
   CHECK (fat_weight >= 0 AND fat_weight < 1000), -- lily-CHECK

  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id)
);

CREATE TABLE FitServe.proteins( -- Andriy
  protein_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
  weight SMALLINT NOT NULL,
  type VARCHAR(50) NOT NULL,
  nutrition_id BIGINT NOT NULL,

  CONSTRAINT chk_protein_weight
   CHECK (weight > 0 AND weight < 2000), -- lily-CHECK                                  !

  FOREIGN KEY (nutrition_id) REFERENCES FitServe.nutrition(nutrition_id)
);

CREATE TABLE FitServe.studios ( -- lily
  studio_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, -- Oleksii_with_ChatGPT_Sol_5.6

  studio_name FitServe.studio_name_enum NOT NULL UNIQUE,
  max_capacity INTEGER NOT NULL,
  studio_status BOOLEAN NOT NULL DEFAULT TRUE,

  CONSTRAINT chk_studios_capacity
   CHECK (max_capacity > 0 AND max_capacity < 500) -- lily-CHECK  
);

CREATE TABLE FitServe.studio_type ( -- lily
  studio_type_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  activity_name VARCHAR(50) NOT NULL,
  studio_id INTEGER NOT NULL,

  UNIQUE (studio_id, activity_name),
  
  CONSTRAINT chk_studio_type_activity_not_blank
   CHECK (TRIM(activity_name) <> ''),

  FOREIGN KEY (studio_id) REFERENCES FitServe.studios(studio_id)
);

CREATE TABLE FitServe.session ( -- lily
  session_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  time_start TIMESTAMP NOT NULL,
  time_end TIMESTAMP NOT NULL,
  booking FitServe.booking_status_enum NOT NULL DEFAULT 'planned',
  studio_id INTEGER,

  CONSTRAINT chk_session_end_after_start
   CHECK (time_end > time_start),
    
  CONSTRAINT chk_session_max_duration
   CHECK (time_end <= time_start + INTERVAL '3 hours'),

  FOREIGN KEY (studio_id) REFERENCES FitServe.studios(studio_id)
);

CREATE TABLE FitServe.athlete_session ( -- lily
  athlete_session_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  session_id BIGINT NOT NULL,
  athlete_id INTEGER NOT NULL,

  UNIQUE (session_id, athlete_id),
  FOREIGN KEY (session_id) REFERENCES FitServe.session(session_id),
  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id)
);

CREATE TABLE FitServe.trainer_session ( -- lily
  trainer_session_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  trainer_id INTEGER NOT NULL,
  session_id BIGINT NOT NULL,

  UNIQUE (trainer_id, session_id),
  FOREIGN KEY (trainer_id) REFERENCES FitServe.trainers(trainer_id),
  FOREIGN KEY (session_id) REFERENCES FitServe.session(session_id)
);

CREATE TABLE FitServe.packs ( -- Oleksii
  pack_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  pack_name VARCHAR(100) NOT NULL UNIQUE,
  pack_type VARCHAR(50) NOT NULL,
  is_active BOOLEAN NOT NULL
);

CREATE TABLE FitServe.pack_subscription ( -- Oleksii
  pack_subscription_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  start_date DATE NOT NULL,
  end_date DATE NOT NULL,

  athlete_id INTEGER NOT NULL,
  pack_id INTEGER NOT NULL,

  CONSTRAINT chk_pack_subscription_date_order
   CHECK (end_date >= start_date), -- lily-CHECK

  CONSTRAINT chk_pack_subscription_start_limit
   CHECK (start_date <= CURRENT_DATE + INTERVAL '1 year'), -- lily-CHECK

  -- Oleksii-CHECK: chk_pack_subscription_start_not_past was removed because
  -- a CURRENT_DATE-based CHECK becomes unsuitable for historical subscriptions
  -- and can prevent restoring previously valid data. -- Oleksii_with_ChatGPT_Sol_5.6

  FOREIGN KEY (athlete_id) REFERENCES FitServe.athletes(athlete_id),
  FOREIGN KEY (pack_id) REFERENCES FitServe.packs(pack_id)
);

CREATE TABLE FitServe.equipment ( -- Oleksii
  equipment_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  name VARCHAR(100) NOT NULL,
  model VARCHAR(100) NOT NULL,
  brand varchar(100) NOT NULL,
  status FitServe.status_type NOT NULL DEFAULT 'ready',

  update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

  studio_id INTEGER NOT NULL,

  FOREIGN KEY (studio_id) REFERENCES FitServe.studios(studio_id)
);

CREATE TABLE FitServe.warranty ( -- Oleksii
  warranty_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  warranty_status FitServe.warranty_type NOT NULL,
  expiry_date DATE NOT NULL,
  renewal_date DATE,
  terms_link VARCHAR(500) NOT NULL,
  
  equipment_id INTEGER NOT NULL UNIQUE,

  FOREIGN KEY (equipment_id) REFERENCES FitServe.equipment(equipment_id)
);

CREATE TABLE FitServe.pack_equipment ( -- Oleksii
  pack_equipment_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  pack_id INTEGER NOT NULL,
  equipment_id INTEGER NOT NULL,

  UNIQUE (pack_id, equipment_id),
  FOREIGN KEY (pack_id) REFERENCES FitServe.packs(pack_id),
  FOREIGN KEY (equipment_id) REFERENCES FitServe.equipment(equipment_id)
);

CREATE TABLE FitServe.promocodes ( -- Oleksii
  promocode_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  code VARCHAR(16) NOT NULL UNIQUE,
  quantity SMALLINT NOT NULL,
  is_active BOOLEAN NOT NULL DEFAULT TRUE,  

  CONSTRAINT chk_promocodes_quantity_nonnegative
   CHECK (quantity >= 0) -- lily-CHECK
);

CREATE TABLE FitServe.payment ( -- Oleksii
  payment_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  price NUMERIC(10, 2) NOT NULL,
  payment_method VARCHAR(50),
  payment_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  amount_paid NUMERIC(10, 2),
  payment_status FitServe.payment_status_type NOT NULL DEFAULT 'unpaid',

  pack_subscription_id INTEGER NOT NULL UNIQUE,
  promocode_id INTEGER,

  CONSTRAINT chk_payment_price_positive
   CHECK (price > 0), -- lily-CHECK

  CONSTRAINT chk_payment_amount_positive
   CHECK (amount_paid > 0), -- lily-CHECK

  CONSTRAINT chk_payment_amount_not_exceed_price
   CHECK (amount_paid <= price), -- Oleksii-CHECK

  FOREIGN KEY (pack_subscription_id) REFERENCES FitServe.pack_subscription(pack_subscription_id),
  FOREIGN KEY (promocode_id) REFERENCES FitServe.promocodes(promocode_id)
);

CREATE TABLE FitServe.discounts ( -- Oleksii
  discount_id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  discount_name VARCHAR(50) NOT NULL,
  description VARCHAR(500) NOT NULL,
  start_date DATE NOT NULL,
  end_date DATE NOT NULL,

  CONSTRAINT chk_discounts_date_order
   CHECK (end_date > start_date) -- lily-CHECK
);

CREATE TABLE FitServe.payment_discount ( -- Oleksii
  payment_discount_id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

  discount_id INTEGER NOT NULL,
  payment_id INTEGER NOT NULL,

  CONSTRAINT uq_payment_discount_pair
  UNIQUE (discount_id, payment_id), -- lily-UNIQUE

  FOREIGN KEY (discount_id) REFERENCES FitServe.discounts(discount_id),
  FOREIGN KEY (payment_id) REFERENCES FitServe.payment(payment_id)
);


-- =========================================================
-- FOREIGN KEY UPDATE / DELETE RULES
-- =========================================================

ALTER TABLE FitServe.users
    DROP CONSTRAINT IF EXISTS users_user_info_id_fkey,
    ADD CONSTRAINT fk_users_user_info
        FOREIGN KEY (user_info_id)
        REFERENCES FitServe.user_info (user_info_id)
        ON UPDATE CASCADE
        ON DELETE RESTRICT;

ALTER TABLE FitServe.trainers
    DROP CONSTRAINT IF EXISTS trainers_user_id_fkey,
    ADD CONSTRAINT fk_trainers_user
        FOREIGN KEY (user_id)
        REFERENCES FitServe.users (user_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.trainers
    DROP CONSTRAINT IF EXISTS trainers_interest_rate_id_fkey,
    ADD CONSTRAINT fk_trainers_interest_rate
        FOREIGN KEY (interest_rate_id)
        REFERENCES FitServe.interest_rate (interest_rate_id)
        ON UPDATE CASCADE
        ON DELETE SET NULL;

ALTER TABLE FitServe.trainer_specialization
    DROP CONSTRAINT IF EXISTS trainer_specialization_trainer_id_fkey,
    ADD CONSTRAINT fk_trainer_specialization_trainer
        FOREIGN KEY (trainer_id)
        REFERENCES FitServe.trainers (trainer_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.certifications
    DROP CONSTRAINT IF EXISTS certifications_trainer_specialization_id_fkey,
    ADD CONSTRAINT fk_certifications_trainer_specialization
        FOREIGN KEY (trainer_specialization_id)
        REFERENCES FitServe.trainer_specialization (trainer_specialization_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.athletes
    DROP CONSTRAINT IF EXISTS athletes_user_id_fkey,
    ADD CONSTRAINT fk_athletes_user
        FOREIGN KEY (user_id)
        REFERENCES FitServe.users (user_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.athlete_achievement
    DROP CONSTRAINT IF EXISTS athlete_achievement_achievement_id_fkey,
    ADD CONSTRAINT fk_athlete_achievement_achievement
        FOREIGN KEY (achievement_id)
        REFERENCES FitServe.achievements (achievement_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.athlete_achievement
    DROP CONSTRAINT IF EXISTS athlete_achievement_athlete_id_fkey,
    ADD CONSTRAINT fk_athlete_achievement_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.body_metrics
    DROP CONSTRAINT IF EXISTS body_metrics_athlete_id_fkey,
    ADD CONSTRAINT fk_body_metrics_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.health_restrictions
    DROP CONSTRAINT IF EXISTS health_restrictions_athlete_id_fkey,
    ADD CONSTRAINT fk_health_restrictions_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.nutrition
    DROP CONSTRAINT IF EXISTS nutrition_athlete_id_fkey,
    ADD CONSTRAINT fk_nutrition_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.proteins
    DROP CONSTRAINT IF EXISTS proteins_nutrition_id_fkey,
    ADD CONSTRAINT fk_protein_nutrition
        FOREIGN KEY (nutrition_id)
        REFERENCES FitServe.nutrition (nutrition_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.studio_type
    DROP CONSTRAINT IF EXISTS studio_type_studio_id_fkey,
    ADD CONSTRAINT fk_studio_type_studio
        FOREIGN KEY (studio_id)
        REFERENCES FitServe.studios (studio_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.session
    DROP CONSTRAINT IF EXISTS session_studio_id_fkey,
    ADD CONSTRAINT fk_session_studio
        FOREIGN KEY (studio_id)
        REFERENCES FitServe.studios (studio_id)
        ON UPDATE CASCADE
        ON DELETE SET NULL;

ALTER TABLE FitServe.athlete_session
    DROP CONSTRAINT IF EXISTS athlete_session_session_id_fkey,
    ADD CONSTRAINT fk_athlete_session_session
        FOREIGN KEY (session_id)
        REFERENCES FitServe.session (session_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.athlete_session
    DROP CONSTRAINT IF EXISTS athlete_session_athlete_id_fkey,
    ADD CONSTRAINT fk_athlete_session_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.trainer_session
    DROP CONSTRAINT IF EXISTS trainer_session_trainer_id_fkey,
    ADD CONSTRAINT fk_trainer_session_trainer
        FOREIGN KEY (trainer_id)
        REFERENCES FitServe.trainers (trainer_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.trainer_session
    DROP CONSTRAINT IF EXISTS trainer_session_session_id_fkey,
    ADD CONSTRAINT fk_trainer_session_session
        FOREIGN KEY (session_id)
        REFERENCES FitServe.session (session_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.pack_subscription
    DROP CONSTRAINT IF EXISTS pack_subscription_athlete_id_fkey,
    ADD CONSTRAINT fk_pack_subscription_athlete
        FOREIGN KEY (athlete_id)
        REFERENCES FitServe.athletes (athlete_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.pack_subscription
    DROP CONSTRAINT IF EXISTS pack_subscription_pack_id_fkey,
    ADD CONSTRAINT fk_pack_subscription_pack
        FOREIGN KEY (pack_id)
        REFERENCES FitServe.packs (pack_id)
        ON UPDATE CASCADE
        ON DELETE RESTRICT;

ALTER TABLE FitServe.equipment
    DROP CONSTRAINT IF EXISTS equipment_studio_id_fkey,
    ADD CONSTRAINT fk_equipment_studio
        FOREIGN KEY (studio_id)
        REFERENCES FitServe.studios (studio_id)
        ON UPDATE CASCADE
        ON DELETE RESTRICT;

ALTER TABLE FitServe.warranty
    DROP CONSTRAINT IF EXISTS warranty_equipment_id_fkey,
    ADD CONSTRAINT fk_warranty_equipment
        FOREIGN KEY (equipment_id)
        REFERENCES FitServe.equipment (equipment_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.pack_equipment
    DROP CONSTRAINT IF EXISTS pack_equipment_pack_id_fkey,
    ADD CONSTRAINT fk_pack_equipment_pack
        FOREIGN KEY (pack_id)
        REFERENCES FitServe.packs (pack_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.pack_equipment
    DROP CONSTRAINT IF EXISTS pack_equipment_equipment_id_fkey,
    ADD CONSTRAINT fk_pack_equipment_equipment
        FOREIGN KEY (equipment_id)
        REFERENCES FitServe.equipment (equipment_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;

ALTER TABLE FitServe.payment
    DROP CONSTRAINT IF EXISTS payment_pack_subscription_id_fkey,
    ADD CONSTRAINT fk_payment_pack_subscription
        FOREIGN KEY (pack_subscription_id)
        REFERENCES FitServe.pack_subscription (pack_subscription_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE; -- Oleksii_with_ChatGPT_Sol_5.6

ALTER TABLE FitServe.payment
    DROP CONSTRAINT IF EXISTS payment_promocode_id_fkey,
    ADD CONSTRAINT fk_payment_promocode
        FOREIGN KEY (promocode_id)
        REFERENCES FitServe.promocodes (promocode_id)
        ON UPDATE CASCADE
        ON DELETE SET NULL;

ALTER TABLE FitServe.payment_discount
    DROP CONSTRAINT IF EXISTS payment_discount_discount_id_fkey,
    ADD CONSTRAINT fk_payment_discount_discount
        FOREIGN KEY (discount_id)
        REFERENCES FitServe.discounts (discount_id)
        ON UPDATE CASCADE
        ON DELETE RESTRICT;

ALTER TABLE FitServe.payment_discount
    DROP CONSTRAINT IF EXISTS payment_discount_payment_id_fkey,
    ADD CONSTRAINT fk_payment_discount_payment
        FOREIGN KEY (payment_id)
        REFERENCES FitServe.payment (payment_id)
        ON UPDATE CASCADE
        ON DELETE CASCADE;


-- =========================================================
-- INDEXES
-- =========================================================

-- TRAINERS AND CERTIFICATIONS
CREATE INDEX IF NOT EXISTS idx_trainer_specialization_trainer_id
    ON FitServe.trainer_specialization (trainer_id);

CREATE INDEX IF NOT EXISTS idx_trainer_specialization_name
    ON FitServe.trainer_specialization (specialization_name);


-- ATHLETES, PROGRESS AND HEALTH
CREATE INDEX IF NOT EXISTS idx_athlete_achievement_athlete_id
    ON FitServe.athlete_achievement (athlete_id);

CREATE INDEX IF NOT EXISTS idx_body_metrics_athlete_date
    ON FitServe.body_metrics (athlete_id, date DESC);

CREATE INDEX IF NOT EXISTS idx_health_restrictions_athlete_id
    ON FitServe.health_restrictions (athlete_id);

CREATE INDEX IF NOT EXISTS idx_nutrition_athlete_date
    ON FitServe.nutrition (athlete_id, date DESC);


-- STUDIOS AND SESSIONS
CREATE INDEX IF NOT EXISTS idx_studio_type_activity_name
    ON FitServe.studio_type (activity_name);

CREATE INDEX IF NOT EXISTS idx_session_active_schedule
    ON FitServe.session (time_start, time_end, studio_id)
    WHERE booking IN ('planned', 'confirmed');

CREATE INDEX IF NOT EXISTS idx_athlete_session_athlete_session
    ON FitServe.athlete_session (athlete_id, session_id);

CREATE INDEX IF NOT EXISTS idx_trainer_session_session_trainer
    ON FitServe.trainer_session (session_id, trainer_id);


-- PACKS AND SUBSCRIPTIONS
CREATE INDEX IF NOT EXISTS idx_packs_type_active
    ON FitServe.packs (pack_type, is_active);

CREATE INDEX IF NOT EXISTS idx_pack_subscription_athlete_period
    ON FitServe.pack_subscription (athlete_id, start_date, end_date);


-- EQUIPMENT AND WARRANTY
CREATE INDEX IF NOT EXISTS idx_equipment_studio_status
    ON FitServe.equipment (studio_id, status);

CREATE INDEX IF NOT EXISTS idx_warranty_renewal_date
    ON FitServe.warranty (renewal_date)
    WHERE renewal_date IS NOT NULL;

CREATE INDEX IF NOT EXISTS idx_pack_equipment_equipment_id
    ON FitServe.pack_equipment (equipment_id);


-- PAYMENTS AND DISCOUNTS
CREATE INDEX IF NOT EXISTS idx_payment_status_date
    ON FitServe.payment (payment_status, payment_date DESC);

CREATE INDEX IF NOT EXISTS idx_discounts_active_period
    ON FitServe.discounts (start_date, end_date);

CREATE INDEX IF NOT EXISTS idx_payment_discount_payment_id
    ON FitServe.payment_discount (payment_id);

--DROP SCHEMA fitserve CASCADE;

вот пример вставки
INSERT INTO FitServe.user_info (
  registration_date,
  first_name,
  last_name,
  date_of_birth,
  phone_number,
  sex,
  preferred_pronouns,
  address
)
VALUES
  (TIMESTAMP '2023-01-18 12:55:33', 'Артем', 'Мельник', DATE '1991-05-15', '+3800967389545', 'Male', 'він/його', 'Україна, м. Київ, вул. Героїв України, буд. 52, кв. 146'),
  (TIMESTAMP '2023-11-21 15:35:20', 'Іванна', 'Лисенко', DATE '2005-11-05', '+3800972925420', 'Female', 'вона/її', 'Україна, м. Одеса, вул. Миру, буд. 98'),
  (TIMESTAMP '2024-12-23 14:50:30', 'Любов', 'Тимошенко', DATE '1993-05-28', '+3800999557975', 'Female', NULL, 'Україна, м. Запоріжжя, вул. Польова, буд. 13, кв. 117'),
  (TIMESTAMP '2026-01-10 13:55:26', 'Дарина', 'Мороз', DATE '1988-03-06', '+3800999676854', 'Female', 'вона/її', 'Україна, м. Кременчук, вул. Князя Романа, буд. 141, кв. 84'),
  (TIMESTAMP '2024-02-14 17:35:15', 'Віктор', 'Романенко', DATE '1991-12-25', '+3800936151486', 'Male', 'він/його', 'Україна, м. Хмельницький, вул. Наукова, буд. 39, кв. 197'),
  (TIMESTAMP '2023-06-03 17:35:08', 'Микола', 'Савченко', DATE '1994-05-10', '+3800991740602', 'Male', 'він/його', 'Україна, м. Чернівці, просп. Свободи, буд. 10, кв. 218'),
  (TIMESTAMP '2025-06-24 17:10:39', 'Олег', 'Павленко', DATE '2000-05-10', '+3800684535746', 'Male', 'він/його', 'Україна, м. Житомир, вул. Лесі Українки, буд. 83, кв. 131'),
  (TIMESTAMP '2026-05-09 14:20:13', 'Маркіян', 'Сидоренко', DATE '1958-03-28', '+3800667002663', 'Male', 'він/його', 'Україна, м. Житомир, вул. Героїв України, буд. 39'),
  (TIMESTAMP '2023-05-08 19:00:15', 'Вікторія', 'Федоренко', DATE '1959-03-26', '+3800962303492', 'Female', 'вона/її', 'Україна, м. Кропивницький, вул. Михайла Грушевського, буд. 94'),
  (TIMESTAMP '2025-02-02 14:40:41', 'Соломія', 'Василенко', DATE '1990-05-21', '+3800924460305', 'Female', NULL, 'Україна, м. Кропивницький, вул. Князя Романа, буд. 37, кв. 62'),
  (TIMESTAMP '2024-06-04 09:35:05', 'Оксана', 'Іващенко', DATE '2004-11-16', '+3800972339893', 'Female', 'вона/її', 'Україна, м. Дрогобич, вул. Михайла Грушевського, буд. 80, кв. 129'),
  (TIMESTAMP '2026-06-13 19:00:47', 'Валерія', 'Мельничук', DATE '1984-02-25', '+3800738505584', 'Female', 'вона/її', 'Україна, м. Луцьк, вул. Спортивна, буд. 56, кв. 239'),
  (TIMESTAMP '2024-12-20 15:15:23', 'Валя', 'Петренко', DATE '1956-07-21', '+3800919455227', 'Other', NULL, 'Україна, м. Дрогобич, вул. Польова, буд. 117, кв. 55'),
  (TIMESTAMP '2026-06-01 12:30:11', 'Соломія', 'Шевченко', DATE '1985-01-18', '+3800734865358', 'Female', 'вона/її', 'Україна, м. Кременчук, вул. Лесі Українки, буд. 53'),
  (TIMESTAMP '2024-08-27 13:05:30', 'Микола', 'Шевченко', DATE '2002-12-07', '+3800391394962', 'Male', 'він/його', 'Україна, м. Львів, вул. Володимира Великого, буд. 109, кв. 99'),
  (TIMESTAMP '2025-04-17 17:05:23', 'Яна', 'Федоренко', DATE '1964-10-21', '+3800987030762', 'Female', 'вона/її', 'Україна, м. Ужгород, просп. Перемоги, буд. 66, кв. 220'),
  (TIMESTAMP '2024-08-21 11:45:26', 'Дмитро', 'Бондар', DATE '1976-04-30', '+3800963880119', 'Male', 'він/його', 'Україна, м. Чернівці, вул. Лісова, буд. 56, кв. 81'),
  (TIMESTAMP '2024-08-24 08:35:27', 'Андрій', 'Романенко', DATE '1991-12-05', '+3800946946708', 'Male', 'він/його', 'Україна, м. Біла Церква, просп. Свободи, буд. 76, кв. 120'),
  (TIMESTAMP '2025-10-21 09:15:15', 'Міка', 'Даниленко', DATE '1998-02-09', '+3800943270992', 'Other', 'вони/їх', 'Україна, м. Кременчук, вул. Соборна, буд. 122, кв. 121'),
  (TIMESTAMP '2023-02-07 13:00:38', 'Ярослав', 'Костенко', DATE '1972-02-16', '+3800689084168', 'Male', 'він/його', 'Україна, м. Хмельницький, вул. Василя Стуса, буд. 18, кв. 14'),
  (TIMESTAMP '2023-01-07 18:25:18', 'Михайло', 'Савченко', DATE '1959-09-21', '+3800509446104', 'Male', 'він/його', 'Україна, м. Полтава, вул. Михайла Грушевського, буд. 135, кв. 177'),
  (TIMESTAMP '2024-12-28 10:30:06', 'Наталія', 'Мороз', DATE '1969-09-04', '+3800932540809', 'Female', 'вона/її', 'Україна, м. Чернігів, вул. Соборна, буд. 88'),
  (TIMESTAMP '2023-07-06 17:35:58', 'Богдан', 'Мельник', DATE '2000-11-07', '+3800506935274', 'Male', 'він/його', 'Україна, м. Київ, просп. Свободи, буд. 29, кв. 141'),
  (TIMESTAMP '2024-01-27 14:35:00', 'Сергій', 'Данилюк', DATE '1981-10-06', '+3800972630169', 'Male', 'він/його', 'Україна, м. Чернігів, просп. Свободи, буд. 112'),
  (TIMESTAMP '2026-06-06 13:35:30', 'Надія', 'Олійник', DATE '1999-07-28', '+3800947669434', 'Female', 'вона/її', 'Україна, м. Дніпро, вул. Князя Романа, буд. 119, кв. 46'),
  (TIMESTAMP '2024-05-24 10:30:16', 'Олег', 'Козак', DATE '2004-09-20', '+3800506214062', 'Male', NULL, 'Україна, м. Рівне, вул. Паркова, буд. 72, кв. 11'),
  (TIMESTAMP '2024-02-07 17:20:18', 'Василь', 'Бондаренко', DATE '1991-06-01', '+3800992858596', 'Male', 'він/його', 'Україна, м. Одеса, вул. Івана Франка, буд. 100, кв. 201'),
  (TIMESTAMP '2024-04-27 13:40:00', 'Яна', 'Мельничук', DATE '1993-10-16', '+3800997095973', 'Female', 'вона/її', 'Україна, м. Київ, вул. Польова, буд. 141, кв. 209'),
  (TIMESTAMP '2023-04-07 13:50:16', 'Степан', 'Павленко', DATE '1989-04-26', '+3800977067304', 'Male', 'він/його', 'Україна, м. Кременчук, вул. Василя Стуса, буд. 71, кв. 105'),
  (TIMESTAMP '2026-01-20 08:20:15', 'Інна', 'Мороз', DATE '1967-01-20', '+3800965695449', 'Female', 'вона/її', 'Україна, м. Суми, вул. Спортивна, буд. 116, кв. 77'),
  (TIMESTAMP '2024-05-25 10:10:58', 'Інна', 'Шевченко', DATE '1992-04-08', '+3800914889787', 'Female', 'вона/її', 'Україна, м. Луцьк, вул. Володимира Великого, буд. 76'),
  (TIMESTAMP '2023-02-27 13:50:18', 'Максим', 'Савченко', DATE '1964-07-27', '+3800945170132', 'Male', NULL, 'Україна, м. Київ, вул. Польова, буд. 19'),
  (TIMESTAMP '2026-01-29 17:40:32', 'Ірина', 'Литвин', DATE '2008-06-15', '+3800999884118', 'Female', 'вона/її', 'Україна, м. Стрий, вул. Молодіжна, буд. 77, кв. 41'),
  (TIMESTAMP '2024-04-02 10:55:39', 'Оксана', 'Руденко', DATE '1995-06-23', '+3800683414080', 'Female', 'вона/її', 'Україна, м. Стрий, вул. Володимира Великого, буд. 67'),
  (TIMESTAMP '2026-07-22 09:15:21', 'Владислав', 'Савченко', DATE '2006-07-05', '+3800931902625', 'Male', 'він/його', 'Україна, м. Хмельницький, вул. Лесі Українки, буд. 63'),
  (TIMESTAMP '2023-03-27 08:00:41', 'Остап', 'Сидоренко', DATE '2001-08-18', '+3800932053950', 'Male', 'він/його', 'Україна, м. Харків, просп. Перемоги, буд. 109, кв. 42'),
  (TIMESTAMP '2026-05-05 10:50:48', 'Сергій', 'Паламарчук', DATE '1959-11-14', '+3800734998404', 'Male', 'він/його', 'Україна, м. Біла Церква, вул. Паркова, буд. 91, кв. 5'),
  (TIMESTAMP '2025-01-27 11:30:23', 'Анастасія', 'Мельничук', DATE '1969-07-31', '+3800931878695', 'Female', 'вона/її', 'Україна, м. Суми, вул. Молодіжна, буд. 105, кв. 94'),
  (TIMESTAMP '2024-10-15 12:10:47', 'Тетяна', 'Олійник', DATE '1992-01-16', '+3800944960252', 'Female', NULL, 'Україна, м. Харків, вул. Набережна, буд. 58, кв. 34'),
  (TIMESTAMP '2026-06-24 14:10:39', 'Лілія', 'Данилюк', DATE '1974-05-14', '+3800997422015', 'Female', 'вона/її', 'Україна, м. Стрий, вул. Олександра Довженка, буд. 36, кв. 189'),
  (TIMESTAMP '2024-09-18 10:45:03', 'Михайло', 'Даниленко', DATE '1988-06-15', '+3800737647360', 'Male', 'він/його', 'Україна, м. Одеса, вул. Спортивна, буд. 58'),
  (TIMESTAMP '2023-08-26 17:05:35', 'Аліна', 'Ковальчук', DATE '1955-03-25', '+3800738851112', 'Female', 'вона/її', 'Україна, м. Рівне, вул. Садова, буд. 122, кв. 176'),
  (TIMESTAMP '2026-03-21 09:25:21', 'Вікторія', 'Гриценко', DATE '1971-05-18', '+3800736066436', 'Female', 'вона/її', 'Україна, м. Луцьк, вул. Лісова, буд. 20, кв. 107'),
  (TIMESTAMP '2024-12-29 10:45:19', 'Женя', 'Бойко', DATE '1997-12-19', '+3800925283767', 'Other', NULL, 'Україна, м. Біла Церква, вул. Паркова, буд. 18, кв. 253'),
  (TIMESTAMP '2025-11-06 11:15:50', 'Олександр', 'Кулик', DATE '1979-09-16', '+3800682987283', 'Male', 'він/його', 'Україна, м. Львів, вул. Молодіжна, буд. 10, кв. 42'),
  (TIMESTAMP '2024-06-28 20:00:58', 'Софія', 'Мельник', DATE '1974-11-05', '+3800941635188', 'Female', NULL, 'Україна, м. Тернопіль, вул. Шевченка, буд. 28'),
  (TIMESTAMP '2025-06-13 18:10:19', 'Яна', 'Василенко', DATE '1957-02-28', '+3800995311970', 'Female', NULL, 'Україна, м. Кропивницький, вул. Лесі Українки, буд. 30, кв. 247'),
  (TIMESTAMP '2025-12-02 15:25:43', 'Оксана', 'Ковальчук', DATE '1970-02-10', '+3800959796493', 'Female', 'вона/її', 'Україна, м. Чернігів, вул. Івана Франка, буд. 91, кв. 13'),
  (TIMESTAMP '2023-07-31 20:25:38', 'Маркіян', 'Ткаченко', DATE '1981-07-02', '+3800631370416', 'Male', 'він/його', 'Україна, м. Харків, вул. Князя Романа, буд. 120, кв. 21'),
  (TIMESTAMP '2024-07-13 17:10:01', 'Дарина', 'Бондаренко', DATE '1976-09-25', '+3800921524074', 'Female', 'вона/її', 'Україна, м. Львів, вул. Садова, буд. 66, кв. 65'),
  (TIMESTAMP '2023-01-11 14:05:05', 'Владислав', 'Мороз', DATE '1980-08-10', '+3800998544909', 'Male', 'він/його', 'Україна, м. Дніпро, вул. Центральна, буд. 79, кв. 185'),
  (TIMESTAMP '2024-12-17 18:35:46', 'Надія', 'Василенко', DATE '1970-12-20', '+3800674963963', 'Female', 'вона/її', 'Україна, м. Мукачево, вул. Наукова, буд. 140, кв. 259'),
  (TIMESTAMP '2023-11-27 16:40:43', 'Михайло', 'Литвин', DATE '1997-12-12', '+3800638541120', 'Male', NULL, 'Україна, м. Одеса, вул. Набережна, буд. 68'),
  (TIMESTAMP '2026-04-26 15:05:40', 'Любов', 'Коваль', DATE '1959-05-07', '+3800391771135', 'Female', NULL, 'Україна, м. Рівне, вул. Незалежності, буд. 92, кв. 211'),
  (TIMESTAMP '2025-09-01 09:50:25', 'Андрій', 'Коваленко', DATE '2005-06-29', '+3800938815146', 'Male', 'він/його', 'Україна, м. Луцьк, просп. Свободи, буд. 36, кв. 149'),
  (TIMESTAMP '2025-11-21 12:50:54', 'Євген', 'Марчук', DATE '1956-05-03', '+3800939345669', 'Male', 'він/його', 'Україна, м. Івано-Франківськ, вул. Садова, буд. 53, кв. 233'),
  (TIMESTAMP '2025-12-22 16:45:42', 'Інна', 'Марчук', DATE '1966-01-13', '+3800636124301', 'Female', NULL, 'Україна, м. Хмельницький, вул. Князя Романа, буд. 74'),
  (TIMESTAMP '2024-08-23 08:15:13', 'Тарас', 'Олійник', DATE '2001-03-12', '+3800939921889', 'Male', 'він/його', 'Україна, м. Біла Церква, вул. Соборна, буд. 143, кв. 12'),
  (TIMESTAMP '2024-03-26 19:50:54', 'Олег', 'Сидоренко', DATE '1979-02-03', '+3800994185990', 'Male', 'він/його', 'Україна, м. Івано-Франківськ, вул. Сонячна, буд. 145, кв. 247'),
  (TIMESTAMP '2024-06-12 17:20:44', 'Зоряна', 'Савчук', DATE '1987-04-16', '+3800987702079', 'Female', 'вона/її', 'Україна, м. Суми, вул. Зелена, буд. 138, кв. 23'),
  (TIMESTAMP '2026-03-07 19:05:26', 'Наталія', 'Сидоренко', DATE '1987-07-23', '+3800931344012', 'Female', 'вона/її', 'Україна, м. Кременчук, вул. Михайла Грушевського, буд. 107'),
  (TIMESTAMP '2023-08-20 14:35:12', 'Катерина', 'Коваль', DATE '1986-04-28', '+3800956629524', 'Female', 'вона/її', 'Україна, м. Кропивницький, просп. Свободи, буд. 67, кв. 58'),
  (TIMESTAMP '2025-05-29 09:25:49', 'Василь', 'Бондар', DATE '2009-08-01', '+3800677299683', 'Male', 'він/його', 'Україна, м. Вінниця, вул. Садова, буд. 91, кв. 120'),
  (TIMESTAMP '2025-08-09 10:35:34', 'Максим', 'Павленко', DATE '1981-03-15', '+3800993392067', 'Male', NULL, 'Україна, м. Чернігів, вул. Спортивна, буд. 77, кв. 191'),
  (TIMESTAMP '2024-07-10 11:10:01', 'Ірина', 'Костенко', DATE '1979-07-18', '+3800995913904', 'Female', 'вона/її', 'Україна, м. Житомир, вул. Центральна, буд. 27'),
  (TIMESTAMP '2023-09-03 10:40:21', 'Аліна', 'Кравченко', DATE '1989-07-04', '+3800928257946', 'Female', 'вона/її', 'Україна, м. Біла Церква, просп. Свободи, буд. 101, кв. 207'),
  (TIMESTAMP '2025-06-08 13:40:00', 'Артем', 'Шевченко', DATE '1980-05-08', '+3800987318617', 'Male', 'він/його', 'Україна, м. Дрогобич, вул. Шевченка, буд. 8'),
  (TIMESTAMP '2024-08-27 08:30:39', 'Дарина', 'Гнатюк', DATE '1999-04-22', '+3800734469904', 'Female', NULL, 'Україна, м. Одеса, вул. Соборна, буд. 17, кв. 162'),
  (TIMESTAMP '2023-01-17 19:00:53', 'Тетяна', 'Савченко', DATE '2005-10-12', '+3800923340061', 'Female', NULL, 'Україна, м. Мукачево, вул. Незалежності, буд. 89, кв. 15'),
  (TIMESTAMP '2023-03-12 16:00:50', 'Тетяна', 'Федоренко', DATE '1957-09-13', '+3800972343314', 'Female', NULL, 'Україна, м. Івано-Франківськ, вул. Миру, буд. 18, кв. 205'),
  (TIMESTAMP '2025-09-03 16:55:37', 'Владислав', 'Романюк', DATE '1983-02-06', '+3800667393025', 'Male', 'він/його', 'Україна, м. Дніпро, вул. Спортивна, буд. 45, кв. 48'),
  (TIMESTAMP '2026-03-02 09:10:11', 'Анастасія', 'Сидоренко', DATE '1997-06-15', '+3800972384909', 'Female', 'вона/її', 'Україна, м. Івано-Франківськ, вул. Шевченка, буд. 52'),
  (TIMESTAMP '2024-04-25 13:05:15', 'Богдан', 'Руденко', DATE '1977-09-18', '+3800993790347', 'Male', 'він/його', 'Україна, м. Дрогобич, вул. Зелена, буд. 25'),
  (TIMESTAMP '2026-05-10 08:15:20', 'Роман', 'Козак', DATE '1988-08-25', '+3800685988868', 'Male', 'він/його', 'Україна, м. Кременчук, вул. Лесі Українки, буд. 39'),
  (TIMESTAMP '2024-01-07 13:05:42', 'Сергій', 'Поліщук', DATE '2003-07-11', '+3800926572295', 'Male', 'він/його', 'Україна, м. Київ, вул. Садова, буд. 105, кв. 26'),
  (TIMESTAMP '2025-08-03 11:10:18', 'Тарас', 'Гнатюк', DATE '1956-08-07', '+3800927803054', 'Male', 'він/його', 'Україна, м. Луцьк, вул. Незалежності, буд. 31'),
  (TIMESTAMP '2025-01-25 20:55:34', 'Любов', 'Гнатюк', DATE '1990-06-01', '+3800985598651', 'Female', NULL, 'Україна, м. Львів, вул. Володимира Великого, буд. 53, кв. 98'),
  (TIMESTAMP '2023-11-07 08:20:30', 'Дмитро', 'Ткачук', DATE '1970-10-27', '+3800666226540', 'Male', NULL, 'Україна, м. Львів, вул. Миру, буд. 102, кв. 15'),
  (TIMESTAMP '2024-05-01 12:15:47', 'Нікі', 'Мельник', DATE '1976-09-20', '+3800929072944', 'Other', 'вони/їх', 'Україна, м. Полтава, вул. Центральна, буд. 76, кв. 6'),
  (TIMESTAMP '2024-07-10 09:55:40', 'Юлія', 'Дорошенко', DATE '2005-08-08', '+3800669325814', 'Female', NULL, 'Україна, м. Київ, вул. Олександра Довженка, буд. 85'),
  (TIMESTAMP '2023-11-01 13:25:29', 'Назар', 'Данилюк', DATE '2007-07-28', '+3800504979696', 'Male', 'він/його', 'Україна, м. Біла Церква, вул. Шевченка, буд. 44'),
  (TIMESTAMP '2024-08-20 19:00:04', 'Діана', 'Кравчук', DATE '2004-11-02', '+3800922393373', 'Female', NULL, 'Україна, м. Полтава, вул. Зелена, буд. 28, кв. 162'),
  (TIMESTAMP '2023-02-05 20:20:39', 'Вероніка', 'Козак', DATE '1976-09-23', '+3800677114204', 'Female', NULL, 'Україна, м. Чернівці, просп. Перемоги, буд. 80, кв. 178'),
  (TIMESTAMP '2023-08-25 17:50:32', 'Арсен', 'Ткачук', DATE '1995-08-19', '+3800911990459', 'Male', NULL, 'Україна, м. Полтава, вул. Сонячна, буд. 13'),
  (TIMESTAMP '2024-12-03 09:00:05', 'Назар', 'Дорошенко', DATE '1997-04-21', '+3800966680805', 'Male', 'він/його', 'Україна, м. Луцьк, вул. Спортивна, буд. 139'),
  (TIMESTAMP '2025-09-07 13:45:26', 'Інна', 'Левченко', DATE '1966-12-23', '+3800391440303', 'Female', 'вона/її', 'Україна, м. Хмельницький, вул. Князя Романа, буд. 23, кв. 136'),
  (TIMESTAMP '2024-09-07 10:30:24', 'Андрій', 'Марченко', DATE '1986-12-09', '+3800664549684', 'Male', NULL, 'Україна, м. Мукачево, вул. Польова, буд. 14, кв. 102'),
  (TIMESTAMP '2025-02-08 14:40:16', 'Любов', 'Федоренко', DATE '2000-01-19', '+3800996202632', 'Female', 'вона/її', 'Україна, м. Ужгород, вул. Лісова, буд. 80, кв. 92'),
  (TIMESTAMP '2024-09-28 09:30:41', 'Роман', 'Романенко', DATE '1996-09-05', '+3800993439748', 'Male', 'він/його', 'Україна, м. Київ, вул. Олександра Довженка, буд. 102'),... (осталось: 34 кб)