Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

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

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

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

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

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

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

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

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

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Какой способ хранения анимации эффективнее?
Есть набор кадров с анимацией "персонажа". Можно хранить каждый кадр в виде...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

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

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

5
V0v1k
1160 / 984 / 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;
1
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, так что, может, тоже придумал не совсем оптимально..
0
V0v1k
1160 / 984 / 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
1
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
12.01.2013, 00:57  [ТС] #5
То что надо! Прекрасное решение, а то я слишком усложнил
Спасибо большое, V0v1k.
0
V0v1k
1160 / 984 / 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/training/RZ006149432.aspx?section=23
0
12.01.2013, 01:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2013, 01:00
Привет! Вот еще темы с решениями:

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

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

Подскажите лучший способ хранения данных, чтение/запись файлов
Добрый день. Пишу тренажер для обучению слов (англ-рус). Слова хранятся в файле...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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