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

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

Время на прочтение 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.
Теги:
Хабы:
+1
Комментарии 27
Комментарии Комментарии 27

Публикации

Истории

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн