Я думаю, у вас правильная идея. Вам нужны две таблицы, и они должны выглядеть примерно так:
create table page (
id bigint primary key not null,
title varchar(100) not null,
-- More columns here.
-- The last version of the content column can added here as redundancy,
-- for performance reasons.
last_version_id bigint, -- allows null
);
create table page_version (
id bigint primary key not null,
content mediumtext not null,
page_id bigint not null,
constraint fk_pv_page foreign key (page_id)
references page (id)
);
alter table page add
constraint fk_page_version foreign key (last_version_id)
references page_version (id);
Последняя версия столбца содержимого может быть добавлена в таблицу page
(будет избыточной) для повышения производительности при чтении / отображении страниц.
Чтение страниц обычно гораздо чаще, чем их обновление, поэтому избыточность может сделать ваш сайт быстрее.
Обратите внимание, что столбец last_version_id
допускает нулевые значения, поэтому вы можете фактически вставить / обновить строку в MySQL (в которой не реализована отсрочка проверки ограничений).