2010-07-02 111 views
1

直到現在,我對數據庫的經驗一直與我們工作的中間定義層一起工作。即SQL不是直接爲表定義編寫的,而是從中間文件生成的,該文件寫出用於創建適當表的SQL腳本,在模式更改之間升級腳本,以及用於執行簡單查詢/更新/插入/刪除的輔助函數數據庫。定義數據庫的表結構?

現在我處於一種無法訪問的狀態,因爲我不會進入,我發現自己有些在海上迷失方向。我需要在數據庫中擁有少量表格,並且我不確定管理表格定義通常會做什麼。

人們通常只使用創建表的SQL腳本作爲他們的定義,還是每個人都使用IDE來管理單獨文件中的定義並重新生成SQL腳本以創建表?

我真的不希望引入對特定IDE的依賴,因爲衆所周知,開發人員是那些容易發生針對小事情的宗教辯論的譁衆取寵者。

+0

我工作過的大多數地方都把模式DDL放在一個或多個文件中 – 2010-07-02 13:30:49

+0

「因爲衆所周知,開發人員是那些容易發生針對小事情的宗教辯論的譁衆取寵者。」我們都知道,因爲這是一個主要由開發人員詢問和回答問題的地方。 – APC 2010-07-02 13:31:31

+0

哪個版本的SQL? – Baaju 2010-07-02 13:31:45

回答

6

打開文本編輯器 - >開始寫作創建腳本 - >保存 - >源代碼管理

把那劇本現在就變成了你的數據庫的基礎。每當模式發生變化時,它們都會被放回到腳本中,以免丟失。

這些成爲你的定義。

我發現它比根據任何特定的IDE /平臺爲您生成這些腳本更可靠。

+0

+1作爲一位着名的哲學家曾經說過,「這很容易做到,只需按照這些步驟。」 – corsiKa 2010-07-02 13:33:57

+1

源代碼管理的+1。令人沮喪的是,爲數不多的地方保護他們的DDL腳本 – APC 2010-07-02 13:36:07

+0

謝謝。猜猜我會開始編寫我的創建腳本。 – 2010-07-02 13:42:58

0

儘管我使用TOAD for Oracle,但我總是編寫腳本來手工創建我的數據庫對象。它使您(和您的DBA)更加掌握和了解正在創建的內容和方式。

1

我們自己編寫腳本並將它們存儲在源代碼管理中,就像任何其他代碼一樣。然後將適合特定版本的腳本全部分組在一起並提升爲一起製作。請務必在更改現有表時使用alter table,因爲如果他們有數據,您不想刪除並重新創建這些表!儘管我使用了一個drop併爲所有其他對象進行了recireate。如果您需要將記錄添加到特定的表格(通常是某種類型的查找),我們也會在腳本中執行此操作。然後,這個版本代碼的其餘部分也會得到提升。

對我來說,把腳本放在源代碼控制中是很重要的一步。這就是你如何知道你爲下一個版本所做的改變。這是您如何看到早期版本並在出現問題時輕鬆恢復的方式。對待數據庫代碼的方式與對待所有其他代碼的方式相同。

0

如果您的模式太難以在SQL中描述,那麼您可能會遇到其他問題比哪個IDE更加緊迫。使用建模文檔如果您需要圖形表示,但是,您不需要IDE。

0

你有什麼問題有多種方式。 傳統的傳統方式是讓您的應用程序具有CREATE TABLE語句的腳本文件。

如果您是開發人員,也是Java企業開發人員,則可以使用名爲Hibernate的持久性庫生成完整模式。Here is a how to

如果您是DBA級別的用戶,則可以從一個環境中導出模式導出並將其導入到當前環境中。這是DBA之間的標準做法。但它需要管理員訪問,你可以看到。另外,這些方法依賴於您正在使用的數據庫(oracle,db2等)。

1

如果您正在開始進行數據庫設計,並且最終想要使用數據建模工具,那麼您可以使用其中一種數據建模工具爲您創建腳本爲你創造它。一些工具是Erwin,Fabforce等...(儘管不是免費的)

如果您有權訪問像SQL Management Studio這樣的IDE,那麼可以使用非常簡單的GUI來創建它們。

如果您正在編寫自己的代碼,那麼最好是基於良好的模板編寫自己的腳本,以便覆蓋表格定義的所有屬性,如file_group,Collat​​ion & stuff。希望這可以幫助

一旦你創建了一個基本副本生成腳本並且有一個基本的參考副本,以便你可以對它們進行「增量」更改並在源代碼管理中對其進行管理。