Управление базой данных (SQLite) и генерация таблиц - PullRequest
0 голосов
/ 15 декабря 2010

Я создавал программу для чтения RSS, которая хранит статьи, извлеченные из базы данных (в частности, SQLite, но я не думаю, что это имеет значение).

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

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

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Из того, что вы написали:

для создания новой таблицы для каждого канала пользователь подписан на

В мире баз данных, по крайней мере для меня, это безумие.

Просто попробуйте представить, что пользователь хочет подписаться на 1000 RSS-каналов, вы будете создавать 1000 таблиц? Ни за что.

Вы можете связать свои данные благодаря Первичному ключу и внешним ключам, почему бы вам не использовать эту прочность.

Сначала вам будет проще написать запрос. Вам не придется беспокоиться о названии таблицы. у вас будет таблица rssfeed и сообщение таблицы, тогда все будет связано с *. 1013 *

Потратьте время на моделирование вашей базы данных. В вашем случае это будет не так сложно.

Вам может понадобиться от 3 до 4 таблиц для обработки rssfeeds, записей и метаданных. Задайте еще один вопрос здесь: Как спроектировать базу данных для этой потребности?

Люди помогут вам с удовольствием.

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

1 голос
/ 15 декабря 2010

Типичным способом хранения таких данных (при условии, что структура данных одинакова для всех каналов) действительно является наличие одной таблицы для всех каналов.

Почему?Потому что это позволит вам получить доступ ко всем каналам одинаково.Например, допустим, вы хотите объединить все каналы в одном представлении или рассчитать некоторую статистику по всем вашим каналам.Поместить их все в одну таблицу, это будет чрезвычайно просто;хранение их всех в разных таблицах сделает это гораздо более сложным, без какой-либо (насколько я вижу) дополнительной ценности.

1 голос
/ 15 декабря 2010

Это вопрос простоты кодирования и, возможно, небольшого снижения производительности при наличии одной таблицы на канал RSS. Наличие одной таблицы (а не одной на канал) означает, что ваш код не должен выполнять никаких DDL, и вы могли бы легче осуществлять поиск по RSS-каналам; но запросы и обновления могут быть немного медленнее. Вероятно, я бы выбрал одну таблицу со столбцом фида (индексированную), чтобы упростить поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...