seine
Новичок
Организация страниц на сайте
Привет, решил написать собственный блог, есть время и желание.
На блоге могут быть как статьи, так и простые страницы.
Разница между ними небольшая, упрощенно можно сказать так: страница имеет название (то, что отображается в адресной строке, например "dogs_for_food"), заголовок (например, "еда для собак"), id родителя и контент, а статья плюс к этому имеет еще аннотацию, дату добавления и дату модификации.
Страница - это, например, главная страница сайта или страница с картой сайта, а статья - это страница, где основная роль отводится некоторому котненту.
Сначала я не делал отличий между статьей и страницей, у меня была таблица pages, где хранилась вся информация о страницах. Когда я решил, что надо выделить статью как отдельную сущность, то посчитал, что статья не будет потомком страницы, а будет ее братом, т.е. у них будет один общий родитель - place. Это абстрактное понятие, я не имею ввиду, что решил сделать класс place, а классы page и article сделать его потомками, все это пока некая абстракция.
Мне показалось, что наилучшая организация бд в этом случае будет следующей:
таблица places, хранит имя плэйса (по сути имя страницы или статьи), заголовок плэйса, id родительского плэйса и название таблицы, где искать продолжение ("pages" - для страниц и "articles" - для статей)
Сорри, что использую тут такое страшное слово как "плэйс", просто надо как-то обозначить сущность, которая не является ни страницей, ни статьей, но их предком.
Итак, выходит, что таблица places хранит в себе всю информацию о структуре сайта.
А вот таблицы pages и articles хранят информацию о стрнице или статье примерно такую: контент, аннотацию, дату добавления и т.д.
В этом случае, когда пользователь хочет попасть на страницу, например example.com/dogs/food, то сначала надо обратится к таблице places, убедится, что есть страница с именем dogs в корне сайта, потом опять обратится к таблице places, и убедится, что на странице dogs есть страница с именем food, затем определить откуда брать контент для этой страницы, взять контент и вернуть его.
Я не уверен, что стоило использовать сущность place, ведь можно было бы просто посчитать статью потомком страницы.
Зачем я все это описывал? Потому что мне кажется, что я неправильно организовал отношения между страницами и статьями, опыта у меня мало и хочется услышать опытных разработчиков, как бы они постпулили или как они поступали в похожих ситуациях.
Мне интересно, насколько разумно такое разделение статей и страниц.
Вообще-то это только половина вопроса, но я не стал писать все за один раз, чтоб не смущать обилием букв.
Если окажется, что такая модель имеет право быть, то я приведу код и напишу, о проблемах, с которыми столкунлся.
Привет, решил написать собственный блог, есть время и желание.
На блоге могут быть как статьи, так и простые страницы.
Разница между ними небольшая, упрощенно можно сказать так: страница имеет название (то, что отображается в адресной строке, например "dogs_for_food"), заголовок (например, "еда для собак"), id родителя и контент, а статья плюс к этому имеет еще аннотацию, дату добавления и дату модификации.
Страница - это, например, главная страница сайта или страница с картой сайта, а статья - это страница, где основная роль отводится некоторому котненту.
Сначала я не делал отличий между статьей и страницей, у меня была таблица pages, где хранилась вся информация о страницах. Когда я решил, что надо выделить статью как отдельную сущность, то посчитал, что статья не будет потомком страницы, а будет ее братом, т.е. у них будет один общий родитель - place. Это абстрактное понятие, я не имею ввиду, что решил сделать класс place, а классы page и article сделать его потомками, все это пока некая абстракция.
Мне показалось, что наилучшая организация бд в этом случае будет следующей:
таблица places, хранит имя плэйса (по сути имя страницы или статьи), заголовок плэйса, id родительского плэйса и название таблицы, где искать продолжение ("pages" - для страниц и "articles" - для статей)
Сорри, что использую тут такое страшное слово как "плэйс", просто надо как-то обозначить сущность, которая не является ни страницей, ни статьей, но их предком.
Итак, выходит, что таблица places хранит в себе всю информацию о структуре сайта.
А вот таблицы pages и articles хранят информацию о стрнице или статье примерно такую: контент, аннотацию, дату добавления и т.д.
В этом случае, когда пользователь хочет попасть на страницу, например example.com/dogs/food, то сначала надо обратится к таблице places, убедится, что есть страница с именем dogs в корне сайта, потом опять обратится к таблице places, и убедится, что на странице dogs есть страница с именем food, затем определить откуда брать контент для этой страницы, взять контент и вернуть его.
Я не уверен, что стоило использовать сущность place, ведь можно было бы просто посчитать статью потомком страницы.
Зачем я все это описывал? Потому что мне кажется, что я неправильно организовал отношения между страницами и статьями, опыта у меня мало и хочется услышать опытных разработчиков, как бы они постпулили или как они поступали в похожих ситуациях.
Мне интересно, насколько разумно такое разделение статей и страниц.
Вообще-то это только половина вопроса, но я не стал писать все за один раз, чтоб не смущать обилием букв.
Если окажется, что такая модель имеет право быть, то я приведу код и напишу, о проблемах, с которыми столкунлся.