Типы данных MySQL? - PullRequest
       9

Типы данных MySQL?

1 голос
/ 02 сентября 2010

Я проектирую базу данных в MySQL и PHP для базовой CMS. CMS будет иметь внешний интерфейс, который позволит сортировать и искать. Бэкэнд позволит авторизованным пользователям загружать файлы.

Я использую PHPMyAdmin и мне нужна помощь в настройке моей базы данных.

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

Ниже приведен список того, что я хотел бы. Чего не хватает и какие типы данных мне нужно использовать?

Ресурсы (Для моих файлов)

  • file_id
  • filename (файлы предварительно отсортированы, а отображаемые имена и пути получены отсюда.)
  • file_type (PDF | АУДИО | ВИДЕО | ФОТО [Также используется для создания файла URLs])
  • дата загрузки (отметка времени в PHP или MySQL)
  • uploaded_by (идентификатор пользователя из таблицы Users)
  • событие (event_id из таблицы событий, необязательно)

Пользователи (учетные записи пользователей - для доступа администратора и, возможно, списка уведомлений)

  • user_id
  • first_name
  • last_name
  • Адрес электронной почты
  • пароль
  • номер телефона (необязательно)
  • permissions_level (только для чтения, загрузка)
  • CREATION_DATE * * тысяча пятьдесят-один

События

  • event_id
  • event_name
  • event_location
  • event_date
  • event_description
  • entry_date

Ответы [ 3 ]

2 голосов
/ 02 сентября 2010

Что бы я взял:

Ресурсы (для моих файлов)

  • file_id INT (или SMALLINT в зависимости от количества ожидаемых записей)
  • имя файла VARCHAR (или текст, если он длиннее 255 символов)
  • file_type ENUM (если только те, которые вы упомянули, или VARCHAR, если можно добавить динамические типы)
  • загрузить DATE DATETIME (или DATE, если вам не нужно время)
  • uploaded_by INT (или SMALLINT, но так же, как в пользовательской таблице)
  • событие INT (или SMALLINT, но так же, как в таблице событий)

Пользователи (учетные записи пользователей - для доступа администратора и, возможно, списка уведомлений)

  • user_id INT (или SMALLINT в зависимости от количества ожидаемых записей)
  • first_name VARCHAR
  • фамилия VARCHAR
  • электронная почта VARCHAR
  • пароль CHAR (40) (для хэша SHA1)
  • phone_number VARCHAR (так как он может содержать что-то вроде -, / или +)
  • permissions_level TINYINT (если только числовые значения и максимум 127 значений)
  • creation_DATE DATETIME (или DATE, если вам не нужно время)

События

  • event_id INT (или SMALLINT в зависимости от количества ожидаемых записей)
  • event_name VARCHAR
  • event_location VARCHAR
  • event_DATE DATETIME (или DATE, если вам не нужно время)
  • event_description TEXT (так как 255 из VARCHAR может быть коротким)
  • entry_DATE DATETIME (или DATE, если вам не нужно время)

Когда вы настроите свою базу данных и введете несколько фиктивных данных, вы можете запустить через phpmyadmin простой оператор, который скажет вам, что MySQL примет для этих точных фиктивных данных:

SELECT * FROM events PROCEDURE ANALYSE()

В столбце Optimal_fieldtype вы найдете то, что MySQL говорит вам принять. Но вы не должны принимать именно этот тип поля. Очень часто вам будет предложено принять ENUM, но в большинстве случаев вы будете добавлять случайные данные, поэтому вам придется использовать VARCHAR, в этом случае столбец Max_length даст вам подсказку о том, как долго это должно быть. Но во всех полях VARCHAR вы должны добавить дополнительное пространство в зависимости от того, как долго вы ожидаете значения. Примите во внимание, что даже имя может быть длиннее 50 символов.

1 голос
/ 02 сентября 2010

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

0 голосов
/ 02 сентября 2010

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

Что касается типов данных для того, что у вас есть

  • Поля идентификатора должны быть INT или BIGINT (зависит от того, насколько большим может стать ваше приложение) и должны быть установлены как PRIMARY KEY.

  • Имена должны быть varchar как долго вы хотите, это зависит от ваших требований. Как правило, имена первых / списков состоят максимум из 25-30 символов. Имена событий могут быть до 250, в зависимости от ваших требований.

  • Местоположение будет похоже на название VARCHAR где-то около 50-150, в зависимости от ваших требований.

  • Дата должна быть в поле DATETIME.

  • Описание должно быть полем VARCHAR(250) или TEXT.

  • Разрешения действительно зависят от того, как вы хотите справиться с этим. Это может быть INT или VARCHAR (если вы хотите сериализовать массив).

  • Номер телефона может быть INT (если вы хотите удалить все нечисловые символы и отформатировать его по-своему) или VARCHAR(15), если вы не хотите удалять символы

  • E-mail должен быть VARCHAR(250).

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

EDIT

И если вы хотите узнать полную информацию о различных типах данных MySQL, прочитайте руководство: http://dev.mysql.com/doc/refman/5.0/en/data-types.html

...