3

我目前正在構建一個包含大約60個左右表格的應用程序,其中一些包含元信息,一些包含實際數據以及一些包含在其上的視圖。在模式中分組postgresql

爲了保持組織我前面添加meta_view_分別所有的表名的事情,但可能它是值得的,只是把它們在不同的模式相同的數據庫裏面?

  1. 這是常見的做法嗎?
  2. 有沒有理由不這樣做?
  3. 我可以根據不同的模式創建FK約束嗎?

PS:似乎有沒有性能損失從這樣的回答來看:PostgreSQL: Performance penalty for joining two tables in separate schemas

回答

3

你可以在你喜歡的任何方式使用模式。本質上沒有限制。如果您需要某些對象組的某些權限,例如在數據庫內分隔用戶,它們特別有用。你可以在很大程度上將它們當作文件系統中的目錄來處理(儘管這個比喻有其侷限性)。

我使用v_前綴爲視圖和f_前綴的函數。但是,基本上符號方便的是在文本搜索中快速找到這些對象 - 例如,如果我篡改了轉儲文件。使這樣的前綴,你將不得不鍵入他們的數據庫的其餘生活。來自各種語義層的多個前綴可能必須適用於單個對象。

我會混合官能前綴與在同一水平上的語義前綴(meta_)(v_view_)。而是爲元對象創建一個單獨的模式,並使用前綴來表示整個模式中的對象類型。

無論您選擇哪種系統,請保持一致!否則它會造成更多的傷害而不是好的。

+0

我認爲「沒有限制」意味着FK的功能會像預期的那樣工作,因爲模式只是postgresql中的命名空間? – ChrisR

+0

@ChrisR:您認爲正確,跨多個模式的外鍵不是問題。它們就像在同一個模式中一樣工作。 –