I have a project that has a template that contains N pages, these pages contains N groups of interactions and single interactions and they need to be ordered . The interaction can be content, survey, question or an avaliation.
I’m worried about the page matrix is not be the best solution. There is a database schema design that handle store content of pages of N sites with a good performance and a good normalization too?
interface Template {
name: string;
friendly_url: string;
pages: Page[][];
}
interface Page {
type: 'group' | 'interaction';
group?: Group;
interaction?: Interaction;
}
interface Group {
name: string;
interactions: Interaction[];
}
interface Content {
description: string;
images?: string[];
}
interface Interaction {
type: 'content' | 'survey' | 'question' | 'avaliation';
required: boolean;
content?: Content;
survey?: {};
question?: {
content: Content;
options: Content[];
};
avaliation?: {
content: Content;
};
weblink?: {
content: Content;
link: string;
};
}