2010-12-22 109 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

如果您有一個複雜的網站和數據庫結構,表前綴可能有助於防止數據庫中的命名衝突。

你經常會看到表前綴的情況下:

  • 多個腳本被整合成爲一個網站,並完成網站需要共享數據,但表名稱將不唯一的前綴衝突每個腳本。

  • 您正在爲您獲取的腳本添加功能,並且您想區分該腳本的本地表和您手動創建的新表。這樣,如果您創建一個新表,它將不會與將來對基本腳本的更新相沖突,因爲它具有不同的表前綴。

  • 你有一個託管計劃,只給你一個數據庫,你想使用該數據庫來服務多個腳本。 (這是不推薦的原因有多種,但我看到的用戶這樣做。)

當你從頭開始編寫一個腳本,表前綴,因爲您可以控制各個方面通常是沒有必要的的數據庫結構。當你開始將多個腳本集成在一起時,它變得有用,有時甚至是必要的。它允許您創建獨特的數據視圖,並在多個腳本之間連接表等,而無需擔心數據庫中的命名衝突。