Новый взгляд на старые вещи

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 22 Май, 2012, 06:58:01

Страниц: [1] 2 3 4
Печать
Автор Тема: ЧПУ и структура БД  (Прочитано 3646 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sap    ↓ 
29 Август, 2008, 03:07:57
НЕ ХУЕТА! ХУЕТА!

Группа: Жмурики

Карма: 40
Сообщений: 2697
Сила слова: 1.48

Возьмем банальный пример — новости. Условие — урл новости должен выглядеть следующим образом:
Text
http://example.com/news/news-about-something

Возникает вопрос, какой оптимальный вариант структуры таблицы новостей?
 
1. id INT(11) PRIMARY KEY | key VARCHAR(255) UNIQUE | ...
Но если ulr (news-about-something) уникальный, зачем нужен id?
 
2. key VARCHAR(255) PRIMARY KEY | ...
То есть используем news-about-something как праймари.
 
Но, при мультиязычности придется делать связи, чего не пришлось бы делать в первом варианте, если добавить поле lang.
 
3. Еще видел вариант, где участвует и id, и key.
Text
http://example.com/news/12-news-about-something

Но это, по сути, первый вариант.
 
Вобщем, как лучше? :)
Записан

adw0rd    ↓ 
29 Август, 2008, 03:17:50 , спустя 9 минут 53 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17610
Сила слова: 1.67

sap, используй первый вариант, так как int дешевле varchar. И при нормализованной структуре БД - получишь заметный выигрыш.
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
adw0rd    ↓ 
29 Август, 2008, 03:21:43 , спустя 3 минуты 53 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17610
Сила слова: 1.67

Но, при мультиязычности придется делать связи, чего не пришлось бы делать в первом варианте, если добавить поле lang.
Не понял... В любом случае ты можешь делать связи... Но можешь и не делать. Короче, немного недопонял тебя наверное.
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
sap    ↓ 
29 Август, 2008, 12:11:02 , спустя 8 часов 49 минут 19 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Жмурики

Карма: 40
Сообщений: 2697
Сила слова: 1.48


Но, при мультиязычности придется делать связи, чего не пришлось бы делать в первом варианте, если добавить поле lang.
Не понял... В любом случае ты можешь делать связи... Но можешь и не делать. Короче, немного недопонял тебя наверное.
Я о симметричности разных языковых версий. Т.е. чтобы с /ru/news/news-about-something попадать на /en/news/news-about-something и все было ок :)
 
id INT(11) PRIMARY KEY | key VARCHAR(255) | lang VARCHAR(2) | ...
SELECT * FROM `table` WHERE `key`="news-about-something" AND `lang`="ru" LIMIT 1
 
Только тут придется движком проверять, чтобы не было дублей в паре key | lang.
 
Если идет второй вариант, то там вообще запара будет.
 
так как int дешевле varchar. И при нормализованной структуре БД - получишь заметный выигрыш.
Ээ... но запрос ведь все равно идет по варчару. В урле же варчар, инт ид нигде практически не используется.
Записан

CTAPbIu_MABP    ↓ 
29 Август, 2008, 12:18:30 , спустя 7 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

поддерживаю adw0rd'а
сам сначала сделел вторым вариантом, а когда начал добавлять всякие прикрепленнве файлы каменты и рейтинги понял что ошибся, пришлось все переписывать
 
чтобы не было дублей в паре key | lang
поставь UNIQUE на два поля
« Последнее редактирование: 29 Август, 2008, 12:20:43 от CTAPbIu_MABP » Записан

java.lang.OutOfMemoryError
sap    ↓ 
29 Август, 2008, 12:39:24 , спустя 20 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Жмурики

Карма: 40
Сообщений: 2697
Сила слова: 1.48

поставь UNIQUE на два поля
o_O не понял, UNIQUE можно поставить на связку полей?
 
Ну вобщем, я тоже к первому варианту склоняюсь :)
Записан

adw0rd    ↓ 
29 Август, 2008, 01:00:53 , спустя 21 минуту 29 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17610
Сила слова: 1.67

sap, http://pyha.ru/forum/topic/424.msg4892
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
CTAPbIu_MABP    ↓ 
29 Август, 2008, 01:05:14 , спустя 4 минуты 21 секунду
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

o_O не понял, UNIQUE можно поставить на связку полей?
попробуй
Записан

java.lang.OutOfMemoryError
sap    ↓ 
29 Август, 2008, 01:12:46 , спустя 7 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Жмурики

Карма: 40
Сообщений: 2697
Сила слова: 1.48

О, супер :)
Записан

phpdude    ↓ 
23 Ноябрь, 2008, 12:15:29 , спустя 85 дней 12 часов 2 минуты 43 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66

а если у тебя будет юрл длиннее 255 символов? ;)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
CTAPbIu_MABP    ↓ 
23 Ноябрь, 2008, 12:16:29 , спустя 1 минуту
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

phpdude, то будет BSOD
Записан

java.lang.OutOfMemoryError
adw0rd    ↓ 
23 Ноябрь, 2008, 12:21:53 , спустя 5 минут 24 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17610
Сила слова: 1.67

phpdude, а если больше чем GET позволяет?)
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
CTAPbIu_MABP    ↓ 
23 Ноябрь, 2008, 12:47:08 , спустя 25 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

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

java.lang.OutOfMemoryError
adw0rd    ↓ 
23 Ноябрь, 2008, 12:49:53 , спустя 2 минуты 45 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17610
Сила слова: 1.67


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

я помню, однако ограничение всетаки есть ;)
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
phpdude    ↓ 
23 Ноябрь, 2008, 12:50:27 , спустя 34 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.66

это да, позволяют значительно больше. ну или простой пример - юрл - кирилическая строка. если кодировка ютф-8, то соответственно из 100 символов русских - 200 ингл)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1] 2 3 4
Печать
 

Перейти в: