2016-08-01 2 views
0

Iam инженер-программист (с тех пор как несколько месяцев готов к учебе), и для моей работы я разрабатываю большое масштабируемое веб-приложение. Другая фирма выполняет работу по программированию и делает базу данных за ней. Мы определили данные и отношения между ними, но не создали жесткую структуру базы данных, которую они должны использовать.Структура таблицы базы данных для больших и масштабируемых приложений

Теперь первые (внутренние) вещи являются видимыми. Я посмотрел в структуре базы данных позади пилы (по-моему) что-то странное.

Для пользователей они создали пользователей таблицы, которые содержат такие вещи, как идентификатор, адрес электронной почты и пароль. Рядом с этим они создали таблицу user_meta, содержащую идентификатор, ключ и значение.

Когда я есть пользователь с:

  • идентификатору пользователя
  • электронной
  • пароль
  • имя
  • Lastname
  • адрес
  • телефон

идентификатор, адрес электронной почты и пароль хранятся в таблице пользователя. Другая информация - это строки, созданные в таблице user_meta. Это означает, что в этом случае для 1 пользователя создано 4 строки (в нашем случае это более 20 строк для каждого пользователя). Эта структура является пользователем для каждого объекта, что должно быть сохранено в базе данных.

Я научился создавать таблицу, которая содержит все данные, необходимые для пользователя. Так что в моей логике она должна быть одна таблица с 7 полями ...


Дополнительная информация:

  • Наше программное обеспечение построить на каркасе Laravel (по моему совету)
  • Наше программное обеспечение использует База данных MySQL

Вопросы:

  • Это обычный способ создания базы данных для больших систем или что-то в этом роде, потому что я никогда не вижу этого в своем исследовании или других проектах в своей жизни.
  • Это хорошая или плохая практика?
  • По-моему, это плохо для производительности. Особенно, когда растет количество пользователей, это правда? или это можно сделать для того, чтобы добиться высокой производительности (потому что не нужно выбирать целую запись (в нашем случае мы ожидаем, что к концу 2017 года пользователи ПОЛНОСТЬЮ 100.000 пользователей будут расти быстрее и быстрее, когда наш проект пройдет. материальный шанс, что мы вырасти намного выше 1.000.000 пользователей за несколько лет)
  • Я думаю, что причина, по которой они это делают, заключается в том, что «объекты» можно изменить очень просто, но, на мой взгляд, всегда возможно добавить полей в таблицу, и вы НИКОГДА не должны удалять поля (также не тогда, когда это возможно по структуре базы данных), является ли мое мнение в этом праве?

Извините, когда вопросы «вопросы noob», но для меня это первый большой проект в моей жизни, поэтому я пропустил какой-то опыт, но стараюсь профессионально управлять проектом. Мы обсудим эту среду на встрече. На этом пути я хочу немного подготовиться к этой теме.

+0

Почему -1 в течение 5 минут? Разве я не описал мой вопрос подробно? – RoDo

+1

Я не думаю, что этот вопрос должен быть опущен. Большинство людей скажут вам, что это плохой подход, поиск * entity-attribute-value * или * one-true-lookup-table *. – dnoeth

+0

Спасибо за + so iam on 0 снова, я отредактировал свой вопрос и разместил его new :-(так что теперь у него есть копия * thumb down * извините за это ..., я буду использовать ваши ключевые слова Google, спасибо за подсказку. – RoDo

ответ

0

По-моему, это плохо для исполнения. Особенно, когда растет количество пользователей, это правда?

Номер

Существует небольшая разница в стоимости вставки/обновления, которые не будут зависеть от объема данных ранее накопленных. Затраты на приобретение для полной записи будут выше, но немного уменьшены для частичной записи. В конце концов, различия в производительности незначительны, пока запись по-прежнему разрешена в однократном обращении к БД (в отличие от множества тривиальных реализаций ORM).

Наибольшее влияние является функциональным. Не стоит пытаться добавить, скажем, атрибут для заголовка таблицы EAV, но нормализованная таблица может быть отключена в автономном режиме, в то время как таблица stresteched вмещает более широкие записи (или строки переносятся). OTOH вы не можете принудительно применять ограничение на уровне базы данных, так как каждый клиент должен иметь адрес электронной почты.

Является ли это лучше или плохая практика

Само по себе ни. Хотя не документирование проектных решений является плохой практикой.

гораздо выше 1.000.000 пользователей в течение нескольких лет

миллиона записей не много (если проект базы данных не очень плохо).

Смежные вопросы