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

Поиск:

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


Опытный
**


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

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



Всем привет, проектирую БД, столкнулся со след. вопрсом который не могу решить:
В базе есть две таблицы: новости и фото, так вот я хочу сделать возможным добавление комментариев для конкретной новости или фотографии. Думаю что для комментариев достаточно одной таблицы в которой будут храниться все комментарии и для новостей и для фото.
в таблице новости поля 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


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


Эксперт
***


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

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



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


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


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

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



Цитата(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) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

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


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


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


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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


Эксперт
****


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

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



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

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

таблица новости
таблица фото
таблица комент
и таблица которая ссылается на эти три сущности(три поля: ид новости,ид фото, ид комента) в ней можешь как угодно соединять коменты  фото и новости между собой...


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


Опытный
**


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

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



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

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

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


Эксперт
****


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

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



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

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

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

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


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


Эксперт
***


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

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



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


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


Опытный
**


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

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



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

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

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

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


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


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



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

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bagos
Дата 4.2.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mysql 5

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


Чо?
****


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

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



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


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
solenko
Дата 5.2.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



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

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

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

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

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


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

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

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

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

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

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


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

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

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

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

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


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

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


 




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


Реклама на сайте     Информационное спонсорство

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