n.e*_*ind 2 database django postgresql django-models
一个菜鸟问题.我正在整理我的第一个数据库并遇到以下设计问题:我有一个定义书籍的类(例如它的标题)和一个定义页面的类(例如它的设计).
课本表看起来如此:
Title | PAGE1 | PAGE2 | PAGE3
Book-One | SAMPLE1-UUID | SAMPLE2-UUID | SAMPLE3-UUID
Book-Two | SAMPLE4-UUID | SAMPLE5-UUID | SAMPLE6-UUID
Run Code Online (Sandbox Code Playgroud)
类页面的表格:
UUID | FONT | CONTENTS etc.
SAMPLE1-UUID | Times | Example
SAMPLE2-UUID | Arial | Example Two
SAMPLE3-UUID | Verdena | Example Three
Run Code Online (Sandbox Code Playgroud)
现在,由于每个页面都是唯一的,并且无法在另一本书中重复使用,因此我不能对Pages使用多对多关系.我可以使用Foreign-Key链接两个表,即将Books表的SAMPLE1-UUID与Pages表的SAMPLE1-UUID链接.这样做的好处是不会两次创建相同的条目.
但是,我不喜欢为我的页面设置固定数量的行.在上面的Book类示例中,我必须定义一组特定的页面,如PAGE1,PAGE2,PAGE3,PAGE4,... PAGE99.理想情况下,我需要的只是我的书类的灵活页面列表,如下所示:
Name | Pages
Book-One | "SAMPLE1-UUID, SAMPLE2-UUID"
Book-Two | "SAMPLE4-UUID, SAMPLE5-UUID, SAMPLE6-UUID"
Run Code Online (Sandbox Code Playgroud)
Pages将是一个简单的CharField,其内容将是一个列表.但后来我遇到了这两个表不再链接的问题,我必须创建两次每个条目(即我必须在页面和书籍表中输入SAMPLE1-UUID).
有没有其他方法来设计这个数据库?谢谢你的任何建议!
我建议你不要把这些页面作为列:
课本表格看起来只有书本信息:
Title | ISBN
Book-One | XXXXXXXXXXXX
Book-Two | YYYYYYYYYYYY
Run Code Online (Sandbox Code Playgroud)
类页面的表格:
BOOKID |PAGE_NUM | FONT | CONTENTS
1 |1 | Times | Example
1 |2 | Arial | Example Two
2 |1 | Verdena | Example Three
Run Code Online (Sandbox Code Playgroud)
你的课堂设计看起来像:
class Book(models.Model):
title = models.CharField(max_length=100)
isbn = models.CharField(max_length=100)
class Page(models.Model):
book = models.ForeignKey(Book)
page_num = models.IntegerField()
font = models.charField(max_length=100)
content = models.TextField()
Run Code Online (Sandbox Code Playgroud)
您可以继续使用约束,以便书籍和page_num不会重复,但这可能是一个好的开始.
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |