forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общее (http://forum.boolean.name/forumdisplay.php?f=139)
-   -   Таблицы в БД для комментариев (http://forum.boolean.name/showthread.php?t=11970)

pax 20.02.2010 16:01

Таблицы в БД для комментариев
 
Проектирую сейчас структуру сайта, который хочу реализовать на ASP.NET MVC. Сейчас изучаю задачу комментирования всего что будет на сайте - статьи, фотографии, файлы и т.п. информация о которых находится в разных таблицах (пока). Пришел к выводу что есть два пути решения данной задачи:
1. Для каждого типа контента создавать свою таблицу с комментариями.
2. Сделать одну таблицу с комментариями, но каким-то хитрым образом переделать структуру таблиц контента.

Отсюда вопрос: Есть ли у кого идеи, каким путем идти и почему?

Для работы с базой данных буду использовать Entity Data Model (EDM Framework) так что все связи в базе данных будут выполнены отношениями, а не программно.

dector 20.02.2010 16:57

Ответ: Таблицы в БД для комментариев
 
+---------------+-------------+---
| CommentID | ContentID | ...
+---------------+-------------+---

В чем проблема-то? Создается одна таблица для ТИПОВ контента, другая для КОНТЕНТА, где у каждой строки будет "привязка" в типу через его ID, третяя таблица - для КОМЕНТАРИЕВ. Привязка в ней будет осуществлятся к ID контента (не типа).

pax 20.02.2010 19:08

Ответ: Таблицы в БД для комментариев
 
Это не решение, не могу представить себе таблицу контента, описывающую все сущности
Цитата:

статьи, фотографии, файлы и т.п.
Есть еще какие-либо идеи?

PS: Я вот сейчас задумался о том, как можно использовать наследование в объектной модели базы данных... может с ней что-то получится...

dector 20.02.2010 21:24

Ответ: Таблицы в БД для комментариев
 
Мммм. Чего-то я не понял. Вроде, как оно так всегда делается ;)
Так, как информация, которая дублируется - просто обязана быть в другой таблице.

pax 20.02.2010 21:59

Ответ: Таблицы в БД для комментариев
 
Вложений: 1
Наследование решило проблему :) буду дальше проектировать архитектуру базы данных для сайта.

Вот пока какая модель данных получается (таблицы Article и File унаследованы от таблицы Content):

dector 20.02.2010 22:45

Ответ: Таблицы в БД для комментариев
 
Что за инструмент для создания UML?

pax 21.02.2010 15:31

Ответ: Таблицы в БД для комментариев
 
Это инструмент визуального создания объектной модели данных Entity Framework и встроен в Visual Studio 2008 SP1. Может генерировать модель непосредственно из базы данных но такие вещи как наследование необходимо делать вручную. Результатом работы является сгенерированный код, который можно использовать уже в программе для доступа к базе данных без написания SQL запросов. Сгенерированная модель сама может создавать такие запросы.

Самое основное достоинство в том, что в результате все запросы проверяются на синтаксис уже на этапе написания кода, никаких проблем с возможными SQL атаками и т.д.

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

jimon 21.02.2010 22:49

Ответ: Таблицы в БД для комментариев
 

потому мелкий сайт "страничка моей рыбки" генерится за 5-10 секунд, никогда не понимал к чему такие сложности в том чтобы выдать тупой html

pax 22.02.2010 00:11

Ответ: Таблицы в БД для комментариев
 
Интересно, зачем тогда люди пишут CMS системы...

jimon 22.02.2010 00:23

Ответ: Таблицы в БД для комментариев
 
PAX

пусть себе пишут, но производительность ихних CMS настолько низка что нормальный софт там уже рейтрейс огромной сцены закончит, а оно только 5 кб буковок рожает

вот opera действительно нормально подошла к проблеме - у них сайт это чистые html страницы, но когда нужно их заменяют, а генерируются они только при замене спец. софтом

в прочем мой оффтоп не поможет тебе решить проблему :)

Phantom 22.02.2010 06:27

Ответ: Таблицы в БД для комментариев
 
А кэширование для кого придумали?

pax 22.02.2010 12:24

Ответ: Таблицы в БД для комментариев
 
html конечно хорошо, а как же ajax и динамический контент на страницах?

Я вот кстати все в раздумьях что лучше использовать: LINQ to SQL или Entity Framework... есть у кого мнения по этому поводу? На этапе проектирования базы данных еще есть время выбрать )) потом вряд ли будет легко поменять модель доступа к данным... Сразу скажу что NHibernate использовать не хочу по нескольким причинам, одна из которых ее сложность.

*чуть позже*
Попробовал создать наследование в LINQ to SQL и понял, что он не поддерживает многотабличное наследование. Наследование может быть выполнено только типу сущности и Nullable полях одной таблицы. Чего очень не хочется делать. Следовательно выбор все таки пал на Entity Framework.




Картинку взял отсюда: http://blogs.microsoft.co.il/blogs/b...heritance.aspx


Часовой пояс GMT +4, время: 02:52.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot