创建一个电影数据库,我不喜欢给每个男演员/女演员标记自己的行的想法,就好像总共有1000万部电影,每个人至少有20-30人的演员阵容,我们将在表中有2-3亿行。
而且它变得更加复杂,每部电影的标签可以是无限的。那么如何最好地存储这3个项目呢?理想情况下,可以将它们建模为多对多,但仍然会有数亿行。关于存储这些内容有什么更好的建议吗?我正在使用MySQL。
我会将其全部转储在一个文本文件中,但我需要链接演员之间的电影,并做一些分析,并允许用户评级演员找到电影的标签等,所以需要使用一个数据库。
发布于 2010-12-21 06:14:21
1000万部电影看起来相当雄心勃勃。IMDb's current statistics显示,他们只有不到180万个标题和大约390万人。
话虽如此,我认为创建一个标题表、一个参与者表和一个连接表来解决这两者之间的多对多关系没有问题。标签也是如此。

发布于 2010-12-21 06:14:51
这听起来可能有点premature optimization。您可以将所有参与者反规范化到Movie表中的某种TEXT列中,但是性能+搜索将会受到影响,并且会失去关系数据的所有好处。
建议保留规范化的模式,正如您最初所想的那样:
Movie (ID)
Actor (ID)
Tag (ID) --horror, comedy, etc.
MovieActor (MovieID, ActorID)
MovieTag (MovieID, TagID)在测试环境中,
MovieActor和MovieTag.,请为每个性能指标创建关联条目,如required.
不管电影的数量,或者数据是否是DNA序列:实现一个设计,测试它,根据你的需求(用户接受度,SLA等)来判断它的性能
发布于 2010-12-21 06:14:40
您对数百万行的反感的原因是什么?感知到的性能问题?
它将在某个地方拥有数以亿计的关系。你必须捕捉演员和电影之间的映射,就像你说的,有2-3亿个这样的映射(尽管我不相信有1000万部电影存在?)
如果您确实需要,您可以(例如)将一部电影的演员If打包为多列(或一列),但这将使搜索变得不愉快。
https://stackoverflow.com/questions/4494439
复制相似问题