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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Архитектура БД [4]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Делаю первый блог, первая БД...
vanicon
Отправлено: 28 Июня, 2013 - 21:01:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




Hapson
Не знаю даже, спорная ситуация, в принципе все ровно надо буде выводить возле поста там типа +132, можно обновлять рейтинг у пользователя и у поста, но опять нужна транзакция, что caballero думает по этому поводу?


-----
Так было, так есть и так будет
 
 Top
Hapson
Отправлено: 28 Июня, 2013 - 21:01:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


И еще наверно нужно IP пользователей хранить...
Но IP ведь может меняться...


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 28 Июня, 2013 - 21:21:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Не знаю даже, спорная ситуация, в принципе все ровно надо буде выводить возле поста там типа +132, можно обновлять рейтинг у пользователя и у поста, но опять нужна транзакция, что caballero думает по этому поводу?

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

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

но если незареганые пользователи часто коментят под одними и теми же никами (к примеру каак на popmech.ru) то тут наоборот - надо создавать в таблице юзеров записи и для незареганых (просто там не будет пароля и прочего профиля). Тогда и по ним можно вести статистику, хранить IP и т.д. а в самих коментах хранить только id юзера (всех типов)


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 28 Июня, 2013 - 21:43:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


caballero
Будет так:
Статья - у нее есть рейтинг. Ее личный рейтинг. Не нужно знать кто поставил +/-1. Нужно просто выводить общий рейтинг статьи.
Комменты.
Комменту можно поставить +1 и -1. Нужно будеть выводить или +/- или общий рейтинг коммента. Плюсы и минусы коммента формируют рейтинг пользователя.

Сейчас посмотрел как это сделано в Jcomment (компонент Joomla). В таблице коментов там id коммента, id статьи, id пользователя, положительный рейтинг, отрицательный рейтинг, дата, имя и маил пользователя, IP пользователя и сам коммент.
В таблице рейтинга следующие поля: id записи, id коммента, id пользователя, IP пользователя, дата (когда поставил + или -), значение (что поставил 1 или -1)
(Добавление)
PS
то есть каждый голос добавляет запись в табличку рейтинга
(Добавление)
Короче надо начинать писать. А там уже само все выплывет.
Который день уже сижу планирую базу, а толку.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Hapson
Отправлено: 06 Июля, 2013 - 15:20:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Всем привет, это снова я.
Вообщем прослушал курсы специалиста по mysql.
Понятно, что ничего не понятно... Не понял Радость
Короче myisam поддерживает поиск, быстро делает insert и у него есть блокировки.
У innodb усть транзакции, хранимые процедуры, блокировка на уровне строк и быстрые выборки.

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

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


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Jlblcblu
Отправлено: 06 Июля, 2013 - 15:24:56
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Hapson пишет:
Всем привет, это снова я.
Вообщем прослушал курсы специалиста по mysql.
Понятно, что ничего не понятно... Не понял Радость
Короче myisam поддерживает поиск, быстро делает insert и у него есть блокировки.
У innodb усть транзакции, хранимые процедуры, блокировка на уровне строк и быстрые выборки.

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

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


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



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Jlblcblu пишет:

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

Сфинкс еще не смотрел, но отзывы о нем не самые положительные.
В принципе, поиск к блогу можно прикрутить и от гугла.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Саныч
Отправлено: 06 Июля, 2013 - 15:35:02
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




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

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

Советую InnoDB.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Jlblcblu
Отправлено: 06 Июля, 2013 - 15:35:11
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Hapson пишет:
Сфинкс еще не смотрел, но отзывы о нем не самые положительные.

Дайте ссылочку почитать отзывы.
Есть несколько проектов по 600 000 уников. сфинкс сбоев не дает.
 
 Top
Hapson
Отправлено: 06 Июля, 2013 - 16:00:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


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

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

Советую InnoDB.

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

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

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

Нет ссылок. Я только мельком просматривал. Мнения людей делятся. Впрочем как всегда.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 06 Июля, 2013 - 18:24:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Про полнотекстовый поиск в mysql забудьте, посмотрите в сторону sphinx

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

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

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


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 06 Июля, 2013 - 19:13:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


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

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

Ну это вообще незначительный момент. Одно дело разработка, а другое дело работающее приложение. А на хостинге возможность копирования файлов БД навряд ли пригодится.


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
caballero
Отправлено: 06 Июля, 2013 - 19:45:31
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Одно дело разработка, а другое дело работающее приложение. А на хостинге возможность копирования файлов БД навряд ли пригодится.

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

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

http://en[dot]wikipedia[dot]org/wiki/Apache_Solr


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Hapson
Отправлено: 06 Июля, 2013 - 19:54:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 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.
Так можно?


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Hapson
Отправлено: 07 Июля, 2013 - 01:03:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013  
Откуда: Ставропольский край


Помог: 10 раз(а)

[+]


Ну вообщем вот что получилось. Дальше голова не соображает. Вроде больше ничего не надо...
Спойлер (Отобразить)

Прикреплено изображение (Нажмите для увеличения)
12345.png


-----
ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
 
 Top
Страниц (5): « 1 2 3 [4] 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB