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

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

Войти
Регистрация
Восстановить пароль
 
 
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
#1

Выбрать архитектуру приложения с БД - Программирование Android

17.10.2016, 16:50. Просмотров 485. Ответов 15
Метки нет (Все метки)

Доброго времени суток, уважаемые программисты! Помогите разобраться. Пытаюсь написать приложение с базой данных, которую заполняет пользователь. Должно быть так: открываем приложение здесь список, например, адресов, которые пользователь сам добавляет, при нажатии на один из адресов выводится список, например, заказанных товаров, которые тоже добавляет пользователь. Вопрос - Нужно использовать две таблицы ( в одной адреса с id, в другой товары добавляются с id адреса) или можно использовать одну таблицу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2016, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выбрать архитектуру приложения с БД (Программирование Android):

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

Про архитектуру приложения - Программирование Android
Простите за возможную глупость вопроса - в мыслях запутался, а сам не выпутаюсь:) Допустим, есть одно активити с целой кучей...

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

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

Приложение с БД - посоветуйте архитектуру - Программирование Android
Два вопроса , они родственные между собой: Пишу приложение ну допустим "Смешные историй" , в котором каждый день будут добавляться...

Клиент-серверное приложение - посоветуйте архитектуру - Программирование Android
Всем доброго времени суток. Пишу клиент-серверное приложение с нуля, поэтому вопросов куча) Это уже вторая тема (первая...

15
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
17.10.2016, 17:05 #2
Я бы использовал две таблицы. Первая мастер где поля _id пользователя, адрес пользователя, список товаров. Вторая славе где поля _id товара, стоимость, наличие на складе и тд. В списке показывает содержимое мастер таблицы, при клацании на этом списке выводим вторую таблицу с товарами. При клацании на второй таблице, _id товара записываем через запятую в соотв поле первой таблице. Ну и где нибудь в отдельной активити просмотр и редактирование таблиц.
0
Hellrider_
50 / 50 / 2
Регистрация: 12.03.2013
Сообщений: 171
17.10.2016, 22:03 #3
Как минимум 2 таблицы нужно. А вообще настоятельно рекомендую почитать - SQL-запросы для простых смертных, Практическое руководство по манипулированию данными в SQL, Майкл Дж. Хернандес, Джон Л. Вьескас., 2003. С первых глав приходит понимание, как правильно проектировать свою БД. Без этих знаний, ничего толкового, кроме простых учебных примеров сделать не получится.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
28.10.2016, 00:21  [ТС] #4
Hellrider_, Спасибо за рекомендации. Почему минимум 2 таблицы? Разве нельзя сделать добавлять в одну, а потом группировка и сортировка?

Добавлено через 2 минуты
Alex_Fedor, Да мне надо не интернет-магазин, а например, человек собрался ехать в магазин на Ленина 1, он выбивает адрес, а далее список продуктов, которые надо купить. Это например.
0
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
28.10.2016, 09:51 #5
Делал такое. недобитый проект где то в архивах. В общем принцип был такой. Есть мастер таблица с такими полями куда пишутся места например магазин на ленина.
Java
1
2
3
4
5
6
7
db.execSQL("create table "+TABLE_NAME
                +" (_id integer primary key autoincrement, "
                +PLACE_NAME+" text not null, "
                +GEO_LOCATION_LATITUDE+" double , "
                +GEO_LOCATION_LONGTITUDE+" double , "
                +SECOND_TABLE_NAME+" text );"
                );
когда создаем новую запись. То создается новая славе таблица куда пишем список дел с такими полями.
Java
1
2
3
4
db.execSQL( " create table "+slaveTAble 
                +" (_id integer primary key autoincrement, " 
                +RECORD_DO + " text not null );"
                 );// добавляем таблицу с именем slaveTAble
просматривая записи в мастер таблице, сразу знаем имя славе таблицы. При удалении записи в мастер таблице, удаляется соотв славе таблица.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
30.10.2016, 22:19  [ТС] #6
Alex_Fedor, а как потом удалять из двух таблиц сразу?
0
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
31.10.2016, 08:22 #7
Цитата Сообщение от naven Посмотреть сообщение
двух таблиц сразу?
Из мастера удаляете запись методом db.delete(useTableName, "_id=?", new String[] { String.valueOf(idRecordforDell)});
Для удаления таблицы в дбхелпер напишите такой метод.
Java
1
2
3
public void onDeleteSlaveTable(SQLiteDatabase db,String nameDelTable) {
        db.execSQL("drop table "+nameDelTable);//удаляем таблицу с именем slaveTAble
    }
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
31.10.2016, 08:41 #8
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
когда создаем новую запись. То создается новая славе таблица куда пишем список дел с такими полями.
Для каждой записи в таблице создается отдельная таблица, я правильно понял?!?!?!
Что то это на извращение похоже )
0
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
31.10.2016, 09:46 #9
Цитата Сообщение от xaat Посмотреть сообщение
это на извращение похоже
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
31.10.2016, 14:55 #10
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
Да какой там вариант, это стандартное решение
Цитата Сообщение от naven Посмотреть сообщение
Нужно использовать две таблицы ( в одной адреса с id, в другой товары добавляются с id адреса)
0
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
31.10.2016, 16:31 #11
Цитата Сообщение от xaat Посмотреть сообщение
Да какой там вариант, это стандартное решение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить. Я так прикинул проще создавать и удалять отдельные таблицы.
0
demixdn
199 / 147 / 43
Регистрация: 31.10.2016
Сообщений: 345
31.10.2016, 18:08 #12
Не смог удержаться.
Если есть адреса (покупатель) и товары, и присутствует слова "Заказанные товары", то автоматически добавляется 3 таблица: заказ, в котором содержится id покупателя, id товара, и еще служебные поля, если нужно, типа даты заказа или иного. И потом тягать записи из БД с помощью INNER JOIN.
А создавать под каждый адрес таблицу - это глупость.
Создавать в первой таблице список через запятую - это не оптимально. Потом обновлять запись при каждом обновлении заказанных товаров? Или товары вытягивать через WHERE id_<товара> IN(id, id, id)? Это сложная конструкция.
А если к одному адресу будет идти не один заказ, а несколько? Если хотите гибкости, то 3 таблицы.
Опять же, все зависит от ситуации. То, что вы описали, довольно примитивный случай.
В нем можно обойтись 2 таблицами, запись заказанного товара должна иметь id адреса. И тогда обычный select с выборкой по id адреса даст тот результат, что нужен.
0
Alex_Fedor
31 / 31 / 5
Регистрация: 20.01.2015
Сообщений: 229
31.10.2016, 20:29 #13
Цитата Сообщение от demixdn Посмотреть сообщение
Не смог удержаться.
Коды!Коды!
Задача органайзер. Как я понимаю ТК. С вечера составляю список дел на завтра.
1 Магазин на Ленина. подпункты список товаров надо купить.
2 Автомагазин. подпункты также список товаров.
3 Прийти на работу. подпункты там уже список дел.
4 Дача. подпункты список дел.
Предусмотреть возможность удаления из отображаемых списков любого из пунктов или подпунктов. например купил пива запись удалил. На дачу забил запись удалил.
список дел на послезавтра
1 Банк
2 работа
3 Космодром
Список дел на после после завтра
1 накопать картошки
2 библиотека
3 посидеть на киберфорум
4 приготовить ужин.
Само собой везде подпункты
Все что не сделал сегодня автоматом переносится на завтра. И обратите внимание это не магазин. где ид товара можно вписать любому покупателю, или наоборот. В следующий раз в магазин на Ленина пойду через год потому как там слишком дорого. А в атомагазин больше не пойду, ключи от машины жена отобрала.
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
01.11.2016, 08:53 #14
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить.
Я не уверен что мы вообще про реляционные базы данных говорим. Какие запятые, какой поиск id по ячейкам? Вы явно что не то делаете, изучите хотя бы минимальную теорию по работе с базами данных.
0
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
01.11.2016, 19:15  [ТС] #15
Всё, у меня получилось реализовать с одной таблицей.

Добавлено через 9 часов 45 минут
А если у меня строки сгруппированы, как удалить целую группу? Т.е. это строки с одинаковым значением. Пытаюсь организовать это через контекстное меню.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2016, 19:15
Привет! Вот еще темы с ответами:

Как выбрать архитектуру из 32x и 64x? - Debian Linux
Помогите пожалуйста выбрать между 32-х битной и 64-х битной системой. Характеристики компа: процессор Intel(R) Pentium(R) Dual CPU...

Как выбрать архитектуру и характеристики контроллера - Микроконтроллеры
Всем доброго времени суток. Собственно вот в чем трабл. Как выбрать нужный контроллер и его частоты ? В интернете ничего не нашел, быть...

Простой вопрос про архитектуру проектируемого приложения - C# WCF
Пожалуйста помогите с WCF в Net 4.. Мне необходимо сделать автохостинг сервиса на консольном приложении или на форме. Есть класс...

Лучший способ научиться создавать качественную архитектуру приложения? - C#
Добрый вечер! Подскажите, пожалуйста, свои способы. Спасибо.


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

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

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