2011-02-08 89 views
1

我正在努力爲我正在開發的一個小項目設計一個數據庫。最終,我想把它變成一個網絡應用程序,但現在我不介意在離線狀態下嘗試數據。但是,我被困在十字路口。與數據庫鬼混,網上開發

基本概念是10個字段的用戶輸入值,與數據庫中的內容進行比較,每個項目具有加權值。我知道,如果我要編碼它,我可以爲每個字段使用查找表,將這些值相加,並將結果顯示給最終用戶。

另一個例子是必須得到兩點之間的距離,每個點存儲在一行中,X值得到自己的列以及Y值。現在,如果我將數據存儲在數據庫中,我是否應該嘗試在查詢中執行所有操作(我認爲這會涉及臨時表等),或者只是使用簡單的查詢,並操作應用程序代碼中返回的行?

現在,我正在考慮去應用後者(在應用程序中操縱數據),並且只是使用查詢來減少我必須排序的數據量。你們會建議什麼?

編輯:現在,我正在使用Microsoft Access來獲得基礎知識,並嘗試獲得一個好的設計。 IIRC憑藉我在Oracle和MySQL方面的經驗,可以在批處理過程中一起運行命令並返回一個結果。但不知道你是否可以用Access來做到這一點。

回答

2

如果您使用的是數據庫,我強烈建議使用SQL來完成所有操作。與命令式編程語言相比,SQL對於這類工作更有能力且更強大。

當然,這確實意味着您在將數據視爲「集合」並以聲明式樣式進行編程時感到很舒服。但現在花時間去熟悉SQL並使用SQL來操作數據將會從長遠來看付出很大的努力。不僅對於這個項目而且對於未來的項目。我還建議在代碼中的查詢中使用存儲過程,因爲存儲過程提供了一個美麗的抽象層,允許您的表設計隨時間變化而不會影響系統的其他部分。

使用和使用數據庫的很大一部分是理解數據建模,規範化等。像所有其他事情一樣,這將是一種努力,但從長遠來看,它將會得到回報。

請問你爲什麼在使用Access的時候有一個更好的數據庫可用,比如MSSQL Express?從MSSQL Express到MSSQL或SQL Azure的遷移路徑甚至是非常無縫的,您今天(在此項目中)所做和所經歷的一切都完全轉化爲未來項目的MSSQL Server/SQL Azure,以及此項目超出您的預期。

我不明白您最後一次關於運行批處理過程並獲得一個結果的說法,但是如果您可以在Oracle和MySQL中執行此操作,那麼您也可以在MSSQL Express中執行此操作。

+0

我在我的電腦上進行基本測試的Access,以及沒有SQL Express的VS2008。我不想把自己鎖定在一個特定的數據庫中,或者用這個項目編程語言。我傾向於Asp.Net,但我寧願在做任何其他事情之前讓核心概念與後端一起工作。 – 2011-02-08 08:18:39

+1

@Jeffery所以你在說什麼是Access不會將你綁定到特定的數據庫?或者MSSQL將您與特定的編程語言聯繫起來?我要說的是,核心概念更容易在更主流的數據庫引擎中獲得和實現,因此如果需要的話,您可以遷移到其他數據庫。數據庫與編程語言無關,我不相信我甚至提到了編程語言(因爲你沒有) – 2011-02-08 08:28:35

0

希夫說什麼,也...

一個好的DBMS有不少在其紮實的工程中。有兩個組件是特別精心設計的,即查詢優化器和事務控制器。如果您採用使用DBMS作爲一種愚蠢的表格檢索工具的觀點,您很可能最終會在應用程序內部發明自己的優化器和事務控制器。在您轉移到支持多個併發用戶的環境之前,您不需要事務控制器。

除非您的工程技術人員非凡,否則您可能會得到一個家庭釀造數據管理系統,這個系統的性能不如一個好的數據庫管理系統。

SQL的學習曲線非常陡峭。您需要了解如何使用查詢來加入,投影和限制多個表中的數據。您需要了解如何處理事務上下文中的更新。

您需要學習簡單而健全的表格設計和索引設計。這包括但不限於數據標準化和數據建模。而且你需要一個具有良好優化器和良好事務控制的DBMS。

學習曲線陡峭。但從頂部看來值得攀登。