Чтобы сделать это относительно просто, но без особой безопасности, добавьте столбец в таблицу (таблицы) для хранения (или представления) учетной записи.Когда вы получаете доступ к данным, включается условие (предложение WHERE), позволяющее выбирать только строки для учетной записи.
Примите во внимание следующее: -
DROP TABLE IF EXISTS fb_account_data_simple;
CREATE TABLE IF NOT EXISTS fb_account_data_simple (_id INTEGER PRIMARY KEY, fb_data TEXT, fb_account TEXT);
INSERT INTO fb_account_data_simple (fb_data, fb_account) VALUES
('Face Book Data 001','FRED'),
('Face Book Data 002','FRED'),
('Face Book Data 001','MARY'),
('Face Book Data 003','MARY'),
('Face Book Data 004','MARY'),
('Face Book Date 003','FRED');
;
SELECT * FROM fb_account_data_simple WHERE fb_account = 'MARY';
This;
- создает таблицу с именем fb_account_data_simple , которая имеет два столбца 1 для данных и 1 для имени учетной записи личной книги.
- Затем загружает 6 строк данных по 3 строки для каждой учетной записи.
- Наконец, он извлекает только строки для учетной записи с именем MARY, в результате чего: -
Однако приведенное выше не нормализованопоскольку одно и то же имя учетной записи хранится несколько раз.
Нормализованная версия будет иметь таблицу для учетной записи и столбец в основной таблице, которая ссылается на учетную запись.
Например, рассмотрим следующее: -
DROP TABLE IF EXISTS fb_account;
CREATE TABLE IF NOT EXISTS fb_account (_id INTEGER PRIMARY KEY, account TEXT);
INSERT INTO fb_account (account) VALUES
('FRED'), -- will very likely have an _id value of 1 automatically generated by SQLite
('MARY') -- will very likely have an _id value of 2 automatically assigned by SQLite
;
DROP TABLE IF EXISTS fb_data;
CREATE TABLE IF NOT EXISTS fb_data (_id INTEGER PRIMARY KEY, fb_data TEXT, account_reference INTEGER);
INSERT INTO fb_data (fb_data, account_reference) VALUES
('Face Book Data 001',1),
('Face Book Data 002',1),
('Face Book Data 001',2),
('Face Book Data 003',2),
('Face Book Data 004',2),
('Face Book Date 003',1);
;
SELECT fb_data, account
FROM fb_data
JOIN fb_account ON account_reference = fb_ACCOUNT._id
WHERE account = 'MARY'
This;
- создает таблицу для учетных записей
- , затем загружает две учетные записи.
- , затем создаеттаблица для данных
- , затем он загружает некоторые данные дляr обе учетные записи (используя уникальный идентификатор строки для учетной записи)
- затем извлекает данные из таблицы данных и получает соответствующие данные из учетной записи через JOIN
Конечный результат такой же (насколько данные полезны для конечного пользователя): -
Хотяэто кажется более трудоемким для того же результата, он считается лучшим методом, поскольку он более эффективен (цифровые ключи / индексы, как правило, быстрее обходятся и используют меньше памяти и, следовательно, уменьшают накладные расходы ввода-вывода)
Есливы хотели, чтобы данные были в безопасности, тогда это более сложный вопрос, но вполне осуществимый.