Иностранный ключ в таблицах android fts4

У меня есть следующие таблицы SQL

Parent(_id,name) Kid(_id,name,parent_id)// где parent_id - внешний ключ Toy(_id,name,…,kid_id)// где kid_id - внешний ключ

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

Появилась новая необходимость включить функцию поиска в приложение. Для этого мне нужно перейти на таблицу FTS4. Как определить таблицу fts4, чтобы не потерять возможность поиска по внешнему ключу? Я не испытываю в ФТС ни на что. Но я читал о docid против rowid. Могу ли я использовать docid для значений внешнего ключа? Кто-нибудь, пожалуйста, приведите пример, такой как

CREATE TABLE Kid, использующий fts4(rowid, name, docid); // где docid на самом деле parent_id

1 ответ

Таблицы FTS не очень похожи на реальные таблицы; думать о них как об индексах.

Таблицы FTS должны содержать только текстовые столбцы; хранение parent_id в таблице FTS нет смысла. Кроме того, docid такой же, как rowidи должен совпадать с первичным ключом "реальной" таблицы.

Поэтому таблицы должны выглядеть так:

CREATE TABLE Kid (
    _id INTEGER PRIMARY KEY,
    name TEXT,
    parent_id INTEGER REFERENCES Parent(_id)
);
CREATE VIRTUAL TABLE Kid_FTS USING FTS4 (name);
Другие вопросы по тегам