MySQL Database Design - Поместите эти поля в таблицу Users или создайте новую таблицу? - PullRequest
0 голосов
/ 30 декабря 2011

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

Социальные сети

id - user_id - facebook - twitter_username - display_tweets

НекоторыеБыстрые вопросы:

  • Поле Facebook - это просто да или нет, чтобы увидеть, есть ли они, поэтому я знаю, отображать ли значок.Должно ли это быть просто перечисление 0 или 1?и 1 означает, что они есть.
  • То же самое с display_tweets, должно ли это быть просто перечисление 0 или 1?

И тогда главный вопрос заключается в том, должен ли я просто хранить их в таблице пользователей?Поэтому я бы просто добавил 3 поля: facebook, twitter_username и display_tweets.Кроме того, некоторые могут не иметь ни Facebook, ни Twitter.В таблице пользователей уже есть поля 20 , поэтому я не хочу, чтобы она была слишком большой.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

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

Размещение вещей в большем количестве таблиц просто создает большеусилия.Ранее я создавал таблицы с более чем 50 столбцами (должным образом нормализовано - во всех 50 столбцах хранятся различные элементы данных).

Вероятно, целесообразно разрешить значения NULL, если столбцы не обязательно относятся к каждому пользователю.«Магические ценности» не очень хорошая идея (я видел, что «» или -1 достаточно часто используется как «магическое значение»).

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

Вы хотите тип bit для любого логического поля. Вы также можете использовать bool или boolean, но это псевдонимы для tinyint(1), как и bit. Не используйте enum, так как он вставляет пустую строку при вводе недопустимой записи, а не генерирует исключение.

...