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