Я хочу хранить общие результаты школ в базе данных наиболее эффективным способом с меньшим количеством повторов, чтобы данные были из разных школ за разные годы и данные были таким образом, из дивизиона 0-4 и для каждого дивизиона. он показывает количество мужчин и женщин с этим разделением. желательно, чтобы была одна строка, но не знаю, будет ли ее легко использовать при анализе, извлечении таблиц и графиков.
Что я сделал:
публичная функция up() { Schema::create('csee', function (Blueprint $table) { $таблица->id(); $table->integer('school_id'); $table->integer('год'); $table->json('division1')->comment('json с двумя записями, соответственно мужскими и женскими'); $table->json('division2')->comment('json с двумя записями, соответственно мужскими и женскими'); $table->json('division3')->comment('json с двумя записями, соответственно мужскими и женскими'); $table->json('division4')->comment('json с двумя записями, соответственно мужскими и женскими'); $table->json('division0')->comment('json с двумя записями, соответственно мужскими и женскими'); $таблица->временные метки(); }); } ниже приведено изображение таблицы результатов:

Пример вставки в базу данных будет выглядеть так
DB::table('csee')->insert([ 'school_id' => 1, 'год' => 2023, 'division1' => json_encode([4, 6]), // 4 мужчины, 6 женщин 'division2' => json_encode([5, 7]), // 5 мужчин, 7 женщин 'division3' => json_encode([6, 8]), // 6 мужчин, 8 женщин 'division4' => json_encode([7, 9]), // 7 мужчин, 9 женщин 'division0' => json_encode([8, 10]), // 8 мужчин, 10 женщин 'create_at' => сейчас(), 'updated_at' => сейчас(), ]);
Мобильная версия