Нубский вопрос. Я собираю свою первую базу данных и сталкиваюсь со следующей проблемой дизайна: у меня есть класс, который определяет книгу (например, ее название) и класс, который определяет страницу (например, это дизайн).
Таблица для учебника выглядела бы так:
Title | PAGE1 | PAGE2 | PAGE3
Book-One | SAMPLE1-UUID | SAMPLE2-UUID | SAMPLE3-UUID
Book-Two | SAMPLE4-UUID | SAMPLE5-UUID | SAMPLE6-UUID
Таблица для страницы класса:
UUID | FONT | CONTENTS etc.
SAMPLE1-UUID | Times | Example
SAMPLE2-UUID | Arial | Example Two
SAMPLE3-UUID | Verdena | Example Three
Теперь, поскольку каждая страница уникальна и не может быть повторно использована в другой книге, я не могу использовать отношение «многие ко многим» для «Страниц». Я мог бы использовать Foreign-Key для связи двух таблиц, то есть связать SAMPLE1-UUID таблицы книг с SAMPLE1-UUID таблицы страниц. Преимущество этого состоит в том, что вы не создаете одну и ту же запись дважды.
Однако мне не нравится идея иметь фиксированное количество строк для моих страниц. В приведенном выше примере для класса Book мне нужно будет определить определенный набор страниц, например, PAGE1, PAGE2, PAGE3, PAGE4, ... PAGE99. В идеале все, что мне нужно, это гибкий список страниц для моего класса книги, например:
Name | Pages
Book-One | "SAMPLE1-UUID, SAMPLE2-UUID"
Book-Two | "SAMPLE4-UUID, SAMPLE5-UUID, SAMPLE6-UUID"
Pages будет простым CharField, а его содержимое будет списком. Но тогда у меня возникает проблема, заключающаяся в том, что две таблицы больше не связаны и что мне придется создавать каждую запись дважды (т.е. мне нужно будет ввести SAMPLE1-UUID как в таблице страниц, так и в таблице книг).
Есть ли другой способ создать эту базу данных? Спасибо за любое предложение!