Таблица базы данных с динамическими строками и столбцами

Я собираюсь создать приложение, которое будет получать строковые имена людей с помощью EditText, а затем сохранять их в таблице1, имеющей один столбец в базе данных. Также есть еще одна таблица 2, в которой несколько столбцов равны количеству имен людей в таблице 1, а строки - это баллы человека (целые числа). У меня есть: «MainActivity», который показывает table2, «AddPersonActivity», который показывает table1 и позволяет пользователю добавлять людей, «AddScoreActivity», который позволяет пользователю вставлять оценки для каждого человека, класс «dbHelper», который управляет моей базой данных. Мне нужно AddScoreActivity для динамического отображения EditText для каждого человека и dbHelper, чтобы поместить их в нужное место в table2. Поскольку я новичок в Android, может ли кто-нибудь дать мне подсказку или пример, чтобы пользователь мог вставить столько, сколько пожелает.

Пожалуйста, улучшите написание этого вопроса. Я не мог этого понять.

The Impaler 01.05.2018 20:00

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

Mohammad Reza Norasideh 01.05.2018 21:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
218
1

Ответы 1

В типичных реляционных базах данных вы не можете добавлять столбцы динамически.

При этом некоторые базы данных (например, PostgreSQL) реализуют тип данных array. Если столбец имеет тип массива, он может содержать несколько значений. У вас даже могут быть многомерные массивы. Например, это типичный случай:

create table person (
  id int primary key not null,
  properties text[]
);

Каждая строка в этой таблице включает идентификатор и ноль или несколько значений свойств, хранящихся в массиве.

Чаще всего, если у вас есть такие требования, вы будете использовать более высокую нормальную форму, разделив таблицу на две части, как показано ниже:

create table person (
  id int primary key not null
);

create table person_property (
  value text,
  person_id int not null,
  constraint fk_prop_person foreign key (person_id) 
    references person (id)
);

Таким образом проще управлять данными. Во второй структуре:

  • Вам не нужно создавать полный новый массив, когда в нем заканчиваются элементы, и вам нужно добавить еще один.
  • Запросы SQL писать намного проще.
  • В общем, вставка / обновление / удаление свойств очень проста по сравнению с решением, использующим массивы.

Другие вопросы по теме