|
|
|
|
|
|
для: Loki
(05.04.2005 в 08:59)
| | Да, есть такое дело, спасибо - поправили. Дело в том, что для установки используется Web-инсталлятор и существует большой соблазн не обновлять forum.sql, хотя не дело, конечно, его тоже следует включить в цикл тестирования. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2005 в 00:53)
| | Действительно старая...
Хотя версия у меня последняя (2.1.4), но файл forum.sql создает такую таблицу:
CREATE TABLE themes (
id_theme int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
author tinytext NOT NULL,
id_author int(6) NOT NULL default '0',
hide enum('show','hide','lock') NOT NULL default 'show',
time datetime NOT NULL default '0000-00-00 00:00:00',
id_forum int(2) NOT NULL default '0',
PRIMARY KEY (id_theme),
FULLTEXT KEY search (name,author)
) TYPE=MyISAM;
|
Проверьте что у вас выложено в архиве...
Тото у нас какой-то странный диалог получался:)) | |
|
|
|
|
|
|
|
для: Loki
(05.04.2005 в 00:21)
| | Возможно у вас под рукой старый вариант таблицы, вот таблица themes, которая сейчас используется на форуме
CREATE TABLE themes (
id_theme int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
author tinytext NOT NULL,
id_author int(6) NOT NULL default '0',
last_author tinytext NOT NULL,
id_last_author int(6) NOT NULL default '0',
hide enum('show','hide','lock') NOT NULL default 'show',
time datetime NOT NULL default '0000-00-00 00:00:00',
id_forum int(2) NOT NULL default '0',
PRIMARY KEY (id_theme),
FULLTEXT KEY search (name,author)
) TYPE=MyISAM;
|
Автор темы хранится в author, а последний ответивший в last_author, соотвествующих первичные ключи тоже дублируются, так как они нужны для ссылок. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2005 в 00:14)
| | >А нет, это тоже дублируется - в таблице themes (темы) имеется поле для автора >темы и последнего ответившего посетителя - это поле обновляется при каждом >ответе.
Хе... Дублируется только id автора, а чтобы узнать его имя все равно надо вызывать таблицу authors, так что неправда ваша:)
Но тем не менее, спасибо за разъяснения, а то я в очередной раз собирался "упростить":) | |
|
|
|
|
|
|
|
для: Loki
(04.04.2005 в 10:06)
| | >Я поэтому и задал вопрос. Ведь многотабличного запроса вам в
>этом случае избежать не удается (чтобы узнать автора и дату
>последнего ответа надо обращаться к таблице posts).
А нет, это тоже дублируется - в таблице themes (темы) имеется поле для автора темы и последнего ответившего посетителя - это поле обновляется при каждом ответе.
>Кроме того, вы так и не объяснили для чего используется дата
>создания темы?
Эта дата обновляется при каждом ответе. Т.е. в этом поле хранится дата последнего изменения темы, и оно используется при сортировке. Это позволяет активным темам оставаться "на плаву". Вот как этой, не смотря на то, что она начата в прошлом месяце, постоянное обновление поля даты приводит к тому, что она всё-время на первой странице :) | |
|
|
|
|
|
|
|
для: Loki
(04.04.2005 в 10:06)
| | cheops, вы развеете мои тягостные сомнения или предпочтете оставить меня в счастливом неведеньи?:) | |
|
|
|
|
|
|
|
для: cheops
(04.04.2005 в 09:42)
| | Я поэтому и задал вопрос. Ведь многотабличного запроса вам в этом случае избежать не удается (чтобы узнать автора и дату последнего ответа надо обращаться к таблице posts).
Кроме того, вы так и не объяснили для чего используется дата создания темы? | |
|
|
|
|
|
|
|
для: Loki
(03.04.2005 в 23:29)
| | Дублирование вызвано вот чем: скорость. Нужно было всеми средствами избежать многотабличного запроса (выборки из posts и themes) при формировании списка тем и дерева ответов. Ведь если оставить в themes и authors только первичный ключ id_author (из таблицы authors), нам придётся каждый раз формировать двухтабличные запросы, а они всегда медленнее однотабличных.
PS Авторитетов следует слушать всегда очень осторожно :))) они бывают спать хотят, да и вообще у них перед глазами только кусочек задачи, а не вся картина в целом. В такой ситуации человек домысливает собирая из сознания свои текущие задачи... | |
|
|
|
|
|
|
|
для: cheops
(03.04.2005 в 21:49)
| | Врядли я до конца понял вашу мысль, но попробую переделать - неплохая будет практика.
Как человек не доверяющий авторитеатм (до сих пор не могу забыть как прокололся послушав вас про модернизацию таблицы ip в счетчике:), постараюсь подойти к вопросу критически. У меня перед глазами таблицы liteforum. Меня интересуют две таблицы: posts и themes.
На мой взгляд, таблица themes излишне дублирует таблицу posts:
author и id_author - не нужны, так как автор первого сообщения и есть искомый, а к таблице posts все равно надо делать запрос чтобы определить автора последного сообщения.
hide - на мой взгляд не нужна, так как сокрытие первого сообщения и должно быть сокрытием темы (но это спорный вопрос)
time - вообще не понял где используется.
Прокомментируйте пожалуйста цели создания этих строк, пока я снова не пошел своим путем:) | |
|
|
|
|