У меня есть проект Codeigniter, который следует шаблону MVC, и он отлично работает с одной базой данных. В нашей базе данных есть несколько сущностей — приложения, пользователи и т. д. — не важно. На прошлой неделе мне поставили задачу, что нам нужна копия проекта, которая будет иметь доступ к нашей информации, но должна иметь возможность иметь свою личную информацию. Еще одно ограничение — они должны владеть своей базой данных.
Переменные - Project_1, DB_1, Project_2, DB_2, DB_Shared.
Моя идея состоит в том, чтобы создать общую базу данных, которая будет содержать большую часть информации DB_1, чтобы Project_1 и Project_2 могли получить к ней доступ, и каждый проект будет иметь свою собственную частную базу данных, к которой другой проект не будет иметь доступа.
Сейчас я нахожусь на стадии планирования - я никогда не работал с несколькими базами данных, и я думаю, что это добавляет еще один уровень сложности, потому что с самого начала я не планировал, что мой проект будет иметь несколько баз данных в будущем. Меня больше интересуют некоторые советы, как мне решить проблему, потому что кажется, что есть так много решений, но на данный момент, из-за отсутствия опыта, я не могу предвидеть проблемы, которые могут возникнуть.
Придется ли мне переписывать все вызовы БД? Поскольку у меня есть система ссылок, такая как url/controller/entity/id - id больше не является уникальным элементом, потому что сущности могут существовать в двух базах данных. Должен ли я писать поля подключения? Потому что на страницах, где я должен отображать все данные, мне нужно было бы объединить два ответа вместе, и мне нужно было бы как-то различать результаты.
для нескольких баз данных, вы читали это: stackoverflow.com/questions/8268853/…
@SofyanThayf У меня есть, но это только часть соединения.
@Quasimodo'sclone В первом абзаце я указываю, что необходимо для достижения. Нам нужна копия проекта, и нам нужно, чтобы обе копии имели доступ к одной и той же общей информации, но должны иметь только личную информацию. Итак, 1 частная БД на проект + 1 общая БД.
Также есть управление пользователями базы данных, разрешениями для базы данных, таблиц, столбцов...
Хорошо, почему бы просто не скопировать базу данных, создать нового пользователя, предоставив ему доступ к обоим? В чем проблема?
@Quasimodo'sclone Именно поэтому я задаю вопрос здесь, чтобы я мог устранить некоторые темные области в своем понимании этой проблемы.
Вы можете создать столько пользователей, сколько захотите. Каждый пользователь может иметь права на создание, вставку, обновление, выбор (, ...) в базах данных, таблицах и т.д. Вы можете точно настроить, кто что может делать.
@Quasimodo'sclone Есть сотни пользователей. У нас около 400 пользователей. 120 из них принадлежат определенной компании и решили, что им нужна собственная версия нашего инструмента. Таким образом, они хотят по-прежнему использовать нашу информацию, иметь возможность войти в оба проекта, потому что мы получаем деньги от их создания приложений, но в какой-то момент они хотят расстаться и продавать вещи, которые не имеют отношения к нам.
Это то, что делают виртуальные хостеры. Если вы арендуете хост, вы обычно получаете одну или несколько баз данных и имеете собственного пользователя базы данных. Вы получаете административные права только на свою собственную базу данных и даже не имеете прав на чтение других баз данных иностранных клиентов. dev.mysql.com/doc/refman/8.0/en/grant.html
Давайте продолжить обсуждение в чате.






Это зависит от того, чего предполагается достичь. Могут быть проекты, имеющие доступ к нескольким базам данных. Одна база данных может ссылаться на некоторую таблицу другой. Общего лучшего шаблона не существует.