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

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

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

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

Добавлено через 2 минуты
Alex_Fedor, Да мне надо не интернет-магазин, а например, человек собрался ехать в магазин на Ленина 1, он выбивает адрес, а далее список продуктов, которые надо купить. Это например.
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 129
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
просматривая записи в мастер таблице, сразу знаем имя славе таблицы. При удалении записи в мастер таблице, удаляется соотв славе таблица.
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 70
30.10.2016, 22:19  [ТС]     Выбрать архитектуру приложения с БД #6
Alex_Fedor, а как потом удалять из двух таблиц сразу?
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 129
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
    }
xaat
40 / 13 / 6
Регистрация: 05.12.2015
Сообщений: 64
31.10.2016, 08:41     Выбрать архитектуру приложения с БД #8
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
когда создаем новую запись. То создается новая славе таблица куда пишем список дел с такими полями.
Для каждой записи в таблице создается отдельная таблица, я правильно понял?!?!?!
Что то это на извращение похоже )
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 129
31.10.2016, 09:46     Выбрать архитектуру приложения с БД #9
Цитата Сообщение от xaat Посмотреть сообщение
это на извращение похоже
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
xaat
40 / 13 / 6
Регистрация: 05.12.2015
Сообщений: 64
31.10.2016, 14:55     Выбрать архитектуру приложения с БД #10
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
Да какой там вариант, это стандартное решение
Цитата Сообщение от naven Посмотреть сообщение
Нужно использовать две таблицы ( в одной адреса с id, в другой товары добавляются с id адреса)
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 129
31.10.2016, 16:31     Выбрать архитектуру приложения с БД #11
Цитата Сообщение от xaat Посмотреть сообщение
Да какой там вариант, это стандартное решение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить. Я так прикинул проще создавать и удалять отдельные таблицы.
demixdn
6 / 6 / 2
Регистрация: 31.10.2016
Сообщений: 15
31.10.2016, 18:08     Выбрать архитектуру приложения с БД #12
Не смог удержаться.
Если есть адреса (покупатель) и товары, и присутствует слова "Заказанные товары", то автоматически добавляется 3 таблица: заказ, в котором содержится id покупателя, id товара, и еще служебные поля, если нужно, типа даты заказа или иного. И потом тягать записи из БД с помощью INNER JOIN.
А создавать под каждый адрес таблицу - это глупость.
Создавать в первой таблице список через запятую - это не оптимально. Потом обновлять запись при каждом обновлении заказанных товаров? Или товары вытягивать через WHERE id_<товара> IN(id, id, id)? Это сложная конструкция.
А если к одному адресу будет идти не один заказ, а несколько? Если хотите гибкости, то 3 таблицы.
Опять же, все зависит от ситуации. То, что вы описали, довольно примитивный случай.
В нем можно обойтись 2 таблицами, запись заказанного товара должна иметь id адреса. И тогда обычный select с выборкой по id адреса даст тот результат, что нужен.
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 129
31.10.2016, 20:29     Выбрать архитектуру приложения с БД #13
Цитата Сообщение от demixdn Посмотреть сообщение
Не смог удержаться.
Коды!Коды!
Задача органайзер. Как я понимаю ТК. С вечера составляю список дел на завтра.
1 Магазин на Ленина. подпункты список товаров надо купить.
2 Автомагазин. подпункты также список товаров.
3 Прийти на работу. подпункты там уже список дел.
4 Дача. подпункты список дел.
Предусмотреть возможность удаления из отображаемых списков любого из пунктов или подпунктов. например купил пива запись удалил. На дачу забил запись удалил.
список дел на послезавтра
1 Банк
2 работа
3 Космодром
Список дел на после после завтра
1 накопать картошки
2 библиотека
3 посидеть на киберфорум
4 приготовить ужин.
Само собой везде подпункты
Все что не сделал сегодня автоматом переносится на завтра. И обратите внимание это не магазин. где ид товара можно вписать любому покупателю, или наоборот. В следующий раз в магазин на Ленина пойду через год потому как там слишком дорого. А в атомагазин больше не пойду, ключи от машины жена отобрала.
xaat
40 / 13 / 6
Регистрация: 05.12.2015
Сообщений: 64
01.11.2016, 08:53     Выбрать архитектуру приложения с БД #14
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить.
Я не уверен что мы вообще про реляционные базы данных говорим. Какие запятые, какой поиск id по ячейкам? Вы явно что не то делаете, изучите хотя бы минимальную теорию по работе с базами данных.
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 70
01.11.2016, 19:15  [ТС]     Выбрать архитектуру приложения с БД #15
Всё, у меня получилось реализовать с одной таблицей.

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

Не знаю что выбрать Android
Про архитектуру приложения Android
Android Выбрать с формы TextView

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

Или воспользуйтесь поиском по форуму:
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 70
03.11.2016, 00:12  [ТС]     Выбрать архитектуру приложения с БД #16
по id строки удаляю так
Java
1
2
3
4
5
6
7
8
    public boolean onContextItemSelected(MenuItem item) {
        if (item.getItemId() == CM_DELETE_ID) {
            AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) item
                    .getMenuInfo();
            db.delRec(acmi.id);
             getSupportLoaderManager().getLoader(0).forceLoad();
            return true;
        }
Java
1
2
3
    public void delRec(long id) {
        mDB.delete(DB_TABLE, COLUMN_ID + " = " + id, null);
    }
А по значению не могу понять как. Чтоб строки с одинаковым значением удалялись.
Yandex
Объявления
03.11.2016, 00:12     Выбрать архитектуру приложения с БД
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru