Задать вопрос
@Leopandro
Разработчик CRM/ERP систем

Какие таблицы в бд таких сайтов как Avito, Vk, Baidu, Facebook и т.д?

Вопрос задал перед тем как писать базу для большого количества пользователей и заказов( сайт будет типа авито на другого направления, определенного). Стоит ли мне использовать вместо такой привычной таблицы
User:
  1. id
  2. username
  3. password_hash
  4. full_name
  5. и т.д


Использовать такую:

User
  1. Id


User_name
  1. user_Id
  2. user_name


User_name
  1. user_id
  2. user_name


User_password_hash
  1. user_id
  2. user_password_hash
?
И как будет отличаться производительность в лучшую или худшую.

Просто я еще никогда не писал проекты на такую базу.
  • Вопрос задан
  • 405 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
В Вашем конкретном случае - ответ нет.
Начинать нужно всегда с 3НФ, т.е с
User:
id
username
password_hash
full_name
и т.д


Уже потом по мере роста проекта будете заниматься денормализацией
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Вы можете ваять что вашей душе угодно. К примеру вынести сущности авторизации и аутентификации в отдельные сущности из таблицы user. Различные свойства, будь-то имя, возраст и прочее можно хранить в формате user_id,property_id,value и тогда добавление новых свойств не потребует перестройки структуры таблицы.
Ответ написан
Комментировать
t-alexashka
@t-alexashka
Сразу пишу legacy код
Дмитрий Ковальский правильно говорит. Более того второй пример структуры в вашем вопросе - это уж слишком. Сами в итоге запутаетесь. Для крупного проекта вам в любом случае придется еще промежуточные варианты делать, переделывать, иногда полностью с нуля. Это нормальный процесс для всех крупных проектов. Все слабые места будут видны в процессе использования под нагрузками, без этого никак.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Почитайте про 6 нормальных форм баз данных.
В Вашем примере, хранить имена пользователей отдельно от самих пользователей будет логично, если у пользователя может быть много имен, либо у имени может быть много пользователей, если это не так, и у одного пользователя, одно имя, то правильней их хранить в одной таблице.
Ответ написан
Комментировать
@shagguboy
в баду шардинг. они каждого пользователя на своем физическом серваке держат
Ответ написан
Комментировать
@LiguidCool
Зачем такое разделение? У пользователя с одним id может быть несколько имён? Или парочка паролей. Родился в разные года одновременно?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы