2016-05-20 4 views
0

Я смущен о правильном использовании и реализации «Foreign KEY» в базе данных SQLite на Android.Зарубежная база данных Android

Я создал БД с несколькими отношениями, следующим образом:

CREATE TABLE "food" (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 
`name` TEXT NOT NULL, 
`description` TEXT, 
`category_id` INTEGER, 
FOREIGN KEY(`category_id`) REFERENCES food(_id)) 

CREATE TABLE `category` (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 
`cagory_name` TEXT NOT NULL) 

CREATE TABLE "favourites" (
`_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, 
`id_favourite` INTEGER NOT NULL, 
FOREIGN KEY(`id_favourite`) REFERENCES food (_id)) 

Как вы можете видеть, есть 3 таблицы и _id из «пищи» является внешним ключом, соединяющая таблицы «категория» и " избранное».

Теперь, в Android, я не вижу, что происходит НИЧЕГО, что доказывает, что я создал такое отношение между таблицами. Я пропустил некоторые заявления, чтобы сделать его эффективным? Как это работает в Android?

ответ

0

Внешняя ссылка категории_id выглядит странно. Есть причина, это:

FOREIGN KEY(`category_id`) REFERENCES food(_id) 

и не

FOREIGN KEY(`category_id`) REFERENCES category(_id) 

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

PRAGMA foreign_keys = ON; 

См http://www.sqlite.org/foreignkeys.html для документации.

+0

Да, вы правы, это ошибка. Но, кроме этого, я до сих пор не вижу ясного использования внешнего ключа в Android – Alex

+0

А я вижу, вы проверяете противоречие и не выполняете эти тесты? Или вы просто не видите необходимости в этом? – mattdeak

+0

Я тестирую его, и я не вижу различий, если добавлю атрибут FOREIGN KEY, поэтому я предполагаю, что мне не хватает части кода для реализации в Android Studio ... Например: я могу добавить ссылки на _id, что не существует, и приложение все еще работает без проблем ... – Alex

Смежные вопросы