将分类数据存储在数据库中的好方法是什么? (例如Facebook专辑)

时间:2013-05-27 23:02:13

标签: database database-design relationship categories

在处理具有类别的数据时,例如视频+流派和相册+照片,有哪些方法可以将这些关系存储在数据库中?例如,如果我有一堆图像(比如说A,B,C,D),作为用户我将它存储到一个名为“我的家庭”的类别中,那些图像怎么能与那个类别相关?

1 个答案:

答案 0 :(得分:1)

您可以使用“多对多”关系或“多对一”关系 类型的视频是多对多的 相册中的照片是多对一或多对多的 分类的图像是多对多

在基于Python的Django应用程序中,您的架构可能看起来像这样......

from django.db import models

class Genre(models.Model):
    name = models.CharField(max_length=50)

class Video(models.Model):
    title = models.CharField(max_length=500)
    synopsis = models.TextField()
    genres = models.ManyToManyField(Genre)
    video_file = models.FileField(upload_to="movie_files_folder")

Django API抑制了最终将使用这些模型构建的SQL模式的详细信息。它还抑制了这两个模型的关联程度。根据我的经验,这些细节不是使数据库驱动的应用程序正常运行所必需的。

据我所知,Video.genres只是一个主键列表。当您致电Video.genres.all()时,它会使用[5, 7, 9]等主键列表来查找Genre表中存储的数据