什么是表前缀?

时间:2010-12-22 11:14:24

标签: mysql database database-design prefix

什么是表前缀,它们的优缺点是什么?这与MySQL有关。

7 个答案:

答案 0 :(得分:21)

这通常用于区分相同脚本的不同安装。 例如,假设您的服务器上有两个具有不同内容的Joomla安装,但只有一个MySQL数据库。

现在,由于显而易见的原因,两个Joomla安装都不能共享相同的数据库表,因为这会导致两个安装都显示相同的内容。这就是前缀的用武之地。

通过使用不同的表前缀,您可以让Joomla Installation#1知道它应该使用Prefix JOS_和Joomla所有表安装#2必须使用前缀为JOS2 _的所有表

答案 1 :(得分:4)

有些人提倡使用tbl或tbl_(例如tbl_MyTable或tblMyTable),而其他人则使用MyTable_T这样的后缀。

我个人避免使用前缀/后缀。如果模式随着时间的推移而变化,我可以在View中代替Table替换,所以我并没有真正区分这两种类型的对象。

最重要的是,您的团队中已经记录了您的命名准则,并且您都坚持使用相同的一套准则来保持一致性。

答案 2 :(得分:3)

表格不需要前缀。

这完全取决于你。

但是,我们将表格与它们所属的应用程序中的MODULES相关联,只是为了更容易地对表格进行分组。

答案 3 :(得分:2)

表前缀也可用作额外的安全措施。例如,添加表前缀会掩盖常见的表名,使黑客更难通过SQL注入或其他安全漏洞访问数据库中的数据,因为他们首先需要发现您的表名称。

但是,请确保将表前缀视为另一层安全性,而不是您唯一的安全方法。您仍应采取其他安全措施来防止SQL注入和其他类似威胁。例如,根据代码的设置方式,黑客可能仍然可以通过SQL注入运行“show tables”命令来获取数据库表的名称。

答案 4 :(得分:1)

奇怪没有人提到你也可以使用表格前缀来使用通常保留的关键字作为表名。

E.g。现在可以使用t_user或t_order。

答案 5 :(得分:1)

如果您有复杂的网站和数据库结构,表前缀可能有助于防止数据库中的命名冲突。

在以下情况下,您经常会看到表格前缀:

  • 多个脚本正在集成到一个网站中,完成的网站需要共享数据,但表名称会发生​​冲突而没有每个脚本唯一的前缀。

  • 您正在为您获取的脚本添加功能,并且您希望区分该脚本的原生表和您手动创建的新表。这样,如果您创建一个新表,它将不会与基本脚本的任何未来更新冲突,因为它具有不同的表前缀。

  • 您有一个托管计划,它只为您提供一个数据库,并且您希望使用该数据库为多个脚本提供服务。 (出于各种原因不建议这样做,但我见过用户这样做。)

当您从头开始编写脚本时,通常不需要表前缀,因为您可以控制数据库结构的所有方面。当您开始将多个脚本集成在一起时,它变得有用,有时甚至是必要的。它允许您在多个脚本之间创建唯一的数据视图和连接表,而无需担心数据库中的命名冲突。

答案 6 :(得分:0)

根据您的命名约定,可能有助于区分表和视图。

缺点是,就表格名称而言,您可能会受到限制。 Oracle对此限制为30个字符。如果使用“Tbl_”作为前缀,则会自动丢失4个字符。这可能是个问题。