Такая вот делема передо мною встала. Например в БД есть таблица, в которой хранится информация о ссылках в меню (существующих на сайте категориях). В этой таблице есть некое поле «strname» (например со значением «news», но естественно что значение будет много), значение которого соответствует GET запросу категории (например «index.phtml?category=news») и есть ещё одна таблица, с таким же именем («news» в дано случае), в которой хранятся сами записи. Я хочу добавить возможность комментирования записей пользователями. Т.е. чтобы зарегистрированный мог добавить комментарий. Как это лучше сделать? Есть в уже существующей таблице добавить одно поле, в котором будет хранится комментарий – то будет довольно проблематично в случае, когда комментариев будет много.. ведь придётся разбивать брать большой кусок текста и разбивать его на сам комментарий, автора. Может лучше создавать ещё одну таблицу, например «commentNews» и в ней хранить всё комментарии. А определять к какой записи в таблице «news» какой комментарий соответствует по некому доп. полю (например, ID). Но тогда придётся как-то ещё узнавать порядок комментариев… Ведь в ID статей повторятся не будет, а у каждого комментария может быть свой ID. Но ведь в таблице «news» будет много записей и к каждой из них много комментариев? А создавать отдельную таблицу для каждой записи… довольно тяжело, т.к. в моём случае нет явно уникального поля, которое не может быть одинаковым во всех таблицах со статьями… да и при этом сама БД со временем разрастется до гигантских размеров. Что посоветуете, как лучше поступить? А создавать отдельную таблицу с комментариями для каждой записи – это вообще бред… одних таблиц тогда будет тысячи со временем. Как быть, как вы устраиваете комментирование записей у себя на сайте?
Второй вариант - оптимальнее. Моя структура базы с комментариями: [sql]+-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | section | varchar(20) | NO | MUL | | | | parent_id | int(10) unsigned | NO | MUL | | | | date | int(10) unsigned | NO | | | | | text | tinytext | NO | | | | | nick | varchar(50) | NO | | | | +-----------+------------------+------+-----+---------+----------------+[/sql] Обратите внимание, что parent_id & section - индексные столбцы. Если у вас комментарии только в новостях, то соответственно section не нужен. Комментарии имеют свой id. Чем позднее добавлен - тем больше id. Вот и можно сортировать по ним. [sql]SELECT * FROM `comments` WHERE `parent_id`='.$id.' ORDER BY `id` DESC[/sql]
Т.е. создать одну таблицу со всеми коммен6тариями, а потом выбирать оттудова только имеющие отношение к данной категории и к данной записи в категории. (т.е. выборку по 2-м полям делать). Да, этот вариант мне нравится... всего одна таблица, хоть и большая. Kreker, спасибо за помощь.
antiKILLER, MySQL это реляционная БД. "Реляционная" от слова relations (отношения). Тебе следует почитать про это в инете.