¿Cómo se diseñaría una base de datos para una aplicación web que permita a los usuarios crear sus propias páginas web basadas en una plantilla compartida entre todos los usuarios?

El código fuente de la plantilla no se almacenaría en una base de datos.

Se almacenaría como css, html / xslt y js.

Entonces se trataría simplemente de almacenar el nombre de la plantilla en la base de datos. En ese punto, se vuelve trivial agregar más temas y dejar que el usuario elija.

theme1 / css / file.css

theme1 / js / file.js

theme2 / css / file.css

theme2 / js / file.js

Y en la base de datos, simplemente almacena theme1 o theme2. Luego inyecte eso en la página durante el renderizado inicial.

En cuanto al contenido, llamaría a cada área de una página zona. zona1, zona2, etc., etc.

entonces las filas de su base de datos pueden ser algo (y REALMENTE estoy simplificando demasiado aquí):

id – pageid – zona – contenido

Cada página tiene su propio nombre en la base de datos, en una tabla de páginas

id: nombre de página

La identificación aquí se utiliza como referencia en la tabla de zonas.

Como nota al margen, ¿sabía que Yahoo fue el primero en ofrecer una herramienta en el navegador como esta, que todos los demás, como wix, web, squarespace, etc., copiaron? Se llamaba Yahoo! Solución del sitio. Admitía galerías, videos, archivos de audio, formularios personalizados, etc.