Как стать автором
Обновить

Список уникальных адресов сайтов

Время на прочтение1 мин
Количество просмотров1.1K
Допустим, вам необходимо сделать таблицу БД со списком адресов. Причем, каждый сайт должен упоминаться только один раз. Очень распространенная задача, взять, хотя бы, каталоги сайтов.

Сайт можно идентифицировать по имени домена. Если бы мы жили в идеальном мире, то на этом месте мой пост бы и закончился. :) Но, тут всё только начинается…

Большинство сайтов доступны (отдается HTML или происходит редирект) по двум адресам: example.com и www.еxample.com. В почти идеальном мире :) мы бы просто отбросили “www.” и забили на эту проблему. Но находятся некоторые криворукие личности, которые обеспечивают работу своего сайта только по одному адресу, “только с www.”.

Решение проблемы такое:
CREATE TABLE test(www CHAR(4),hostname CHAR(64) NOT NULL,UNIQUE(hostname));

Мы отделяем частицу “www.” и храним её отдельно, все равно смысловой нагрузки она никакой не несет. Зато теперь по нормальному имени домена можно сделать уникальный индекс.

Чтобы сделать выборку по такой таблице, можно создать отображение (VIEW), а можно просто добавить оператор CONCAT в SELECT:
SELECT CONCAT(www,hostname) AS url FROM test;

З.Ы. “www.” — это архаизм, это неудобно и непрактично. Давайте обойдемся без дискуссий на эту тему. ;)
З.Ы.Ы. А ещё я когда-то писал о том, как лучше сделать редирект для своего сайта с «www.» на обычную версию: Tips&Tricks.
Теги:
Хабы:
Всего голосов 19: ↑10 и ↓9+1
Комментарии27

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область