Допустим, вам необходимо сделать таблицу БД со списком адресов. Причем, каждый сайт должен упоминаться только один раз. Очень распространенная задача, взять, хотя бы, каталоги сайтов.
Сайт можно идентифицировать по имени домена. Если бы мы жили в идеальном мире, то на этом месте мой пост бы и закончился. :) Но, тут всё только начинается…
Большинство сайтов доступны (отдается HTML или происходит редирект) по двум адресам: example.com и www.еxample.com. В почти идеальном мире :) мы бы просто отбросили “www.” и забили на эту проблему. Но находятся некоторые криворукие личности, которые обеспечивают работу своего сайта только по одному адресу, “только с www.”.
Решение проблемы такое:
Мы отделяем частицу “www.” и храним её отдельно, все равно смысловой нагрузки она никакой не несет. Зато теперь по нормальному имени домена можно сделать уникальный индекс.
Чтобы сделать выборку по такой таблице, можно создать отображение (VIEW), а можно просто добавить оператор CONCAT в SELECT:
З.Ы. “www.” — это архаизм, это неудобно и непрактично. Давайте обойдемся без дискуссий на эту тему. ;)
З.Ы.Ы. А ещё я когда-то писал о том, как лучше сделать редирект для своего сайта с «www.» на обычную версию: Tips&Tricks.
Сайт можно идентифицировать по имени домена. Если бы мы жили в идеальном мире, то на этом месте мой пост бы и закончился. :) Но, тут всё только начинается…
Большинство сайтов доступны (отдается 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.