Дизайн таблицы базы данных - PullRequest
2 голосов
/ 14 июля 2010

У меня проблема с выбором типов переменных для таблицы базы данных.Может ли кто-нибудь дать мне несколько общих указаний о том, как выбирать типы?Ниже приведены некоторые из моих вопросов:

  1. Каким должен быть идентификатор пользователя?INT кажется маленьким, так как дизайн должен учитывать большое количество пользователей.Так что, если не INT, что еще?BIGINT?VARCHAR?Разве я не думаю прямо?

  2. Когда я должен выбрать varchar и text и tinytext, binary?

Я искал в Интернете и не нашел никаких полезных ссылок.Может ли кто-нибудь указать мне правильное направление?Может быть, мне нужно прочитать книгу.

Ответы [ 3 ]

5 голосов
/ 14 июля 2010

Обновление за 2013 год : в Интернете теперь примерно такое же количество пользователей, что и у 32-разрядного целого числа со знаком. Facebook имеет около миллиарда пользователей. Так что, если вы планируете стать следующим Google или Facebook, и у вас определенно не будет времени на реинжиниринг между этими моментами, переходите к чему-то большему. В противном случае придерживайтесь того, что легко.

По состоянию на 2010 г .:

Инт кажется маленьким? Вы ожидаете иметь 2 147 483 648 пользователей? (Кстати, это примерно 1 из 3 человек в мире, или на 400 миллионов больше, чем общее количество людей, использующих Интернет; или в 5 с половиной раз больше пользователей, чем Facebook).

Ответ: используйте int. Не думай об этом. Если вы попадаете в ситуацию, когда 32-разрядное целое число просто не подходит вам для нашего старого друга, у вас, вероятно, также будет штат выпускников колледжа гений и капитальный вливание в 5 млрд. Долларов, чтобы помочь решить эту проблему.

1 голос
/ 14 июля 2010

Ваше поле username, вероятно, должно быть varchar (вы выбираете длину).Если у вас есть id_user в таблице user, я согласен с приведенными выше ответами, что int (2 миллиарда) более чем удовлетворительно покроет ваши потребности.

Что касается буквенно-цифровых типов данных,это зависит от того, как долго вы хотите, чтобы это было.Например, я думаю, что varchar(255) или, возможно, даже меньше (лично я бы пошел с 50), будет работать для поля username и password. Эта таблица может помочь вам .

Binary для хранения не символьных данных, таких как изображения.bit может использоваться для логических значений.

Пара других полезных типов: uniqueidentifier для UUID / GUID и xml для XML.Хотя вы также можете использовать varchar или текстовые типы для них.

Также есть nvarchar для Unicode в SQL Server и нескольких типов дат (я рад, что они вышли с date в SQL Server2008, который не включает время, такое как smalldatetime).

1 голос
/ 14 июля 2010

Я бы на самом деле сделал идентификатор пользователя символьным типом, так как я бы предпочел войти как «pax», а не 14860. Однако, если он должен быть числовым (например, если вы хотите, чтобы имя было легко изменено или вы хотитечтобы минимизировать хранение внешних ключей для пользовательской таблицы), целое число должно быть в порядке.Сколько пользователей вы ожидаете иметь?: -)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...