Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Архитектура БД [4]
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Архитектура БД

Страниц (5): « 1 2 3 [4] 5 »
 

46. vanicon - 28 Июня, 2013 - 21:01:40 - перейти к сообщению
Hapson
Не знаю даже, спорная ситуация, в принципе все ровно надо буде выводить возле поста там типа +132, можно обновлять рейтинг у пользователя и у поста, но опять нужна транзакция, что caballero думает по этому поводу?
47. Hapson - 28 Июня, 2013 - 21:01:53 - перейти к сообщению
И еще наверно нужно IP пользователей хранить...
Но IP ведь может меняться...
48. caballero - 28 Июня, 2013 - 21:21:52 - перейти к сообщению
Цитата:
Не знаю даже, спорная ситуация, в принципе все ровно надо буде выводить возле поста там типа +132, можно обновлять рейтинг у пользователя и у поста, но опять нужна транзакция, что caballero думает по этому поводу?

там ведь все равно есть поля для незареганого пользователя которые для зареганого будут пустовать (NULL)
поэтому и есть смысл хранить там и данные зареганого чтобы не лазить ни к каким таблицам.

а рейтинги все равно отдельно надо хранить
если рейтинг общий для всего блога (или что там) то рейтинг хранить в таблице пользователей - все равно он имеет смысл только для зареганых.

но если незареганые пользователи часто коментят под одними и теми же никами (к примеру каак на popmech.ru) то тут наоборот - надо создавать в таблице юзеров записи и для незареганых (просто там не будет пароля и прочего профиля). Тогда и по ним можно вести статистику, хранить IP и т.д. а в самих коментах хранить только id юзера (всех типов)
49. Hapson - 28 Июня, 2013 - 21:43:14 - перейти к сообщению
caballero
Будет так:
Статья - у нее есть рейтинг. Ее личный рейтинг. Не нужно знать кто поставил +/-1. Нужно просто выводить общий рейтинг статьи.
Комменты.
Комменту можно поставить +1 и -1. Нужно будеть выводить или +/- или общий рейтинг коммента. Плюсы и минусы коммента формируют рейтинг пользователя.

Сейчас посмотрел как это сделано в Jcomment (компонент Joomla). В таблице коментов там id коммента, id статьи, id пользователя, положительный рейтинг, отрицательный рейтинг, дата, имя и маил пользователя, IP пользователя и сам коммент.
В таблице рейтинга следующие поля: id записи, id коммента, id пользователя, IP пользователя, дата (когда поставил + или -), значение (что поставил 1 или -1)
(Добавление)
PS
то есть каждый голос добавляет запись в табличку рейтинга
(Добавление)
Короче надо начинать писать. А там уже само все выплывет.
Который день уже сижу планирую базу, а толку.
50. Hapson - 06 Июля, 2013 - 15:20:42 - перейти к сообщению
Всем привет, это снова я.
Вообщем прослушал курсы специалиста по mysql.
Понятно, что ничего не понятно... Не понял Радость
Короче myisam поддерживает поиск, быстро делает insert и у него есть блокировки.
У innodb усть транзакции, хранимые процедуры, блокировка на уровне строк и быстрые выборки.

У myisam вроде как нет внешних ключей... А как же тогда выборки с объединением таблиц? Или я что-то не так понял?

Что же выбрать для блога? Если инсертов мало, нужен поиск и быстрые выборки. В расчет беру MySQL 5.1, так как хостеры наверно не будут спешить обновляться. Полнотекстовый поиск станет обычным делом для innodb наверное через N-ное кол-во лет.
51. Jlblcblu - 06 Июля, 2013 - 15:24:56 - перейти к сообщению
Hapson пишет:
Всем привет, это снова я.
Вообщем прослушал курсы специалиста по mysql.
Понятно, что ничего не понятно... Не понял Радость
Короче myisam поддерживает поиск, быстро делает insert и у него есть блокировки.
У innodb усть транзакции, хранимые процедуры, блокировка на уровне строк и быстрые выборки.

У myisam вроде как нет внешних ключей... А как же тогда выборки с объединением таблиц? Или я что-то не так понял?

Что же выбрать для блога? Если инсертов мало, нужен поиск и быстрые выборки. В расчет беру MySQL 5.1, так как хостеры наверно не будут спешить обновляться. Полнотекстовый поиск станет обычным делом для innodb наверное через N-ное кол-во лет.


Мое мнение - забыть про myisam. Использовать innodb. В любом случае вам понадобится выполнить несколько запросов одновременно и вам придется использовать транзакцию. Про полнотекстовый поиск в mysql забудьте, посмотрите в сторону sphinx
52. Hapson - 06 Июля, 2013 - 15:32:59 - перейти к сообщению
Jlblcblu пишет:

Мое мнение - забыть про myisam. Использовать innodb. В любом случае вам понадобится выполнить несколько запросов одновременно и вам придется использовать транзакцию. Про полнотекстовый поиск в mysql забудьте, посмотрите в сторону sphinx

Сфинкс еще не смотрел, но отзывы о нем не самые положительные.
В принципе, поиск к блогу можно прикрутить и от гугла.
53. Саныч - 06 Июля, 2013 - 15:35:02 - перейти к сообщению
Hapson пишет:
У myisam вроде как нет внешних ключей... А как же тогда выборки с объединением таблиц? Или я что-то не так понял?
Нет, не правильно поняли... На выборках из нескольких таблиц это никак не отображается. Просто внешние ключи накладывают некоторые ограничения. К примеру, вставляете вы данные в таблицу, а в ней есть столбец (ну скажем cat_id) связаный с другой таблицей. А вы взяли и указали cat_id которго нет. MyISAM эту запись спокойно вставит, а вот InnoDB этого сделать не даст. Целостность данных однако...
Другой пример, удаляете запись из таблицы, а с ней связаны записи в другой/других таблицах. MyISAM спокойно ее удалит и все связанные с ней данные превратяться в мусор. А вот InnoDB сначало проверит, есть ли связанные данные и если есть, то удалит их тоже, либо вобще не даст вам удалить строку, либо заменет на NULL, это уже зависит от того, что вы укажете делать.

