-- =============================================
-- 1. Создание таблиц (3НФ)
-- =============================================
-- Справочник авторов
CREATE TABLE Authors (
AuthorID INT PRIMARY KEY AUTO_INCREMENT,
AuthorName VARCHAR(100) NOT NULL UNIQUE,
Country VARCHAR(100) NOT NULL
);
-- Справочник издательств
CREATE TABLE Publishers (
PublisherID INT PRIMARY KEY AUTO_INCREMENT,
PublisherName VARCHAR(100) NOT NULL UNIQUE,
City VARCHAR(100) NOT NULL
);
-- Основная таблица книг
CREATE TABLE Books (
BookID VARCHAR(10) PRIMARY KEY,
Title VARCHAR(200) NOT NULL,
AuthorID INT NOT NULL,
PublisherID INT NOT NULL,
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID),
FOREIGN KEY (PublisherID) REFERENCES Publishers(PublisherID)
);
-- =============================================
-- 2. Перенос данных (исходная таблица называлась OldBooks)
-- =============================================
-- Заполнение Authors
INSERT INTO Authors (AuthorName, Country)
SELECT DISTINCT Автор, `Страна Автора`
FROM OldBooks;
-- Заполнение Publishers
INSERT INTO Publishers (PublisherName, City)
SELECT DISTINCT Издательство, `Город Издательства`
FROM OldBooks;
-- Заполнение Books (связываем через JOIN)
INSERT INTO Books (BookID, Title, AuthorID, PublisherID)
SELECT
o.`ID Книги`,
o.Название,
a.AuthorID,
p.PublisherID
FROM OldBooks o
JOIN Authors a ON o.Автор = a.AuthorName
JOIN Publishers p ON o.Издательство = p.PublisherName;
-- =============================================
-- 3. Очистка (удаление старой таблицы)
-- =============================================
DROP TABLE OldBooks;