Загрузка данных


-- =============================================
-- 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;