Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проектирование бд 
:(
    Опции темы
Теги: нет
bagos
Дата 4.2.2010, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Друзей: 0; Групп: 0
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Всем привет, проектирую БД, столкнулся со след. вопрсом который не могу решить:
В базе есть две таблицы: новости и фото, так вот я хочу сделать возможным добавление комментариев для конкретной новости или фотографии. Думаю что для комментариев достаточно одной таблицы в которой будут храниться все комментарии и для новостей и для фото.
в таблице новости поля id,name,author,date,text
в таблице photo поля id,name,author,date,text
Создал таблицу comments: id,author,text,date -- вот тут нужно подробнее, нужно еще два поля, первое будет указывать на то какой раздел, новости или фото, второй будет содержать ссылку на id записи новости или фото. Прошу сказать правильно я рассуждаю или нет, буду благодарен всем ответам)))
PM MAIL   Вверх
KelTron
Дата 4.2.2010, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 624
Друзей: 0; Групп: 0
Регистрация: 8.10.2006
Где: Красноярск

Репутация: нет
Всего: 29



Если уверен, что структура комментов для фоток и новостей всегда будет одинакова, то всё правильно..) Я бы сделал также.


--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
solenko
Дата 4.2.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Друзей: 0; Групп: 3
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 51



лучшим решением будет multi table inheritance


--------------------
Все, что не анархия -- то фашизм.
PM MAIL WWW ICQ Skype   Вверх
Gluttton
Дата 4.2.2010, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 811
Друзей: 0; Групп: 0
Регистрация: 28.8.2008

Репутация: 8
Всего: 40



Цитата(bagos @  4.2.2010,  16:03 Найти цитируемый пост)
Думаю что для комментариев достаточно одной таблицы в которой будут храниться все комментарии и для новостей и для фото.


Цитата(bagos @  4.2.2010,  16:03 Найти цитируемый пост)
Прошу сказать правильно я рассуждаю или нет, буду благодарен всем ответам)))


А я бы не экономил... Сделайте две таблицы с коментариями и для новостей и для фотографий.
Приемущества:
- более логично (прозрачно), т.е. мне как человеку будет гараздо проще понять задумку автора БД если я увижу две не связанные таблицы: фотографии и новости и с каждой из них связанную таблицу с коментариями; а если бы я увидел три таблицы связанные между собой: новости, фотографии и коментарии, то я бы начал думать, а что же этим хотели сказать;
- т.к. (а точнее будет сказать если) коментарии к фотографиям и коментарии к новостям это разные сущности, то их целесообразнее разнести в разные таблицы для гибкости, а то вдруг потом окажеться, что для коментариев к фотографиям необходимо ещё и указывать фото-стаж коментирующего, а к коментариям новостей политическую принадлежность и что тогда.

Какие приемущества в использовании одной таблицы?

Это сообщение отредактировал(а) Gluttton - 4.2.2010, 17:44
PM MAIL   Вверх
solenko
Дата 4.2.2010, 17:58 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Друзей: 0; Групп: 3
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 51



фотография -- контент
новость -- контент
комментарий к фотографии -- комментарий к контенту
комментарий к новости -- комментарий к контенту

Преимучества -- единообразность в управлении, расширяемость и, как ни странно, логичность. При добавлении новых типов контента не нужно плодить таблици, хранящие одни и те же сущности.


--------------------
Все, что не анархия -- то фашизм.
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 4.2.2010, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 14445
Друзей: 0; Групп: 0
Регистрация: 8.4.2004
Где: Зеленоград, Москв а, Россия

Репутация: 8
Всего: 271



Я бы новости и фото собрал в одну таблицу. Как раз исходя из соображения "одна сущность - контент". Пустая строка в поле News - значит это фота, пустая строка в поле Photo - значит новость, оба заполнены - значит новость с фотографией, оба пусты ... бага в БД. И соответственно нет проблемы как приклеивать комменты.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.
PM MAIL WWW ICQ Jabber   Вверх
Frees
Дата 4.2.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Друзей: 0; Групп: 1
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 33



если плодить таблицы с комментариями то при разработке ПО для этой базы нужно будет изголятся и либо плодить формы либо писать форму которая будет уметь показывать коммент из любой таблицы...(Надеюсь понятно сказал)

можно сделать так

таблица новости
таблица фото
таблица комент
и таблица которая ссылается на эти три сущности(три поля: ид новости,ид фото, ид комента) в ней можешь как угодно соединять коменты  фото и новости между собой...
PM MAIL ICQ   Вверх
bagos
Дата 4.2.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Друзей: 0; Групп: 0
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Спасибо, мужики! я привел пример насчет 2 таблиц, на самом деле разделов много, фото, видео,новости,флеш и т.д.,

Добавлено через 2 минуты и 1 секунду
и для всех нужна возможность комментирования

PM MAIL   Вверх
Frees
Дата 4.2.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1513
Друзей: 0; Групп: 1
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 33



