Перейти к содержимому



  • Закрытая тема Тема закрыта

Помогите с созданием таблиц

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 11 Март 2011 - 00:41

Здравствуйте. Создаю таблицы для сайта. Возникло много вопросов.
Для определения пола (sex) я решил создать поле типа INT с длиной 1, будет принимать значение 0 или 1 (мужик, баба).
Вообщем по скрину видно что и как. Правильно ли создана таблица, или лучше создать отдельно поле для Имени, Фамилии, Адреса, Страны, ...
db.gif

 

 

  • 0


#2 admin

admin
  • Пользователь PRO
  • 5 272 сообщений
  • Репутация: 54

Отправлено 11 Март 2011 - 10:22

Banderas, лучше и правильнее сделать так имхо:
'sex' ENUM ('0', '1') NOT NULL

  • 0

Сколько лет прошло, а ссылки всё ещё лучше покупать тут



#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Март 2011 - 23:59

Banderas,

Для определения пола (sex) я решил создать поле типа INT с длиной 1, будет принимать значение 0 или 1 (мужик, баба).

Для поля sex лучше TINYINT(1), меньше будет места занимать.
password, name, mail, address, phone лучше сделать varchar(255) - все же это не данные больших объемов.
Пароль обычно если он хранится в md5, его длина max 32 символа. ФИО пользователя не превышает 255 символов, email так же. Для адреса 255 тоже наверное хватит. Для телефона и подавно.
А вот login ты ограничил 25-ю символами. Я думаю этого достаточно, но перед занесением нужно проверять на превышение...

Правильно ли создана таблица, или лучше создать отдельно поле для Имени, Фамилии, Адреса, Страны, ...

Смотря зачем тебе эти поля нужны. Если тебе, к примеру, нужно просто выводить ФИО пользователя, то хранить конечно проще ФИО. Если тебе нужно поприветствовать пользователя по имени, есть три варианта:
  • Так же хранить ФИО, но скриптом сервера или функциями в БД разбивать данные на нужные части
  • Создать вместо ФИО -> Фамилия, Имя, Отчество
  • Создать два поля -> ФИО, Имя
admin, ты немного не уловил смысл типов полей ENUM
Их нужно использовать, когда у тебя есть ограниченный набор строковых значений. Но это не строковые поля, а каждой строковой записи в поле ENUM присваивается номер, поэтому обработка происходит быстрее.

P.s.: Работать с числами проще чем со строками... Понять просто... Числа - "012345...9" (10 знаков), строки - "abcde...xyzабвгд...ыюя$-_()&^;:<>%@#!~`..." (множество знаков огромное)
  • 0

#4 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 12 Март 2011 - 00:05

Лёха, Дима, спасибо, буду править и дорабатывать...
Нужен будет аватар, какой тип поля лучше использовать для картинки? Просто варчар в котором будет хранится ссылка на картинку?
Да и для поля URI, предназначенного для mod_rewrite, туда заносить желаемый адрес?
  • 0


#5 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 12 Март 2011 - 00:07

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


да
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Март 2011 - 00:19

Banderas, по поводу аватарки - её можно хранить как на сервере, так и в БД. Редко встречал второй способ. Но если хранить в БД, то однозначно BLOB.
Если в БД, хранить только путь до аватарки, то мне обычно хватает 255 символов, если скриптом имена для файлов свои составлять, чтобы не были длинными. Т.о. VARCHAR(255) (сейчас MySQL 5 по-моему и больше чем 255 для varchar разрешает)

Да и для поля URI, предназначенного для mod_rewrite, туда заносить желаемый адрес?

Конечно структура mod_rewrite обычно немного по другому строится, но если не обращать внимания на эстетичность использования ЧПУ, то поле лучше делать TEXT (кто знает какой вложенности будет ссылка - 255 может и не хватить)
  • 0

#7 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 12 Март 2011 - 00:24

2-й способ хранения аватарки считается не оптимальным
  • 0

#8 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 12 Март 2011 - 00:40

Ещё раз спасибо, Сёрфер, рад что подключился к моей теме :rolleyes:

Вообще с mod_rewrite никак не могу разобраться... в инете прочитал много чего, но результат почти никакого. Есть гдето хорошая документация по ЧПУ?
Я хочу создать блогосферу, для каждого пользователя создавать свою папочку ух как не хочется, это глупо... а вот если преобразовать сайт.ру/userpage.php?login=Banderas в сайт.ру/Banderas/, то было бы круто... Подскажите что и где почитать плис... пока разбираюсь с БД
  • 0


#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Март 2011 - 00:47

Banderas, я же тебе как-то давал 3 способа реализации человеко-подобных урл. Чаще всего в движках встречается роутер. Он парсит строку запроса и выделяет дальнейший путь действий. Затем отдает эти данные на обработку другому классу. Сам в эти дебри не лез, а надо бы...

Если обычный mod_rwrite в .htaccess, то все просто? При запросе _http://site.ru/account/Nikname/
RewriteEngine On

RewriteRule account/([-_0-9A-Za-z]+)/?$ userpage.php?login=$1
Что-то на подобии :rolleyes:
  • 0

#10 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 12 Март 2011 - 00:48

http://www.shtogrin....od_rewrite/doc/
вот отсюда скачай книгу http://phpfaq.ru/regexp
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru