Всем привет!
Мне нужно создать электронные журналы (таблицы) со следующими возможностями:
- Создание нового журнала
- Название журнала
- Создание полей
- Выбор типа для каждого поля
- Возможность связывать поле журнала с полем других журналов по определённым условиям
- И др.
- Редактирование
- Удаление
- Ведение журнала (заполнение строк)
Пока нашел два решения. Первое, создать три таблицы: журналы(id, name), поля(id, id_журнала, название, тип, и т.д), строки (id, id_журнала, json c с данными строки {id_поля:data,id_поля:data}).
Второе, каждый новый журнал, новая таблица, а свойства полей хранятся в отдельной таблице "поля" (id, name_table, name_поля, тип, и т.д.)
Подскажите какое решение лучше и почему, или может есть более хорошее решение.
Журналов может быть десятки, полей сотни, а строк десятки тысяч. А если приложения будут использовать и другие отделения, тогда журналов сотни, полей десятки тысяч, а строк миллионы. Следовательно крайне важна производительность.
Разрабатываю на Laravel + Mysql.