Pull to refresh

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

Reading time1 min
Views1.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.
Tags:
Hubs:
Total votes 19: ↑10 and ↓9+1
Comments27

Articles