Я разрабатываю систему, в которой есть база данных для хранения пользователей и информации, связанной с пользователями. Более конкретно, каждый пользователь в таблице имеет очень мало информации. Что-то вроде Имя, пароль, uid.Базовый дизайн и сложность базы данных
Тогда у каждого пользователя есть ноль или более контейнеров, и так, как я изначально сделал это, нужно создать вторую таблицу в базе данных, которая содержит контейнеры и имеет поле, ссылающееся на пользователя, владеющего им. Так что-то вроде containerName, содержание, владелец.
Так запрос данных из контейнера будет выглядеть примерно так:
SELECT content
FROM containers
WHERE (containerName='someContainer' AND owner='someOwner');
Мой вопрос, если это хороший способ, я имею в виду масштабируемость сказать, что у нас есть тысячи пользователей с ... скажем По 5 контейнеров (однако каждый пользователь может иметь различное количество контейнеров, но 5, вероятно, будет типичным случаем). Моя забота заключается в том, что поиск через базу данных будет медленным, когда есть 5 записей из 5 * 1000 записей, которые я мог бы использовать в одном запросе. (Обычно нам может понадобиться только конкретный контент контейнера из нашего запроса, и мы изучаем базу данных, в основном накладные расходы на 4995 записей, правильно? И что произойдет, если я подписал миллион пользователей, это станет огромной таблицей, которая просто интуитивно чувствую себя плохой идеей.
Второе занятие, которое у меня было, было бы иметь таблицы на пользователя, однако это не очень хорошее решение, так как это дало бы мне 1000 таблиц в базе данных, (также интуицией) кажется плохой способ сделать это.
Любая помощь в понимании того, как проектировать это было бы весьма признателен, я надеюсь, что все ясно и легко следовать.
Будете ли вы иметь все контейнеры уникальными? Или это будет 20-30 контейнеров, которые будут доступны для всех пользователей? – vyegorov
Хмм .. Каждая пара пользователь-контейнер уникальна, но у разных пользователей может быть экземпляр «того же контейнера». Таким образом, содержание userA-containerA отличается от содержимого userB-containerA, имеет смысл? – qrikko
Затем вы должны создать отдельную таблицу для контейнеров, используйте 'container_id' в таблице' content' и соедините 3 таблицы. Это будет работать намного быстрее и займет меньше места. – vyegorov