我应该拆分mySQL表吗?

时间:2011-05-08 18:03:03

标签: php mysql

让我们从Yelp中获取示例:http://www.yelp.com/boston

您可以看到它是一个包含多个不同类别的网站,每个类别都包含一个地方列表。我应该在一个表中包含所有不同的地方/列表,还是让每个类别都有自己的表?

编辑:这意味着拥有表'places_restaurants'和'places_nightlife',而不是只有单个表'places',每个不同类别的每个条目都将存储在一个巨大的表中......这会影响性能吗? / p>

4 个答案:

答案 0 :(得分:3)

每个类别一个表格要求您在每次有新类别时创建表格。我更喜欢CATEGORY和PLACE表,它们之间有一对多或多对多的关系。

答案 1 :(得分:2)

您应该将所有类别保留在同一个表中,然后使用CategoryID将每个类别实际映射到特定/所需类别。您的应用程序应该以一种本身可扩展的方式构建,每次创建表绝对不是。

答案 2 :(得分:0)

这取决于。您可以规范化数据库,以便所有类别都在自己的表中,并且只能通过外键从其他表引用。但是有一些论点表明性能超过了规范化,因此将类别名称保存在他们自己的记录表中​​,以及在其他经常连接的表中包含类别名称列可能是有益的。

如果采用第二种方法,则需要通过实现UPDATE和DELETE触发器来确保数据完整性,以便每当记录表中的类别发生更改时(可能不经常),包含类别名称副本的其他表也会得到更新。

答案 3 :(得分:0)

它仍然取决于应用程序,所有类别都是具有主表的多对多字段,当然相信你在每个表中都有一些独特的列