MySQL - когда добавлять новые строки в пользовательскую таблицу и когда создавать новую таблицу? - PullRequest
1 голос
/ 19 декабря 2011

Итак, я создаю базу данных, и у меня есть несколько вопросов, потому что я не слишком уверен, лучше ли просто добавить это в таблицу пользователей или создать для нее новую таблицу.

Итак, моя таблица пользователей имеет следующие поля:

id, shop_name, address, city, state, zip_code, email_address, username, password, last_login, forgot_password

Итак, это основы каждого магазина. Теперь мне нужно добавить 3 поля:

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

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

Это правильно? Или было бы лучше добавить таблицу с именем colors и лучше иметь id, primary, second, user_id?

Какие плюсы и минусы? Спасибо!

Редактировать : Так, например, если я хочу добавить место для "лозунгов", но не у каждого магазина будет лозунг, будет ли уместно создать новую таблицу для лозунгов, и если магазин делает решили создать свой собственный, тогда он будет добавлять его в таблицу?

Я просто хочу посмотреть, правильно ли я понимаю.

Ответы [ 2 ]

4 голосов
/ 19 декабря 2011

Как профессионал - вы разделяете некоторые сущности - users и user_colors

Минусы:

  • каждый раз, когда вам нужно получить доступ к пользователю и его цветам, вы должны выполнить объединение
  • также, каждый раз, когда новый пользователь вставляется, вы должны вставить в 2 таблицы (это должно быть сделано в транзакции)
  • каждый раз, когда пользовательский цвет изменяется, вы должны сначала найти user_id, а затем обновить в таблице цветов, в противном случае вы можете просто обновить пользовательскую таблицу с помощью простого выражения where

Я бы пошел за одним столом

1 голос
/ 19 декабря 2011

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

Что касается слоганов, снова просто добавьте это в таблицу пользователей. Если у них есть слоган, добавьте его в поле, если они не оставили его пустым. Если бы у пользователя было несколько лозунгов, то, возможно, тогда это будет в отдельной таблице.

Возможно, ознакомьтесь с database normalisation, поскольку это действительно помогает, когда вы не знаете, как проектировать свои базы данных.

...