Как "правильно" проектировать базы данных на Android?

Рейтинг: 0Ответов: 2Опубликовано: 08.12.2014

Дано:

Новостной сайт с >400 категорий типа "политика", "экономика" etc. В каждой категории много статей.

Задача:

Хранить информацию о url категорий и их статей с множеством другой о них инфы в SQLite DB.

Возможное решение:

  1. Создать таблицу, в коей будет храниться инфа о всех категориях (url, title, время_последнего_обновления).
  2. Создать >400 таблиц с названием title, где хранить инфу о статьях категории (url, title, текст_статьи, ещё_что_то).

Вопрос:

Верный ли это подход с точки зрения архитектуры, удобства использования, производительности etc?

P.S. Работать с SQLite только сегодня начал, не охота учиться неверным подходам с кучей архитектурных проблем в дальнейшем.

UPD

Кол-во комментов ограничено, дополняю вопрос.

@Yura Ivanov в одном из комментов верно отметил, что сложно задать не бессмысленный вопрос почти полностью не разбираясь в предмете обсуждения. Так же как и оценить верность ответов на него. Тем более, что, как верно было отмечено, вернее всего мою задачу, коя поменялась в ходе уточнения и обсуждения в комментах к ответу @Suvitruf, решает коммент @Get.

С другой стороны, ответ @Suvitruf, насколько я понял, вполне отвечает на изначальный вопрос, коий означен выше, за что и был мною принят. Можно было бы преобразовать руками ветку комментов под ответом @Suvitruf в отдельный вопрос и попросить @Get там ответить и его ответ принять. Мне показалось это излишним и я ограничился награждением @Get очками.

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

По поводу

Программирование - это не снипеты из интернета склеивать. Вы сэкономили кучу времени ничего не узнав

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

Ответы

▲ 4Принят

2 таблицы:

1) Таблица категорий ( >400 записей).

2) Таблица новостей, в которой есть внешний ключ на таблицу категорий.

Работать с SQLite только сегодня начал, не охота учиться неверным подходам с кучей архитектурных проблем в дальнейшем.

Подобное вещи при проектировании почти не зависят от выбранной СУБД (если мы говорим именно про реляционные).

▲ 2

Основа правильного проектирования базы данных - структура БД должна быть статична , то есть "прирастать" записями в таблицы, а не самими таблицами . В общем то , если в процессе работы спроектированной вами структуры БД понадобилась новая таблица , то вы спроектировали свою БД неверно и надо все переделывать.

Для организации данных в БД используется механизм связывания , который имеет три типа связей:

  1. Один к одному.
  2. Один ко многим.
  3. Многие ко многим.

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

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

В качестве первой книги по проектированию БД хотел бы настоятельно рекомендовать :

Линн Бейли - Изучаем SQL (Бестселлеры O'Reilly) - 2012

Книга научит вас проектировать базы данных , понять организацию связей в БД и использовать язык SQL для эффективной обработки данных , хранящихся в вашей БД . Написана живым языком , полна простых и понятных примеров , очень подробна в основах организации БД и вообще просто находка начинающему . Обычно книги по СУБД скучны , непонятны и унылы , что не добавляет рабости обучения , но это совсем не такая , прочитав ее вы наконец поймете , как это делается .