У меня есть библиотека, и я хочу перенести ее из старой системы в новую оптимизированную.
Старая библиотека была построена с использованием MS Access (файлы mdb), где каждая книга представляет собой отдельный файл. Каждая книга состоит из двух таблиц: одна для названий глав, а вторая - для содержания. Существует также один файл mdb, который содержит все названия книг, номера страниц для каждой книги, имена авторов и другую общую информацию.
Новый движок системной базы данных - MySQL, поэтому у меня есть три (возможно) возможности для хранения книг: 1- Храните все названия глав книг в одной таблице, а все содержимое книг - в другой огромной таблице. 2- Храните названия глав всех книг в одной таблице, а содержание каждой книги - в таблице для этой книги. (так что, если у меня 5 книг, я получу 1 таблицу для названий глав и 5 для содержания). 3- Сохраните их как дизайн старой системы, в каждой книге есть две таблицы, одна для названий глав, а вторая - для содержания.
Я не предпочитаю использовать несколько баз данных, одна база данных может отлично справиться с этой задачей, как и блоги, размещенные на wordpress.com (ага, у них огромная база данных и, конечно, они используют другие методы, но я говорю об архитектуре системы БД) .
В этой библиотеке более 500 книг, и их количество постоянно увеличивается.
Как вы думаете?

Ни один из вышеперечисленных. Нет причин, по которым вам нужно отделять названия глав от содержания глав. Но вам нужна одна таблица для самих названий книг. Вот предлагаемая структура таблицы:
CREATE TABLE books (
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
published DATE NOT NULL,
isbn VARCHAR(16) NOT NULL
-- etc.
);
CREATE TABLE chapters (
book_id BIGINT UNSIGNED NOT NULL,
chapter_id SERIAL,
chapter_num VARCHAR(10) NOT NULL, -- varchar to allow chapter "VII."
title VARCHAR(100) NOT NULL,
content MEDIUMTEXT,
PRIMARY KEY (book_id, chapter_id),
FOREIGN KEY (book_id) REFERENCES books(book_id)
);
Несколько тысяч строк в таблице chapters тривиально для такой базы данных, как MySQL.
Вот моя рекомендация:
Таблица книг с первичным ключом, названием, ISBN, издателем и т. д. Таблица авторов с первичным ключом, именем и внешним ключом для Книги. Таблица содержимого с первичным ключом, номером главы, названием главы, путем к содержимому и внешним ключом к книгам.
Я бы не стал хранить в базе данных содержимое главы как BLOB или CLOB. В них нельзя искать. Лучше оставить их в файловой системе и просто сохранить относительный или абсолютный путь к файлу в базе данных.
Вы можете использовать Lucene для индексации содержимого, чтобы разрешить поиск содержимого, подобный Google. Это было бы улучшением по сравнению с вашей нынешней системой.