Как сделать связь один-ко-многим в sqlite 3?

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

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

Как сделать связь один-ко-многим в sqlite 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

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

@hattie 

Для создания связи один-ко-многим (one-to-many) в SQLite 3 необходимо создать две таблицы и использовать внешний ключ:


Пример:


CREATE TABLE author( id INTEGER PRIMARY KEY, name TEXT NOT NULL );


CREATE TABLE book( id INTEGER PRIMARY KEY, title TEXT NOT NULL, author_id INTEGER NOT NULL, FOREIGN KEY (author_id) REFERENCES author(id) );


Здесь таблица "author" содержит информацию об авторах, а таблица "book" - информацию о книгах. В таблице "book" используется столбец "author_id" для хранения идентификатора автора. Кроме того, в таблице "book" указывается внешний ключ на столбец "id" таблицы "author", что обеспечивает связь один-ко-многим между таблицами.


Пример добавления записей:


INSERT INTO author(name) VALUES('Лев Толстой'); INSERT INTO book(title, author_id) VALUES('Война и мир', 1); INSERT INTO book(title, author_id) VALUES('Анна Каренина', 1);


Здесь добавляются записи об авторе Льве Толстом и двух книгах, которые ему принадлежат.


Пример запроса соединения таблиц для получения списка книг и соответствующих им авторов:


SELECT book.title, author.name FROM book INNER JOIN author ON book.author_id = author.id;


Здесь используется оператор JOIN для объединения таблиц "book" и "author". В запросе указываются столбцы, которые нужно выбрать: "title" из таблицы "book" и "name" из таблицы "author". Оператор ON задает условие, по которому должно происходить объединение таблиц. В данном случае выбираются записи, для которых значение столбца "author_id" в таблице "book" соответствует значению столбца "id" в таблице "author".