Я разработчик и никогда не работал над БД до (проектирования БД). Я разрабатываю базу данных для системы управления сотрудниками, которая представляет собой приложение Node.js + Express с использованием MySQL в качестве базы данных.Нужна помощь в разработке схемы базы данных для приложения SaaS
У меня уже есть необходимые таблицы, отсортированные по столбцам, но есть еще мало неизвестных, с которыми я имею дело. Это мой план, и мне нужен ваш вклад.
Конечные пользователи, использующие это приложение, будут небольшими компаниями среднего размера. Компании не будут делиться таблицами в базе данных. Поэтому, если есть таблица с именем EmployeeCases, я планирую создать новую таблицу EmployeeCases для каждой существующей компании или новую, которая зарегистрируется для этого приложения. Я планирую назвать таблицу EmployeeCases_989809890, где «989809890» будет идентификатором компании (или идентификатором клиента). Поэтому, если у нас есть 3-4 компании, которые зарегистрировались для нас, тогда все таблицы (по крайней мере, те, которые использует компания) будут воссозданы и названы TableName_CompanyId. Мои вопросы, это хороший способ пойти? Есть ли способ лучше?
Все данные сотрудника хранятся в таблице Employee, включая их логин и пароль. Теперь каждая таблица Employee в БД будет называться Employee_CompanyId (согласно моему плану выше). Мой вопрос заключается в том, когда сотрудник регистрируется, как я узнаю, к какой таблице Employee необходимо выполнить запрос? Или мне нужно удалить логин из таблицы Employee и создать универсальную таблицу «Пользователи», где будут храниться все сотрудники? Таблица Users также будет иметь CompanyId как один из ее столбцов, и я буду читать CompanyId оттуда, который будет использоваться для запроса других таблиц.
Любые ссылки, веб-сайты или блоги на этот тип дизайна будут оценены.
Спасибо.
Итак, я изначально собирался с планом B. Я планирую разместить приложение node.js на Heroku и назначить настраиваемый домен на основе названия компании. Поскольку мы можем подключить репозиторий GitHub к приложению Heroku, я создам новый репозиторий для каждого клиента. – codeinprogress
Возможно, вы захотите изучить автоматизацию создания новых клиентов в вашей системе. Чем больше я думаю об этом, тем больше Plan B подходит для такого проекта. – mgadrat
Да, я тоже. Дело в том, что с планом B стоимость базы данных распределяется среди моих клиентов + их данные отделены друг от друга, используя отдельные таблицы для каждого клиента. – codeinprogress