Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Каталог в CMS |
Автор: Truniger 24.4.2013, 22:41 |
Здравствуйте! В веб программировании я совсем не давно, сейчас занимаюсь написанием CMS для каталога с платным скачиванием (продажа файлов), по сути это мой первый проект веб что касается именно программирования, поэтому я учусь прямо походу. Использую объектно ориентированное программирование php+mysql (с языком тоже знакомлюсь впервые, поэтому прошу извинить за глупые вопрос, если таковые будут ![]() PS:Извините если непонятно объясняю, заранее спасибо! ![]() |
Автор: Arantir 24.4.2013, 23:10 |
Почитайте о том, что такое https://www.google.com.ua/search?q=%D1%80%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F+%D0%B1%D0%B4&aq=f&oq=%D1%80%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F+%D0%B1%D0%B4&aqs=chrome.0.57j62l2.3281j0&sourceid=chrome&ie=UTF-8. А mysql именно такая. Вложенные категории создаются просто. Делается таблица со столбцами "категория" и "родитель" (родительская категория). При выборке с указанием конкретного родителя вы получите все подкатегории для указанной. А для корневых категорий просто используется некое особое значение (пустая ячейка, NULL, -1 и т.п.) Структура реляционных БД, обычно, сама по себе не отображает объектной модели того, что в ней содержится. Связи получаются косвенными. Реальную структуру, обычно, отображают ORM (объектная модель на каком-то языке программирования, набор классов, полей и методов, отображающий взаимодействия объектов, содержащихся в БД). ORM не является обязательной при разработке. Если разработчик знает структуру БД, то может реализовать все нужные запросы напрямую. |
Автор: Truniger 25.4.2013, 11:09 | ||
То есть я так понял ORM это какое дополнительное ПО которое упрощает работу с БД? |
Автор: Arantir 25.4.2013, 12:35 |
ORM — это просто представление БД в виде классов (как если бы данные из БД были объектами в вашей программе). Встроенные возможности формирования запросов у существующих ORM-библиотек ограничены. Реляционность БД позволяет осуществить многие действия намного эффективнее, чем это бы делалось с объектной точки зрения. Зачастую разработчик сам реализует некоторое запросы. ORM — только обертка. Распространенный прием в ООП. Вы просто инкапсулируете некие операции в классе (наборе классов). Программа теперь может пользоваться этими классами и ей абсолютно все равно, что именно у них внутри. Но лучше сразу в ORM не вдавайтесь. Разберитесь с созданием БД в mysql. На самом деле это довольно просто. Я привел ORM просто как пример, а не как совет того, с чего стоит начинать. Я чего вообще про ORM... Вот Вы написали Это верно с объектной точки зрения. У вас есть класс Категория и в нем есть поле подкатегории. И в этом поле содержатся объекты того же класса Категория. Но при создании реляционной структуры БД надо делать акцент на отношениях между объектами. Ход мыслей примерно такой: Категории — просто объекты. Можно просто сделать таблицу с (id, имя_категории). Подкатеории связаны с категорией тем, какая категория для подкатегории есть родительской. Можно сделать таблицу (id, родитель, имя_категории). И катеории и подкатегории по сути являются одинаковыми объектами. Просто у категорий нет родителей, а у подкатегорий есть. Значит можно сделать одну таблицу (id, родитель, имя_категории) и просто не указывать родителя корневым категориям. |
Автор: Truniger 25.4.2013, 12:50 | ||
А, вот теперь я кажется вас понял, то есть в БД что категории что подкатегории являются одинаковыми объектами - таблицами, а каталог это просто грамотно выстроенные "взаимоотношения" между ними? Ну теперь конечно надо это реализовать, с моим знанием языка это будет трудновато, но нечего, главное смысл я уловил, большое спасибо ![]() |