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

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

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

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

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

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

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

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

Добавлено через 2 минуты
Alex_Fedor, Да мне надо не интернет-магазин, а например, человек собрался ехать в магазин на Ленина 1, он выбивает адрес, а далее список продуктов, которые надо купить. Это например.
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
28.10.2016, 09:51
Делал такое. недобитый проект где то в архивах. В общем принцип был такой. Есть мастер таблица с такими полями куда пишутся места например магазин на ленина.
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  [ТС]
Alex_Fedor, а как потом удалять из двух таблиц сразу?
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
31.10.2016, 08:22
Цитата Сообщение от 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
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
когда создаем новую запись. То создается новая славе таблица куда пишем список дел с такими полями.
Для каждой записи в таблице создается отдельная таблица, я правильно понял?!?!?!
Что то это на извращение похоже )
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
31.10.2016, 09:46
Цитата Сообщение от xaat Посмотреть сообщение
это на извращение похоже
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
0
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
31.10.2016, 14:55
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
Поняли правильно. Мне так проще показалось. Вариант рабочий. Предложите свой
Да какой там вариант, это стандартное решение
Цитата Сообщение от naven Посмотреть сообщение
Нужно использовать две таблицы ( в одной адреса с id, в другой товары добавляются с id адреса)
0
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
31.10.2016, 16:31
Цитата Сообщение от xaat Посмотреть сообщение
Да какой там вариант, это стандартное решение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить. Я так прикинул проще создавать и удалять отдельные таблицы.
0
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
31.10.2016, 18:08
Не смог удержаться.
Если есть адреса (покупатель) и товары, и присутствует слова "Заказанные товары", то автоматически добавляется 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
Цитата Сообщение от 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
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
В ячейке мастер таблицы строка в которой через запятую куча ид из второй таблицы. Надо при добавлении записи в первой таблице добавить записи во второй таблице. Кроме того во второй таблице также куча записей. Самое веселое при удалении или добавлении записи во второй таблице. Надо ид этой записи, найти во всех ячейках где она фигурирует и подправить.
Я не уверен что мы вообще про реляционные базы данных говорим. Какие запятые, какой поиск id по ячейкам? Вы явно что не то делаете, изучите хотя бы минимальную теорию по работе с базами данных.
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
01.11.2016, 19:15  [ТС]
Всё, у меня получилось реализовать с одной таблицей.

Добавлено через 9 часов 45 минут
А если у меня строки сгруппированы, как удалить целую группу? Т.е. это строки с одинаковым значением. Пытаюсь организовать это через контекстное меню.
0
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 73
03.11.2016, 00:12  [ТС]
по 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2016, 00:12
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru