19 lines
1.2 KiB
MySQL
19 lines
1.2 KiB
MySQL
|
|
-- Связь сотрудник — участки (многие ко многим): один сотрудник может быть назначен на несколько участков
|
||
|
|
CREATE TABLE IF NOT EXISTS employee_districts (
|
||
|
|
employee_id VARCHAR(50) NOT NULL REFERENCES employees(id) ON DELETE CASCADE,
|
||
|
|
district_id VARCHAR(50) NOT NULL REFERENCES districts(id) ON DELETE CASCADE,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
PRIMARY KEY (employee_id, district_id)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_employee_districts_employee ON employee_districts(employee_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_employee_districts_district ON employee_districts(district_id);
|
||
|
|
COMMENT ON TABLE employee_districts IS 'Назначения сотрудников на участки; один сотрудник может быть на нескольких участках';
|
||
|
|
|
||
|
|
-- Перенос существующих назначений из employees.assigned_district_id
|
||
|
|
INSERT INTO employee_districts (employee_id, district_id)
|
||
|
|
SELECT id, assigned_district_id
|
||
|
|
FROM employees
|
||
|
|
WHERE assigned_district_id IS NOT NULL AND assigned_district_id <> ''
|
||
|
|
ON CONFLICT (employee_id, district_id) DO NOTHING;
|