帮我在Mysql中创建庞大的数据库

时间:2009-04-14 06:38:56

标签: php mysql database

我们正在全球范围内建立一个商业网站,因为这个概念涵盖了每个国家的主要城市。

我需要PHP Mysql People的一些建议。

我可以为所有城市或多个数据库创建单个数据库。因为在这个系统中包含了一些城市之间的关系,每个房间需要近50个表格用于联网和其他一些表格。

如果我可以为每个房间创建单独的数据库,那么将需要近50 * 1000个桌子,因为我们有1000个城市。

所以请提出建议如何为我的系统构建数据库。

谢谢 拉维

4 个答案:

答案 0 :(得分:3)

在阅读了你的问题后,我能给你的唯一建议是修改你对数据库的了解......我认为你遗漏了一些东西......网络可以帮助你解决这个问题。

无论如何,如果你有2个对象城市和商会,你需要2个表:

  • 表1:城市
  • 关系:1-n
  • 表2:腔室

答案 1 :(得分:3)

避免使用流体表编号进行数据库设计。表不是行。为每个城市建一张新桌子是没有意义的。每个城市都有一个名称,一个位置以及许多与您的业务相关的其他共享属性。拥有一堆共享完全相同结构的表是没有意义的。我建议你为国家创建一个桌子,一个桌子用于城市,另一个桌子用于'室'。将每个城市与一个国家联系起来。如果您期望与数千个城市合作,那很好。 MySQL中的表可以轻松处理数千行而不会占用大量服务器资源。如果每个城市都有一些独特的东西,那就需要变量字段,你可能希望以不同的方式做到这一点,但可能永远不需要创建数千个表。

答案 2 :(得分:1)

关系数据库设计决定:只有一个数据库。在某些情况下,将数据分成多个数据库可能是一个专业人员应用的性能黑客选项,他确切地知道他做了什么(但你和我都不知道),但通常它只是使情况复杂化并使系统成为可能更慢,更难维护。

问题是:你甚至需要肮脏的表演黑客吗?拥有数千个城市本身并不是一个性能问题,这一切都取决于良好的指数,服务器,调整,工作量,......

答案 3 :(得分:1)

无论城市如何,您都需要规范化相同的内容。或者室。

想到这一点的一种方法是查看您需要的所有不同实体。显然,“城市”就是其中之一。没有理由不能使用一个表来代表所有城市。好的,现在你可以确定一个房间所在的城市还有一个字段。所以现在所有的房间都可以放在一张桌子里。这也提供了一种方式来说一个房间只属于一个城市,但一个城市可以有一个以上的房间。这称为一对多关系。

相同类型的对象(例如城市)之间的关系更复杂。你需要确定关系是什么:特别是它被称为什么以及每个方面被称为什么。如果您需要多对多关系,即城市与其他几个城市相连,您将需要另一个表来列出这些关系。探索这个有点超出了这个答案框的范围,所以我建议你找一本关于数据库设计的好书或网页,特别是关于规范化。