Самый большой difrence - то, что когда-нибудь при изменении внутренней структуры можно все еще поддержать методов get и методы set, как, изменяя их внутреннюю логику, не причиняя пользователям боль API.
Вы не можете.
Хотя синтаксис SQL-92 для добавления внешнего ключа в вашу таблицу будет следующим:
ALTER TABLE child ADD CONSTRAINT fk_child_parent
FOREIGN KEY (parent_id)
REFERENCES parent(id);
SQLite не поддерживает вариант ADD CONSTRAINT
команды ALTER TABLE
( sqlite.org: функции SQL, которые SQLite не реализует ).
Следовательно, единственный способ добавить внешний ключ в sqlite 3.6.1 - это выполнить CREATE TABLE
следующим образом:
CREATE TABLE child (
id INTEGER PRIMARY KEY,
parent_id INTEGER,
description TEXT,
FOREIGN KEY (parent_id) REFERENCES parent(id)
);
К сожалению, вам придется сохранить существующие данные во временную таблицу, отбросьте старую таблицу, создайте новую таблицу с ограничением FK, затем скопируйте данные обратно из временной таблицы. ( sqlite.org - FAQ: Q11 )