我正在设置一个包含多个表的MySQL数据库。一些表格将具有相似名称的字段,这些字段不一定用于相同目的。
例如,users
表格中包含name
字段,category
表格带有name
字段,依此类推。
我之前看过这个设置有或没有字段名称的前言,所以在上面的示例中使用user_name
,cat_name
等。
由于这些都在单独的表中,使用或不使用此前言构建数据库是否有任何好处?我知道当使用连接并通过PHP调用数据时,您必须添加SELECT users.name AS username...
以防止字段在使用mysql_fetch_array
时相互覆盖。但我不确定使用一种方法是否有效率超过另一种方法?
答案 0 :(得分:1)
这取决于您的商店做什么或您的偏好。没有什么关于前缀会使这更好。我个人将其保留为名称,因为:Users.Name
和Orders.Name
和Products.Name
都包含具有不同对象类型的元组。
在一天结束时,您希望保持一致。如果您希望cat_
和user_
前缀与您的设计保持一致,并为所有对象类型包含此前缀。对我来说更少更多。
答案 1 :(得分:0)
这只是一个偏好问题。我个人更喜欢仅使用name
的方法。
要注意的一件事是,如果您正在进行任何SELECT * FROM ...
次查询(您不应该这样做;始终明确选择字段),您最终可能会选择错误的数据。
答案 2 :(得分:0)
一个缺点是,如果有人愚蠢到使用自然连接(你可以猜测我发现这是一个糟糕的做法但是mysql确实允许它,所以你需要考虑是否会发生这种情况)你最终可能会加入这些领域同名的意外。