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

Database 在数据库中存储分类数据的好方法是什么?(如Facebook专辑),database,database-design,relationship,categories,Database,Database Design,Relationship,Categories,在处理具有类别的数据时,例如视频+流派和相册+照片,有哪些方法将这些关系存储在数据库中?例如,如果我有一堆图像(比如a、B、C、D),作为一个用户,我将其存储到一个名为“我的家庭”的类别中,那么这些图像如何与该类别相关 您可以使用“多对多”关系或“多对一”关系。 视频到流派是多对多的 相册中的照片是多对一或多对多 图像到类别是多对多的 在基于Python的Django应用程序中,您的模式可能如下所示 from django.db import models class Genre(models

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

您可以使用“多对多”关系或“多对一”关系。
视频到流派是多对多的
相册中的照片是多对一或多对多
图像到类别是多对多的

在基于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")
DjangoAPI不显示最终将使用这些模型构建的SQL模式的详细信息。此外,它还抑制了这两个模型的关联方式。根据我的经验,要使数据库驱动的应用程序正常运行,这些细节是不必要的


据我所知,
Video.genres
只是一个主键列表。调用
Video.genres.all()
时,它会使用一系列主键,例如
[5,7,9]
来查找存储在
流派
表中的数据

不同流派的视频不是多对一吗?如果你有一个关于科技的视频,它只会出现在科技领域。还是这需要解释?在这种情况下,使用多对一不是很简单吗?另外,我也在用Django。是的,我想该轮到翻译了。这取决于你的风格有多具体。。。《阿甘正传》是一部戏剧。这也是一个“成年”的故事。多对多的好处在于,你可以拥有一个或多个,而不仅仅局限于一个。使用多对多,除非有特定原因使用多对一。