С учетом следующих определений таблиц данных в SQLite версии 3.7.5:
CREATE TABLE [Books] (
[Title] VARCHAR(125) NOT NULL,
[YearPublished] INT,
CONSTRAINT [CK_YearPublished] CHECK(YearPublished >= 1400));
CREATE TABLE [People] (
[FirstName] VARCHAR(25) NOT NULL,
[LastName] VARCHAR(45) NOT NULL,
[MiddleName] VARCHAR(25),
CONSTRAINT [UQ_PersonName] UNIQUE([FirstName], [LastName], [MiddleName]));
CREATE TABLE [BooksAuthorsXRef] (
[BookID] INT NOT NULL CONSTRAINT [FK_BookID] REFERENCES [Books]([rowid]),
[PersonID] INT NOT NULL CONSTRAINT [FK_PersonID] REFERENCES [People]([rowid]));
Какую команду SQL можно использовать для заполнения значений полей BookID и PersonID в таблице данных BooksAuthorsXRef, чтобы использовать значения для rowid для конкретного заголовка в таблице Books, который будет связан с rowid в таблице Persons для данного Набор значений LastName, FirstName и MiddleName?
Я уже заполнил таблицу Книг одной записью;
INSERT INTO
Books
VALUES
('Stingray Shuffle', 2003);
И таблица Persons заполнена следующей записью:
INSERT INTO
People
(LastName, FirstName)
VALUES
('Dorsey', 'Tim')
Какую команду SQL я бы использовал в SQLite, чтобы определить, что Тим Дорси (Persons rowid = 1) является автором книги под названием «Stingray Shuffle» в таблице Books (Books rowid = 1)?
Кроме того, основываясь на определениях таблицы данных, необходимы ли какие-либо изменения, чтобы сделать добавление и изменение записей перекрестных ссылок книг и лиц в таблице данных BooksAuthorsXRef более управляемыми и более простыми при сохранении некоторой степени ссылочной целостности?
Заранее спасибо за ваше время, помощь и терпение.