【发布时间】:2011-04-05 23:03:57
【问题描述】:
数据库中可以拥有的表数量是否有限制?这会被认为是糟糕的编程还是其他什么?我有很多用户信息,我想知道是否可以有很多表?
【问题讨论】:
-
我在这里没有看到问题。如果你有“很多用户信息”,我只计算一个表:“user_information”(或类似的东西)。
数据库中可以拥有的表数量是否有限制?这会被认为是糟糕的编程还是其他什么?我有很多用户信息,我想知道是否可以有很多表?
【问题讨论】:
如果您正在考虑这个问题,您可能应该改变您计划存储数据的方式。通常认为拥有表数量随时间增长的数据库模式是一种不好的做法。存储数据的更好方法是具有标识列(如用户 ID)并为每个用户使用一行。您可以为不同类型的数据创建多个表,但不应为每个用户创建多个表。
【讨论】:
不,mysql 对数据库中的表数量没有限制,但显然你会受到可用磁盘空间的限制。
也就是说,如果你问这个问题,你的预期设计可能相当丑陋。
【讨论】:
刚刚找到这个
http://bobfield.blogspot.com/2006/03/million-tables.html
因此,如果您怀疑您将拥有超过一百万个表,您应该考虑重新设计数据库;)另外请注意,这篇博文来自 2006 年。
【讨论】:
通常不是逻辑限制编号。但这个问题引发了讨论——你为什么认为你可能会接近极限?如果您将创建许多表,那么这感觉就像您真的想创建许多行一样...也许您可以详细说明您的想法,以便我们可以提供一些架构指导..?
【讨论】:
一般限制,如果有的话,应该足够大,不用担心。如果你发现自己担心它,你就有更大的问题。例如,如果您正在与有订单的客户打交道,您将创建一个客户表和一个订单表。您不应该为每个客户创建一个表。
【讨论】:
是的,有一个限制......但你很可能会找到它。上次我听到的是 65,000..http://forums.mysql.com/read.php?32,100653,100653
【讨论】:
我可以看到一些人可能想要每个用户一张桌子的原因。如果每个用户的日志/条目/行数会随着时间的推移而增加,并且您不希望代码必须对庞大的条目列表进行排序,以查找仅与特定用户 ID 匹配的行,那么应用程序将简单地查找具有给定用户 ID 的表,然后该表中的所有内容仅适用于该用户。当想要为一个特定用户比较和排序数据时,它会提高性能。我使用过这种方法,尽管用户少于一百个。不确定成千上万的用户可能面临的任何后果。
【讨论】:
为什么要将用户放在他们自己的表中?对我来说似乎是在浪费时间。每次添加新行时,标识 ID 都会增加的用户表可以正常工作。
ID 可以是其他表的外键,例如“Blog_Posts” - 每篇博文都需要有作者,因此您可以使用与用户中的用户 ID 相关联的“AuthorID”列表。
节省空间和时间 - 而且更清洁。
【讨论】: