2010-12-22 132 views
21

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

+0

你在使用什么样的数据库? – RYFN 2010-12-22 11:16:31

+0

您是指表格名称前缀,例如tblTask​​s或模式,即dbo.tasks – Robb 2010-12-22 11:18:47

回答

20

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

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

通过使用不同的表前缀,你可以让Joomla安装#1知道它应该使用前缀JOS_的所有表,并且Joomla安装#2必须使用所有的表前缀JOS2_

0

根据您的命名规则,它可能有助于区分表和视图。

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

3

表不需要前缀。

这完全取决于你。

但是,我们在它们所属的应用程序中将表与MODULES相关联,以便更轻松地对表进行分组。

4

有些人主张tbl或tbl_(例如tbl_MyTable或tblMyTable),而其他人则使用后缀如MyTable_T。

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

最重要的是您的团队中记录了您的命名指南,并且您都遵守相同的一致性指导原则。

3

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

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

1

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

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

1

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

你经常会看到表前缀的情况下:

  • 多个脚本被整合成为一个网站,并完成网站需要共享数据,但表名称将不唯一的前缀冲突每个脚本。

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

  • 你有一个托管计划,只给你一个数据库,你想使用该数据库来服务多个脚本。 (这是不推荐的原因有多种,但我看到的用户这样做。)

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