Я хочу, чтобы его имя было адресом страницы. Например, если страница имеет заголовок «Некоторая страница», то ее адрес должен быть http://somesite/some_page/. «some_page» -name, генерируемое системой автоматически. «some_page» - это уникальный идентификатор страницы. Проблема в том, что пользователь в будущем может ввести имя, которое уже существует, что приведет к ошибке.URL-адрес страницы и организация базы данных
Необходимо найти оптимальный вариант решения проблемы для больших объемов данных.
Я решил проблему следующим образом: Идентификатор страницы в базе данных - это имя страницы и суффикс, который по умолчанию равен нулю. При добавлении страницы есть проверка на существование. Если такой страницы не существует, суффикс равен 0, а его имя - «some_page», если страница существует, - поиск максимального количества суффикса и суффикса = суффикс + 1 и название страницы становятся «some_page_1».
Для этого я создаю в базе данных ключа соединения из полей «суффиксом» и «ИмяСтраницы»:
Table Pages
suffix|pageName |pageTitle
0 |some_page |Some Page
1 |some_page |Some Page
0 |other_page|Other Page
Добавление страниц происходит через хранимые процедуры:
CREATE PROCEDURE addPage (pageNameVal VARCHAR(100), pageTitleVal VARCHAR(100))
BEGIN
DECLARE v INT DEFAULT 0;
SELECT MAX(suffix) FROM pages WHERE pageName=pageNameVal INTO v;
IF v >= 0 THEN
SET v = v + 1;
ELSE
SET v = 0;
END IF;
INSERT INTO pages (suffix, pageName) VALUES (pageNameVal, v, pageTitleVal);
END;
Есть ли более лучшие решения?
Вы пробовали посмотреть .htaccess? Вам не нужно так доходить, чтобы создавать страницы таким образом: \ – Tim
, когда вы выбираете данные назад, как вы узнаете, нужна ли вам 'some_page_1' или' some_page_2' ??? –
KM, если мне нужно some_page_2, я выберу страницуName = 'some_page' AND suffix = 2. Тим, почему? – shurik2533