другой вариант

заведи таблицу "реестр" с одним (для начала) полем все сущности фото, видео,новости,флеш и т.д будут ссылаться на нее

комментарии тоже должен ссылаться на реестр.

те для того что бы показать для какой сущности комменарии он должен указывать на ту же самую запись в таблице реестр
PM MAIL ICQ   Вверх
solenko
Дата 4.2.2010, 19:19 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Друзей: 0; Групп: 3
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 51



Вариантов можно много напридумывать. Но есть стандартное, проверенное решение --  multi table inheritance. Посыл в гугл по этому запросу еще в третем сообщении темы


--------------------
Все, что не анархия -- то фашизм.
PM MAIL WWW ICQ Skype   Вверх
bagos
Дата 4.2.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Друзей: 0; Групп: 0
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



multi table inheritance - с англ. у меня плохо, а на русском языке нормальной инфы по этой теме нету, может скажете в пару словах что это и для чего?

А вообще чем плохо создавать для каждой таблицы отдельную таблицу с комментариями?
Или чем плохо иметь одну общую таблицу с комментами на все разделы?

Добавлено через 1 минуту и 4 секунды
это создание класса или чтото подобное...

Добавлено через 6 минут и 27 секунд
по поводу структуры таблицы комментариев, она не будет меняться, поэтому проблем не должно быть если это будет общая табла комментариев, но доконца решение не принял, будут еще какие советы от народа?
PM MAIL   Вверх
Akina
Дата 4.2.2010, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 14445
Друзей: 0; Групп: 0
Регистрация: 8.4.2004
Где: Зеленоград, Москв а, Россия

Репутация: 8
Всего: 271



Цитата(solenko @  4.2.2010,  20:19 Найти цитируемый пост)
есть стандартное, проверенное решение --  multi table inheritance.

Применимость совета (и уж тем более форма применения) несколько зависит от СУБД...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.
PM MAIL WWW ICQ Jabber   Вверх
bagos
Дата 4.2.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Друзей: 0; Групп: 0
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



mysql 5

Добавлено через 7 минут
user posted image
посмотрите корректна ли структура?
PM MAIL   Вверх
Zloxa
Дата 5.2.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***


Профиль
Группа: Завсегдатай
Сообщений: 1548
Друзей: 0; Групп: 0
Регистрация: 12.9.2008
Где: СССР ☭

Репутация: 4
Всего: 70



comments: id,author,text,date,ref_photo,ref_news
+ форейнкей на два последних поля, и, если надо - чек что (хоть|лишь) одно из них не должно быть нулл

Цитата(bagos @  4.2.2010,  19:02 Найти цитируемый пост)
на самом деле разделов много, фото, видео,новости,флеш и т.д.,

значит полей должно быть не два а больше.

Цитата(bagos @  4.2.2010,  20:01 Найти цитируемый пост)
посмотрите корректна ли структура? 

FK на таблицу новостей и фото одновременно?  smile 
Ты туда не сможешь инсертиться, если у тебя не будет фото и новости с одним ID.

Именно в этом основной плюс предложенной выше схемы - возможность использования декларативных ограничений для контроля целостнотсти. smile 

Цитата(solenko @  4.2.2010,  19:19 Найти цитируемый пост)
multi table inheritance

О какой платформе идет речь?

Добавлено через 7 минут и 17 секунд
изначально не правильно понял предложенную solenko, схему и мне показлось он прав.
Осмыслив, пришлось отредактировать свой пост.

Это сообщение отредактировал(а) Zloxa - 5.2.2010, 11:40


--------------------
when the power of love overcomes the love of power, the world will know peace. J. Hendrix.
PM MAIL   Вверх
solenko
Дата 5.2.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Друзей: 0; Групп: 3
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 51



Цитата(Akina @  4.2.2010,  18:56 Найти цитируемый пост)
Применимость совета (и уж тем более форма применения) несколько зависит от СУБД... 

Каким образом?
Цитата(Zloxa @  5.2.2010,  10:34 Найти цитируемый пост)
О какой платформе идет речь?

не  могу понять причем тут платформа. Паттерны тем и хороши, что преминимы для практически любой платформы.
Цитата(Zloxa @  5.2.2010,  10:34 Найти цитируемый пост)
изначально не правильно понял предложенную solenko, схему и мне показлось он прав.

Так и не понял как меня поняли ) Прикрепляю схемку

Присоединённый файл ( Кол-во скачиваний: 25 )
Присоединённый файл  1.png 26,15 Kb


--------------------
Все, что не анархия -- то фашизм.
PM MAIL WWW ICQ Skype   Вверх
Google
  Дата 2.9.2010, 23:09 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по базам данных | Следующая тема »


 


Rambler's Top100

[ Время генерации скрипта: 0.6840 ]   [ Использовано запросов: 36 ]   [ GZIP включён ]


Реклама на сайте

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Хостинг: Vingrad Hosting     Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.