У меня проблема, пытаясь понять проблему с базой данных. Ситуация с системой приема в школу выглядит следующим образом.
Таблица 1: Школа CREATE TABLE school (schoolID auto_increment, school_name varchar и т. д. и т. д.)
Таблица 2: Студенты СОЗДАЮТ ТАБЛИЦУ студентов (studentID auto_increment, student_name varchar и т. д. и т. д.)
Таблица 3: Зачисления (проблема здесь, я думаю) CREATE TABLE enrollments (enrolID, ...)
Проблема в том, что раньше система позволяла зачислениям поступать из любого количества местоположений в любое время и просто вставлять их в базу данных, что было нормально, все автоматически увеличивалось.
Масштабы изменились, так как им не нравился тот факт, что при составлении отчетов, когда они извлекали данные о зачислениях, цифры для зачислений были разбросаны. Они хотели, чтобы идентификаторы зачисления в каждой школе были последовательными.
Одна мысль у меня была, вариант (а)
Создайте таблицу зачисления для каждой школы (всего около 1000–1500 школ), чтобы каждое вставленное зачисление сохранялось последовательно.
Вариант (Б)
Имейте другую таблицу, в которой будет записана «последняя запись», вставленная для этой школы.
CREATE TABLE lastrecord (название школы varchar, nextrecord int)
При этом перед каждой вставкой ему нужно будет проверять базу данных, чтобы найти последний идентификатор, использованный для этой школы, получить значение, +1 к нему, а затем ВСТАВИТЬ в таблицу регистрации.
используя этот метод, я бы добавил к идентификатору регистрации идентификатор школы, например, schoolID: 100.
новый идентификатор зачисления: 10045 для их 45-го ученика.
Затем после каждой вставки обновляйте эту таблицу используемой записью. Это кажется крайне неэффективным, но я изо всех сил пытаюсь найти лучшее решение.
Спасибо заранее за любую помощь.