Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Наилучший способ хранения "таблиц в таблицах" - Программирование Android

11.01.2013, 15:02. Просмотров 501. Ответов 5
Метки нет (Все метки)

Не знал, как правильней назвать тему, вышло так

На тему нижеописанного приложения я уже начинал тему на форуме, но сейчас уже дело касается другой его стороны.
Вкратце: приложение парсит театральный сайт, забирая список спектаклей и состав артистов на каждый из них. С постоянным подключением к инету всё работает, и теперь хотелось бы сделать возможность оффлайновой работы.

В чём, собственно, вопрос:
Есть массив с названиями спектаклей. Последовательно вычитываю составы, имея возможность складывать их аналогично в массивы.
Как лучше сохранять такие связанные между собой данные (массив названий спектаклей -> спектакль_N -> массив артистов)? С использованием БД, текстовых файлов в памяти телефона, либо как-то ещё?

Извиняюсь, что создаю уже третью тему с различными вопросами о своём приложении, но уж очень хочется с самого начала изучения Андроид усвоить правильные методы написания кода.

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наилучший способ хранения "таблиц в таблицах" (Программирование Android):

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - "списки_жанров", "фильмы", "режиссеры" мне...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

Какой способ хранения анимации эффективнее? - Программирование Android
Есть набор кадров с анимацией "персонажа". Можно хранить каждый кадр в виде отдельной картинки и загружать их в массив, чтобы по номеру...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio" - Программирование Android
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора данных. Для использования его c WMS. После долгих раздумий было...

При эмулировании вместо надписи "Hello world" отображается "android" - Программирование Android
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил среду, все настроил как на google.developers . Когда...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.01.2013, 23:17 #2
Java
1
2
3
4
5
6
7
8
9
10
11
public class Performance {
              private List<Artist> mArtists;
...
}
....
public class Artist {
...
}
 
...
private List<Performance> mPerformances;
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
12.01.2013, 00:06  [ТС] #3
Спасибо, V0v1k, очень красивая конструкция!
Я сначала жалел, что в JAVA нет структур, как в С/С++, но теперь вижу, что в этом отношении возможности языка гораздо шире. Супер.

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

Создать базу данных с тремя таблицами:
1-я таблица - спектакли, поля (кроме primary key):
Performance (название спектакля)
Perf_ID (ID группы полей других таблиц с именами артистов и персонажей)

2-я таблица - актёры, поля (кроме primary key):
Actor_Name (имя актёра)
Perf_ID (ID спектакля, к которому относится)
Pers_ID(ID персонажа, с которым связан)

3-я таблица - персонажи, поля (кроме primary key):
Pers_Name (имя персонажа)
Perf_ID (ID спектакля, к которому относится)
Actor_ID(ID актёра, с которым связан)

Например:
1-я таблица:
Performance = "Щелкунчик"
Perf_ID = 12

2-я таблица:
Actor_Name = "Иван Иванов"
Perf_ID = 12
Pers_ID = 3

3-я таблица:
Pers_Name = "2-я снежинка"
Perf_ID = 12
Actor_ID = 3

и т.д. И таким образом находить связанные между собой записи. Базы данных я впервые начал юзать одновременно с изучением Android, так что, может, тоже придумал не совсем оптимально..
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.01.2013, 00:49 #4
1-я таблица - performances
id - primary key
name

2-я таблица - actors
id - primary key
name

3-я таблица - characters
id - primary key
actors_id - foreign key
performances_id - foreign key
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
12.01.2013, 00:57  [ТС] #5
То что надо! Прекрасное решение, а то я слишком усложнил
Спасибо большое, V0v1k.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.01.2013, 01:00 #6
правда здесь не предусмотрена ситуация что кроме того, что актер может играть нескольких персонажей еще и одного персонажа могут играть несколько актеров (http://www.firststeps.ru/mfc/msdn/r.php?117 - вот вам связь много ко многим на всякий случай)

Добавлено через 18 секунд
http://office.microsoft.com/ru-ru/tr...spx?section=23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 01:00
Привет! Вот еще темы с ответами:

Подскажите лучший способ хранения данных, чтение/запись файлов - Программирование Android
Добрый день. Пишу тренажер для обучению слов (англ-рус). Слова хранятся в файле .txt в виде &quot;arrow | стрела \n...&quot; Мне необходимо хранить...

Как прикрутить "свой браузер" к странице - "фрагмент" - Программирование Android
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается прикрутить код браузера к странице fragments.выводиться должно на-...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример

Что означают конструкции "finally" и "throw new"? - Программирование Android
Я с Java уже давно, но с этим столкнулся в первый раз. Объясните, пожалуйста, что означают вот это &quot;finally&quot; и &quot;throw new&quot;. Вот пример...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.01.2013, 01:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru