Как правило, вы не будете напрямую, то есть, если «дополнительная информация» - это переменное количество информации на один идентификатор.
Например, предположим, что студент (предполагается, чтоСтрока студента имеет идентификатор ) имеет х количество заметок.
У вас не будет x столбцов (как если бы вы всегда добавляли новые столбцы).
Было бы неуклюже поместить все заметки в один столбец с разделителем, например что-то вроде «Привет, это моя первая заметка», «Спасибо, это моя вторая заметка» и т. Д.
- например, если запятая разделяет данные, как вы справляетесь с запятыми в примечаниях.
- как вы разделяете данные, скажем, чтобы найти примечание 3?
Что выобычно это нормализует данные и имеет таблицу для заметок, каждая из которых представляет собой отдельную строку.В таблице примечаний будет столбец, в котором относится к примечанию для соответствующего учащегося.- SQLite - это реляционная база данных, которая хорошо справляется с отношениями.
Пример
Рассмотрим следующее, где вместо Student имеется x количество данных (примечаний) вСтол ученика существует еще одна таблица для заметок, и каждая заметка содержит столбец для связи заметки со студентом: -
DROP TABLE IF EXISTS Student;
DROP TABLE IF EXISTS Note;
CREATE TABLE IF NOT EXISTS Student (id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE IF NOT EXISTS Note(id INTEGER PRIMARY KEY, studentReference INTEGER, note TEXT);
INSERT INTO Student (name) VALUES ('Fred'),('Mary'),('Anne'); -- ids will be 1 2 and 3
INSERT INTO Note (studentReference,note) VALUES
(1,'My Note 1'),
(3,'My Note 1'),
(3,'My Note 2'),
(2,'My Note 1'),
(3,'My Note 3'),
(2,'My Note 2'),
(2,'My Note 3'),
(1,'My Note 2'),
(1,'My Note 3'),
(1,'My Note 4'),
(1,'My Note 5'),
(3,'My Note 4');
SELECT * FROM Student; -- The Student table
SELECT * FROM Note; -- The Note table
-- Get the Notes with the Student (both have the same result)
SELECT name, note FROM Note JOIN Student ON Student.id = Note.studentReference ORDER BY Student.name;
SELECT name, note FROM Student JOIN Note ON Student.id = Note.studentReference ORDER BY Student.name;
-- Get the number of notes and all the notes concatenated as a CSV per student
SELECT student.name,count(), group_concat(note) FROM student JOIN Note ON Student.id = Note.studentReference GROUP BY student.id;
Результаты
1 Стол ученика
![enter image description here](https://i.stack.imgur.com/Q8XVB.png)
2 Таблица заметок
![enter image description here](https://i.stack.imgur.com/e4WAf.png)
3 и 4 Ученик и заметки
![enter image description here](https://i.stack.imgur.com/RfGlQ.png)
5 Количество заметок и заметок в виде CSV на одного учащегося
![enter image description here](https://i.stack.imgur.com/KoQPe.png)