Можно ли позволить пользователям создавать и выполнять миграции баз данных из формы?
Можете ли вы взять данные формы и изменить схему базы данных? Это хорошая идея? Есть ли обратная сторона для многих миграций из базы данных "по умолчанию"?
Я хочу, чтобы пользователи могли добавлять / удалять таблицы, столбцы и строки. Для внесения изменений в схему требуются миграции, поэтому для добавления этих функций потребуется написание представления, которое берет данные формы и вставляет их в функцию, которая затем использует Flask-Migrate.
Если мне удастся построить это, не будут ли миграции создавать требуемые отдельные сценарии и все, что с этим связано, каждый раз, когда что-то добавляется или удаляется? Это практично для чего-то подобного, когда 10 или 20 новых таблиц могут быть добавлены в исходную базу данных?
Если я позволю пользователям добавлять столбцы в таблицу, ему придется изменить класс таблицы. Это возможно или безопасная идея? Если нет, я был бы признателен, если бы кто-нибудь мог мне помочь и, по крайней мере, указать мне правильное направление.
1 ответ
В типичном веб-приложении развернутая база данных не меняет свою схему во время выполнения. Схема изменяется только во время обновления, и только разработчики вносят эти изменения. Операции, которые пользователи выполняют над приложением, могут добавлять, удалять или изменять строки, но не изменять сами таблицы или столбцы.
Если вам нужно предложить своим пользователям способ добавления гибких структур данных, то вам следует разработать схему базы данных таким образом, чтобы это было возможно. Например, если вы хотите, чтобы ваши пользователи добавляли пользовательские пары ключ / значение, у вас может быть таблица со столбцами user_id
, key_name
а также value
, Вы также можете выяснить, подходит ли база данных без схемы к вашим потребностям.