Как установить связь между таблицами в sqlite?

Пользователь

от jorge , в категории: SQL , 2 года назад

Как установить связь между таблицами в sqlite?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от vladimir , 2 года назад

@jorge 

Чтобы установить связь между таблицами в SQLite, нужно использовать конструкцию FOREIGN KEY. Данный ключ указывает, что определенное поле в текущей таблице ссылается на первичный ключ другой таблицы.


Давайте рассмотрим пример. У нас есть таблица Person с полями id (первичный ключ) и name, и таблица Order с полями id (первичный ключ), person_id (внешний ключ) и product. В таблице Order поле person_id ссылается на поле id таблицы Person. Чтобы создать такую связь, нужно выполнить следующий запрос:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
CREATE TABLE Person (
  id INTEGER PRIMARY KEY,
  name TEXT
);

CREATE TABLE Order (
  id INTEGER PRIMARY KEY,
  person_id INTEGER,
  product TEXT,
  FOREIGN KEY (person_id) REFERENCES Person(id)
);


Таким образом, в таблице Order каждая запись связана с определенной записью в таблице Person, и мы можем использовать эту связь при выполнении запросов к базе да

Пользователь

от nicola , год назад

@jorge 

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


SELECT * FROM Order WHERE person_id = <person_id>;


Где <person_id> - это идентификатор персоны, для которой мы хотим получить заказы.


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


PRAGMA foreign_keys = ON;


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