繁体   English   中英

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

[英]Should my database tables be prefixed?

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

表格:

  • galaxy_user
  • galaxy_user_profile
  • galaxy_user_subscription
  • galaxy_subscription_type

是否有必要或明智地将'galaxy'前缀包含在所有表格中? 或者更好的做法就是命名它们,'user','user_profile','user_subscription',如果是这样,为什么?

谢谢!

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

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

马丁

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

因此,简短的回答是:除非您仅限于一个数据库,否则您不需要使用前缀。

如果要对数据库中的所有表使用相同的前缀,那么它就没用了。 如果您为具有不同目的的表分别使用前缀,则此选项很有用。

使用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.

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM