Sql-Server

我是否正確設置了我的數據庫?還是我以錯誤的方式思考事情?

  • July 23, 2018

所以我有點懷疑我是否正在設置我正在正確使用的這個數據庫。這是我從事過的第一個大型數據庫項目,而我正在做的就是我一個人完成的任務。所以你知道,一點壓力都沒有

這個問題與我是否正確設置表格無關。我至少對自己有足夠的信心說我知道如何創建適當的關係數據庫表,以及如何正確地規範化它們。

我關心的是諸如視圖和儲存過程之類的事實。

快速概述項目是什麼。我正在改造公司數據庫,將其更新為新的關係模型。我需要為所有數據從頭開始建立一個全新的數據庫結構,然後在數據庫旁邊創建一個 VB.Net 程序,員工可以使用該程序以各種方式與數據庫進行互動。

您會看到,我基本上已經設置了數據庫,以便表充當儲存所有數據的位置,而視圖充當檢索所有數據的位置。我認為以這種方式設置它可以更輕鬆地選擇需要向使用 .Net 應用程序的人顯示的數據,因為視圖已經包含所有數據的所有正確連接。當然,如果你只需要從表中選擇一條數據,你可以做一個簡單的表查詢,但對於大型數據集,我認為視圖是要走的路。我這樣想對嗎?

然後是儲存過程。本質上,如果 VB.Net 項目正在做任何與數據收集相關的變數,我只是在數據庫中設置一個儲存過程來獲取這些變數並使用內部 SQL 腳本。

例如,假設我需要從我的PartsData視圖中選擇具有特定供應商的所有內容。我沒有在 VB.Net 中創建一個大的查詢字元串,然後將該字元串作為 SQL 命令傳遞,而是將供應商名稱作為變數傳遞給數據庫上的“PartSupplier”過程,該過程會返回我需要的資訊。

對我來說,這樣做更有意義,而不是僅僅在 VB.Net 中構造長字元串查詢,然後將它們扔到數據庫中。對我的方法沒有幫助的部分原因是,我的老闆似乎認為我按照自己的方式做事是在浪費時間和愚蠢。:\

我知道這不是任何人都可以給我 100% 答案的事情,因為我知道你不能在不知道所有資訊的情況下給我這樣的事情。但我在正確的軌道上嗎?我的邏輯是否存在一些明顯的缺陷,你可以很容易地看到嗎?

觀點:您的方法是一種非常廣泛接受的做法。好處有據可查:https ://www.c-sharpcorner.com/blogs/advantages-and-disadvantages-of-views-in-sql-server1

儲存過程:此外,正如您所描述的,廣泛使用(缺點也很明顯)http://sqltechtips.blogspot.com/2015/11/stored-procedure-benifits.html

根據我的經驗,通常會看到出於所述原因使用的視圖和儲存過程,並且它們的行為與宣傳的一樣。

無論您選擇哪種方法,我都強烈建議您保持一致性,因為不得不在許多地方尋找業務規則實現可能會令人沮喪:帶有嵌入式 SQL、儲存過程、視圖、ORM 的程式碼……嘗試應用一些系統化的實現來限制例如,您必須尋找約束的地方的數量 - 可以將它們放在我剛剛列出的任何/所有地方。

我認為這個設計問題沒有正確答案。這一切都取決於你的情況。

這是我發現的一個很好的連結,它解釋了使用儲存過程進行數據訪問的優缺點。它還提供了替代方案,例如內聯/參數化查詢和 ORM(Hibernate 和 NHibernate)

https://www.seguetech.com/advantages-and-drawbacks-of-using-stored-procedures-for-processing-data/

引用自:https://dba.stackexchange.com/questions/212988