我的数据库表应该加前缀吗?

时间:2011-03-11 00:32:38

标签: mysql sql database database-design naming-conventions

快速提问:我在名为'galaxy'的数据库中有以下表格 - 其中galaxy是我的网络应用程序的名称。

表格:

  • galaxy_user
  • galaxy_user_profile
  • galaxy_user_subscription
  • galaxy_subscription_type

是否有必要或明智地在所有表格中加入'galaxy'前缀?或者更好的做法是仅仅命名它们,'user','user_profile','user_subscription',如果是这样的话?

谢谢!

4 个答案:

答案 0 :(得分:4)

如果您需要在同一数据库中使用多个应用程序,则数据库表前缀可能很有用。它可以防止不同的应用程序尝试创建/使用相同的名称(许多应用程序都有一个名为user的表,如果它们共享同一个数据库,这会发生冲突)

如果您没有计划让多个应用程序共享同一个数据库,那么它可能不值得使用前缀,因为它只会让您输入更多内容!

马丁

答案 1 :(得分:4)

如果仅限于一个数据库,则使用前缀。但是,在正常情况下,您不需要,因此不需要前缀。像Django这样的一些主要Web框架甚至没有这个功能(但是,它们可以使用表的指定名称)。

所以,简短的回答是:你不需要使用前缀,除非你只限于一个数据库。

答案 2 :(得分:3)

如果要对数据库中的所有表使用相同的前缀,那么它就没用了。如果您为具有不同目的的表提供单独的前缀,则非常有用。

答案 3 :(得分:1)

使用MySQL(可能还有其他DBMS?),您可以跨多个数据库模式执行查询

示例:

  • 架构sales:表格产品
  • 架构common:表人,国家/地区

查询示例:

SELECT *
FROM sales.product prod
  LEFT JOIN common.person pers ON prod.customer_person_id = pers.id
  LEFT JOIN common.country c ON pers.country_id = c.id
  etc.

这样,您可以将表组织成模式,避免将数百个具有不必要的长名称的表(由于不舒服的前缀)组合到一个单一模式中。

另外,如果必须查询单个模式,则不需要为表添加前缀,前提是如果使用PHP,则选择了USE myschemamysql_select_db()模式。