跨多个表的更高效的数据库结构

时间:2012-04-06 19:23:06

标签: php mysql database database-design

我正在设置一个包含多个表的MySQL数据库。一些表格将具有相似名称的字段,这些字段不一定用于相同目的。

例如,users表格中包含name字段,category表格带有name字段,依此类推。

我之前看过这个设置有或没有字段名称的前言,所以在上面的示例中使用user_namecat_name等。

由于这些都在单独的表中,使用或不使用此前言构建数据库是否有任何好处?我知道当使用连接并通过PHP调用数据时,您必须添加SELECT users.name AS username...以防止字段在使用mysql_fetch_array时相互覆盖。但我不确定使用一种方法是否有效率超过另一种方法?

3 个答案:

答案 0 :(得分:1)

这取决于您的商店做什么或您的偏好。没有什么关于前缀会使这更好。我个人将其保留为名称,因为:Users.NameOrders.NameProducts.Name都包含具有不同对象类型的元组。

在一天结束时,您希望保持一致。如果您希望cat_user_前缀与您的设计保持一致,并为所有对象类型包含此前缀。对我来说更少更多。

答案 1 :(得分:0)

这只是一个偏好问题。我个人更喜欢仅使用name的方法。

要注意的一件事是,如果您正在进行任何SELECT * FROM ...次查询(您不应该这样做;始终明确选择字段),您最终可能会选择错误的数据。

答案 2 :(得分:0)

一个缺点是,如果有人愚蠢到使用自然连接(你可以猜测我发现这是一个糟糕的做法但是mysql确实允许它,所以你需要考虑是否会发生这种情况)你最终可能会加入这些领域同名的意外。