首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算我计划创建的表中的行数

如何计算我计划创建的表中的行数
EN

Stack Overflow用户
提问于 2011-11-11 09:12:16
回答 3查看 234关注 0票数 0

我需要在几张桌子之间建立联系。我需要决定是使用两个ids创建几个单独的表,还是使用所有的连接创建一个表。

这些表格是:

  • 电影- 50000行
  • photo_set - 50000行-每张照片集都与一部电影相关,但是可以有一些没有电影的照片集,也可以有没有电影集的电影。
  • DVD - 13000行-每个dvd上可以有3-5部电影,有些电影没有连接到任何DVD。
  • 类别- 50行-每部电影可以有1-5个类别。所有电影的类别及其在一张DVD中的照片集是相同的。
  • 演员- 15000行-一部电影可以有2-5名演员。

问题是:如何计算具有此类字段的表中的行数?

  • movie_id (default=NULL)
  • photo_set_id (default=NULL)
  • dvd_id (default=NULL)
  • category_id
  • actor_id

我认为,如果我只使用一个包含所有连接的表,那么在一个查询中获取所有连接可能要快得多。当然,如果这个表不会比几个连接表大很多的话。

如果使用一个表不是一个好主意,请告诉我,在我的场景中使用几个连接表有什么好处?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-11 09:19:16

您应该建立几个连接表,每个多到多的关系一个。

拥有多个连接表的原因与拥有多个数据表的原因相同。你可以把电影、照片等放在同一张桌子上。但是你没有,因为在设计你的数据库时,你会为第三范式而奋斗。每种对象都应该有自己的表。

电影与演员的关系与电影与摄影的关系是不一样的。假设您想要向关系添加属性。也许你想要存储电影中演员扮演的角色,或者你想要命名照片集(“奥斯卡奖的照片”,“电影截图”等等)。

我的观点是,如果每个关系创建一个表,则扩展应用程序将更加容易。

估计行数:

每个表中的行数将是驱动表中的行数乘以连接项的平均数量。

让我们假设每部电影演员的平均人数是3人。然后,movie_actor表中将有50000 *3= 150000行。

票数 2
EN

Stack Overflow用户

发布于 2011-11-11 09:20:01

对于计算,可以使用平均值:

如果平均每部电影有2,5名演员,那么您的演员-每部电影表将有50k * 2,5 =125 k行。

最大的可能是电影<>照片集/

从这些数字来看,当涉及到表中的记录数量时,任何合适的RDBMS都不会给您带来任何麻烦。因此,您可以选择最方便的模式。

我会用几个。它使您的设计更加灵活和易于扩展(如果您想维护有关连接的信息的话)。事实上,它在索引方面也有优势,就像Klas所写的那样。

票数 0
EN

Stack Overflow用户

发布于 2011-11-11 09:25:19

在MySQL中,最大行数受表大小和MAX_ROWS表选项的限制。表的大小取决于操作系统和文件系统,因此您不必担心现在的行数。

代码语言:javascript
复制
Win32 w/ FAT/FAT32 - 2GB/4GB
Win32 w/ NTFS - 2TB (possibly larger)
Linux 2.2-Intel 32-bi - 2GB (LFS: 4GB)
Linux 2.4+(using ext3 file system) 4TB
Solaris 9/10 - 16TB
MacOS X w/ HFS +2TB

MAX_ROWS表选项是软件限制,以后可以更改。如果要存储许多行集MAX_ROWS accordingly.Further,则可以访问

StackOverFlow链路

全表

一张大桌子和几张小桌子

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8091787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档