InnoDB более продвинутый движек, я всегда выбираю его и другим советую.
Тем более полнотекстовый поиск InnoDB уже тоже поддерживает, правда не помню с какой версии, недавно начал.
Даже если вы делаете для более старых версий, вынесите свои тексты в отдельную таблицу в MyISAM-е и будет вам поиск.

Советую InnoDB.
54. Jlblcblu - 06 Июля, 2013 - 15:35:11 - перейти к сообщению
Hapson пишет:
Сфинкс еще не смотрел, но отзывы о нем не самые положительные.

Дайте ссылочку почитать отзывы.
Есть несколько проектов по 600 000 уников. сфинкс сбоев не дает.
55. Hapson - 06 Июля, 2013 - 16:00:21 - перейти к сообщению
Саныч пишет:
Hapson пишет:
У myisam вроде как нет внешних ключей... А как же тогда выборки с объединением таблиц? Или я что-то не так понял?
Нет, не правильно поняли... На выборках из нескольких таблиц это никак не отображается. Просто внешние ключи накладывают некоторые ограничения. К примеру, вставляете вы данные в таблицу, а в ней есть столбец (ну скажем cat_id) связаный с другой таблицей. А вы взяли и указали cat_id которго нет. MyISAM эту запись спокойно вставит, а вот InnoDB этого сделать не даст. Целостность данных однако...
Другой пример, удаляете запись из таблицы, а с ней связаны записи в другой/других таблицах. MyISAM спокойно ее удалит и все связанные с ней данные превратяться в мусор. А вот InnoDB сначало проверит, есть ли связанные данные и если есть, то удалит их тоже, либо вобще не даст вам удалить строку, либо заменет на NULL, это уже зависит от того, что вы укажете делать.

InnoDB более продвинутый движек, я всегда выбираю его и другим советую.
Тем более полнотекстовый поиск InnoDB уже тоже поддерживает, правда не помню с какой версии, недавно начал.
Даже если вы делаете для более старых версий, вынесите свои тексты в отдельную таблицу в MyISAM-е и будет вам поиск.

Советую InnoDB.

Да да, вспомнил. Теперь понял.
По поводу удаления нужно поэкспериментировать. По-моему InnoDB удалит запись, у которой есть связанная запись в другой таблице. Но можно сделать каскадное удаление, то есть конкретную запись и все связанные. Как-то так...

Поиск теперь есть в InnoDB, но когда хостеры будут обновлять серверы?
(Добавление)
Jlblcblu пишет:
Hapson пишет:
Сфинкс еще не смотрел, но отзывы о нем не самые положительные.

Дайте ссылочку почитать отзывы.
Есть несколько проектов по 600 000 уников. сфинкс сбоев не дает.

Нет ссылок. Я только мельком просматривал. Мнения людей делятся. Впрочем как всегда.
56. caballero - 06 Июля, 2013 - 18:24:41 - перейти к сообщению
Цитата:
Про полнотекстовый поиск в mysql забудьте, посмотрите в сторону sphinx

мне кажется SOLR популярнее.

Цитата:
Мое мнение - забыть про myisam.

не совсем верное мнение. Лично мне для разработки myisam удобнее. например есть возможно переноса Бд прямым копированием файлов.
57. Hapson - 06 Июля, 2013 - 19:13:35 - перейти к сообщению
caballero пишет:
мне кажется SOLR популярнее.

А это что?
caballero пишет:
не совсем верное мнение. Лично мне для разработки myisam удобнее. например есть возможно переноса Бд прямым копированием файлов.

Ну это вообще незначительный момент. Одно дело разработка, а другое дело работающее приложение. А на хостинге возможность копирования файлов БД навряд ли пригодится.
58. caballero - 06 Июля, 2013 - 19:45:31 - перейти к сообщению
Цитата:
Одно дело разработка, а другое дело работающее приложение. А на хостинге возможность копирования файлов БД навряд ли пригодится.

сменить тип таблиц при заливке на хостинг секунда делов

Цитата:
А это что?

http://en[dot]wikipedia[dot]org/wiki/Apache_Solr
59. Hapson - 06 Июля, 2013 - 19:54:10 - перейти к сообщению
caballero пишет:
http://en.wikipedia.org/wiki/Apache_Solr

Понятно... что ничего не понятно Радость я английский не знаю. Потом поищу на русском.

Тут вот еще какой вопрос...
Вот на сайте есть статьи, категории, комменты... Здесь везде могут быть картинки. Как быть с таблицей? Я нарисовал так:

id_image
id_article
id_user
url

То есть id картинки, id статьи, id пользователя и адрес картинки. А для картинок в категориях и комментах делать отдельные таблицы? Или в эту таблицу добавить id коммента, id категории и убрать с них not null? А если еще и альбомы пользователей..?
(Добавление)
А может ли внешний ключ быть NULL?
Если в таблице картинок будут хранится id на статью, категорю и коммент. Но картинка может быть только в статье, категории или комменте. То есть два id будут NULL.
Так можно?
60. Hapson - 07 Июля, 2013 - 01:03:36 - перейти к сообщению
Ну вообщем вот что получилось. Дальше голова не соображает. Вроде больше ничего не надо...
Спойлер (Отобразить)

 

Powered by ExBB FM 1.0 RC1