Определение внешнего ключа в sqlite - PullRequest
2 голосов
/ 13 июля 2009

Есть ли способ определить отношения между таблицами и дать внешние ключи между ними при использовании sqlite в Objective c

Ответы [ 6 ]

2 голосов
/ 13 июля 2009

вы можете использовать внешние ключи в sqlite так же, как и в других системах sql-datebase, но помните, что ограничения внешних ключей в sqlite не проверяются / применяются!

1 голос
/ 29 ноября 2012

Вы можете установить один флаг в SQLite для связи с внешним ключом.

Шаг 1: Перейти в меню инструментов в SQLiteManager.

Шаг 2. Откройте вкладку SQL при подключении.

Шаг 3: Установите «PRAGMA foreign_keys = ON;» и сохраните его.

Вы можете использовать базу данных как обычные отношения PK и FK.

Спасибо.

1 голос
/ 13 февраля 2012

Вы можете легко создать внешний ключ, добавив оператор FOREIGN KEY в команду SQL CREATE.

Например, когда есть человек и адрес объекта:

  • Создайте таблицу персон: СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ ЧЕЛОВЕК НЕ СУЩЕСТВУЕТ (ID INTEGER PRIMARY KEY AUTOINCREMENT, ТЕКСТ ИМЕНИ ФИО, ТЕКСТ ЛАСТНИИ)

  • Создать таблицу адресов: СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ АДРЕС (ID INTEGER PRIMARY KEY AUTOINCREMENT, TRETNAME TRET, STREETNUMBER INT, PERSONID INT, FOREIGN KEY (PERSONID) ССЫЛКИ ЛИЦО (ID))

Это пометит столбец PERSONID таблицы ADDRESS как внешний ключ, указывающий на столбец ID таблицы PERSON.

Вы также можете найти полный учебник по адресу: http://www.apptite.be/tutorial_ios_sqlite.php

1 голос
/ 13 июля 2009

SQLite не является "реальной" реляционной -базой, вы можете иметь поля, которые ссылаются на первичный ключ других таблиц, но вы должны контролировать все из своего кода. То же самое для удаления, без CASCADE или других элементов управления целостностью.

0 голосов
/ 18 сентября 2009

Если вы используете инфраструктуру Cocoa CoreData и определяете управляемую объектную модель, используя SQLite в качестве постоянного хранилища - вы можете указать отношения между вашей моделью и указать правила удаления (такие как каскад или запрет), и они будут выполнены и проверяется при внесении изменений в ваши сущности из Objective-C, и фиксируется обратно в базу данных при сохранении.

Отношения и правила очень похожи на правила внешнего ключа базы данных, но выполняются средой CoreData во время выполнения target-C. База данных SQLite просто используется в качестве хранилища для графа вашего управляемого объекта.

Вот руководство по программированию CoreData на сайте разработчиков Apple:

NB. Этот фреймворк относится к Какао, и в вашем вопросе не упоминается использование Какао, просто Objective-C

0 голосов
/ 13 июля 2009

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

большое преимущество этого решения в том, что оно не зависит от языка программирования. после настройки вам больше не нужно заботиться о триггерах в исходном коде. см. http://www.sqlite.org/omitted.html для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...