Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Вроде как созрел уже что-то писать. Решил сначала написать блог, для себя любимого)))
И тренировка и пригодится.
Естественно начал с БД. Сижу уже вот 3 вечера - думаю.
Вообщем будут статьи от меня, и пока только от меня. Пока...
Комментарии как от зарегистрированных пользователей, так и от незарегистрированных.
Ну и категории конечно.
Вот че я надумал
Вот затык у меня с последней табличкой. Нужна ли она вообще? Это типа какие-то настройки сайта.
Еще что-то туплю с таблицей для галереи: что там храниь? Ну название, title, alias...
Ну и как вообще оно? Я на верном пути?
Может нужно что-то еще? (Добавление) ЗЫ
Переводы строк коверкают все...
Лучше скопировать в notepad++.
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
vanicon
Отправлено: 27 Июня, 2013 - 01:39:19
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Hapson
А вам не кажется что многовато таблиц?
Можно было бы объединить Category и Category_info, Articles_raiting и Comments_rating, Comments_of_reg и Comment_of_not_reg, Users и User_info.
Зачем вы их разделяете?
----- Так было, так есть и так будет
Hapson
Отправлено: 27 Июня, 2013 - 08:09:02
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
vanicon
В таблице Category_info пока олин столбец - дискрипшен. Он может быть, а может и не быть (скорее всего).
Рейтинг у комментов и статей может быть, а может и нет.
Комменты могут быть от зарегистрированных пользователей, а могут быть от гостей.
Если все объединить, то в таблицах будет много пустых полей. А так во всех таблицах практически все поля будут заполнены. Запросы будут посложнее, но их ведь только раз написать.
Вообщем я как бы следую рекомендациям из книг. В частности МартинГрабер-SQL. Вроде как считается не очень хорошо, если в таблице много пустоты. Размер БД от этого однозначно увеличится. (Добавление)
Ps
Не знаю, может и правда переборщил...
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
Hapson
Отправлено: 28 Июня, 2013 - 11:12:36
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Ну так как лучше?
Делать несколько таблиц так, чтобы в них были заполнены все поля. Или обобщить немного и пусть будет NULL в некоторых полях?
Прочитал, что вроде объединение замедляет отклик БД.
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
Contr
Отправлено: 28 Июня, 2013 - 12:19:12
Частый гость
Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011 Откуда: с Марса
Помог: 1 раз(а)
Я тебе дам советы, которые тебе помогут, они мне сразу в глаза бросаются:
1) Ты правильно начал - надо начинать с БД, только много позже - с обертки в виде php
2) Лучший способ продумать архитектуру БД - методом проб и ошибок. Когда сделаешь как тут написал, попробуй составить запросы, которые тебе будут нужный потом (выбрать людей, кто не оставил комментарии... и т.д.). Возможно тебе придется переделать таблицы в БД.
3) Перестань называть таблицы через "_" Придумай короткие названия из одного слова. Тебе потом запросы писать - ты просто оху**шь! Чем короче название таблиц и полей - тем лучше. Со временем поймешь.
4)
Цитата:
Прочитал, что вроде объединение замедляет отклик БД.
забей. Продумай, где у тебя должны обязательно заполняться поля (пиши NOT NULL), где - нет
5) И последнее, но не последнее по важности - не используй CHAR(n). Он добавляет ( и php потом выводит) дополнительные пробелы. Используй ТEXT, а если надо принудительно ограничить длину символов - VARCHAR(n)Отредактировано администратором: EuGen, 28 Июня, 2013 - 17:21:39 Подпись была удалена, поскольку не соответствует правилам конференции
vanicon
Отправлено: 28 Июня, 2013 - 15:09:38
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Hapson
Архитектура бд это не простая задача как кажется на первый взгляд, здесь я считаю нужным объединить таблицы которые я выше указал, например как вы будите выводить последние комментарии к записи, если у вас будет 2 таблицы комментариев (1 для зареганых, а другая для гостей) ?
Такое разделение только усложнит приложение... (Добавление)
В некоторых случаях используют и денормализацию данных, для ускорения приложения, поэтому подход к архитектуре бд, напрямую связан со спецификой приложения...
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Contr
Имена конечно будут поменьше. Это сейчас, чтобы понимать.
А по поводу char - насколько я помню, то пробелы добиваются в БД, но при выборке они отбрасываются.
vanicon
Да, наверно надо кое-что объединить. Но например Дискрипшен категорий можно же вывести в отдельную таблицу. Так как скорее всего его не будет.
LIME
Спасибо за ссылку. Читаю
ЗЫ
Вот еще не пойму, какую таблицу делать для картинок? Хранить там id и линки на картинки?
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
vanicon
Отправлено: 28 Июня, 2013 - 18:37:32
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Hapson пишет:
Но например Дискрипшен категорий можно же вывести в отдельную таблицу. Так как скорее всего его не будет.
Не стоит этого делать, смысла 0, а если надо будет выбрать вместе c категориями и их описание, то что? придется делать "тяжелый" запрос к бд для этого (Добавление)
Hapson пишет:
Вот еще не пойму, какую таблицу делать для картинок? Хранить там id и линки на картинки?
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
vanicon пишет:
Не стоит этого делать, смысла 0
Почему же?
Предположим:
все таблицы в InnoDB, и надо реализовать полнотекстовый поиск,
который движок InnoDB не поддерживает, то описания и габаритные тексты выводятся в отдельную таблицу с движком MyISAM. (Добавление)
vanicon пишет:
а если надо будет выбрать вместе c категориями и их описание, то что?
Объединение таблиц в запросах (INNER JOIN / LEFT JOIN)
vanicon
Отправлено: 28 Июня, 2013 - 18:57:16
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
armancho7777777 пишет:
который движок InnoDB не поддерживает, то описания и габаритные тексты выводятся в отдельную таблицу с движком MyISAM.
А если для этого использовать специальные утилиты такие как сфинкс?
armancho7777777 пишет:
Объединение таблиц в запросах (INNER JOIN / LEFT JOIN)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.