![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Truniger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.11.2012 Репутация: нет Всего: нет |
Здравствуйте! В веб программировании я совсем не давно, сейчас занимаюсь написанием CMS для каталога с платным скачиванием (продажа файлов), по сути это мой первый проект веб что касается именно программирования, поэтому я учусь прямо походу. Использую объектно ориентированное программирование php+mysql (с языком тоже знакомлюсь впервые, поэтому прошу извинить за глупые вопрос, если таковые будут
![]() PS:Извините если непонятно объясняю, заранее спасибо! ![]() Это сообщение отредактировал(а) Truniger - 24.4.2013, 22:43 |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Почитайте о том, что такое реляционная база данных. А mysql именно такая. Вложенные категории создаются просто. Делается таблица со столбцами "категория" и "родитель" (родительская категория). При выборке с указанием конкретного родителя вы получите все подкатегории для указанной. А для корневых категорий просто используется некое особое значение (пустая ячейка, NULL, -1 и т.п.) Структура реляционных БД, обычно, сама по себе не отображает объектной модели того, что в ней содержится. Связи получаются косвенными. Реальную структуру, обычно, отображают ORM (объектная модель на каком-то языке программирования, набор классов, полей и методов, отображающий взаимодействия объектов, содержащихся в БД). ORM не является обязательной при разработке. Если разработчик знает структуру БД, то может реализовать все нужные запросы напрямую. Это сообщение отредактировал(а) Arantir - 24.4.2013, 23:13 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Truniger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.11.2012 Репутация: нет Всего: нет |
То есть я так понял ORM это какое дополнительное ПО которое упрощает работу с БД? Это сообщение отредактировал(а) Truniger - 25.4.2013, 11:10 |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
ORM — это просто представление БД в виде классов (как если бы данные из БД были объектами в вашей программе).
Встроенные возможности формирования запросов у существующих ORM-библиотек ограничены. Реляционность БД позволяет осуществить многие действия намного эффективнее, чем это бы делалось с объектной точки зрения. Зачастую разработчик сам реализует некоторое запросы. ORM — только обертка. Распространенный прием в ООП. Вы просто инкапсулируете некие операции в классе (наборе классов). Программа теперь может пользоваться этими классами и ей абсолютно все равно, что именно у них внутри. Но лучше сразу в ORM не вдавайтесь. Разберитесь с созданием БД в mysql. На самом деле это довольно просто. Я привел ORM просто как пример, а не как совет того, с чего стоит начинать. Я чего вообще про ORM... Вот Вы написали Это верно с объектной точки зрения. У вас есть класс Категория и в нем есть поле подкатегории. И в этом поле содержатся объекты того же класса Категория. Но при создании реляционной структуры БД надо делать акцент на отношениях между объектами. Ход мыслей примерно такой: Категории — просто объекты. Можно просто сделать таблицу с (id, имя_категории). Подкатеории связаны с категорией тем, какая категория для подкатегории есть родительской. Можно сделать таблицу (id, родитель, имя_категории). И катеории и подкатегории по сути являются одинаковыми объектами. Просто у категорий нет родителей, а у подкатегорий есть. Значит можно сделать одну таблицу (id, родитель, имя_категории) и просто не указывать родителя корневым категориям. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Truniger |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 23.11.2012 Репутация: нет Всего: нет |
А, вот теперь я кажется вас понял, то есть в БД что категории что подкатегории являются одинаковыми объектами - таблицами, а каталог это просто грамотно выстроенные "взаимоотношения" между ними? Ну теперь конечно надо это реализовать, с моим знанием языка это будет трудновато, но нечего, главное смысл я уловил, большое спасибо ![]() Это сообщение отредактировал(а) Truniger - 25.4.2013, 12:57 |
|||
|
||||
Arantir |
|
||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Таблицы представляют совокупность объектов. Если проводить параллели: таблица — как класс, имена столбцов — имена полей класса, строки таблицы — объекты класса с соответствующими значениями.
В принципе — да. "Реляционный" и исходит от англ. relation (отношение, связь). Главное помнить, что в ячейке может содержаться только простое значение (число, строка, двоичные данные и т.п.). Не стоит, например, пробовать запихнуть в одну ячейку таблицы форумных постов некий список из тегов, разделяя их запятыми. Для подобной цели надо создать таблицу, где каждая пара (пост, тег) будет отдельной строкой. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |