Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые программисты! Помогите разобраться. Пытаюсь написать приложение с базой данных, которую заполняет пользователь. Должно быть так: открываем приложение здесь список, например, адресов, которые пользователь сам добавляет, при нажатии на один из адресов выводится список, например, заказанных товаров, которые тоже добавляет пользователь. Вопрос - Нужно использовать две таблицы ( в одной адреса с id, в другой товары добавляются с id адреса) или можно использовать одну таблицу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2016, 16:50
Ответы с готовыми решениями:

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

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

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

Как выбрать архитектуру из 32x и 64x?
Помогите пожалуйста выбрать между 32-х битной и 64-х битной системой. Характеристики компа: ...

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

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

Добавлено через 9 часов 45 минут
А если у меня строки сгруппированы, как удалить целую группу? Т.е. это строки с одинаковым значением. Пытаюсь организовать это через контекстное меню.
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
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);
    }
А по значению не могу понять как. Чтоб строки с одинаковым значением удалялись.
0
03.11.2016, 00:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2016, 00:12
Помогаю со студенческими работами здесь

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

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

Как построить архитектуру приложения?
Здравствуйте! Пишу клеточный автомат. Присутствует ограниченное поле (Например, двухмерный...

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru