IRONSOFTWAREHOME

C# SQL資料庫:深入探討Tim Corey的課程

C# App Start To Finish Lesson 08 - SQL Database Design

Tim Corey

1h 08m 25s

在 C# 應用程式開發的世界中,與 SQL 資料庫合作是您可以學到的最重要技能之一。 在他的影片 "C# App Start To Finish Lesson 08 – SQL Database Design",Tim Corey 演示了設計關聯式資料庫的過程、建立表、定義關係,以及編寫儲存程式。

在這篇文章中,我們將深入研究 Tim 的課程,並精確解釋他所呈現的想法。 如果您想更好地理解如何將 C# 應用程式連接到 SQL Server,以及如何正確地構建您的資料庫,Tim 的影片提供了一個出色的指南。

資料庫設計簡介

在 1:00,Tim 開始時提醒觀眾,他們將在包中獲得所有腳本和文件,包括資料庫腳本。他強調,目標不是在一堂課中成為完整的 SQL Server 專家,而是理解設計以及如何考慮結構化資料。 然後,Tim 直接進入資料庫圖表。

理解資料庫圖表

在 1:52,Tim 強調團隊成員表,並解釋它不會直接儲存人的名字或姓氏。 取而代之的是,它儲存了連接回人員表的 Person ID。 這是一個關聯式資料庫中一對多關係的例子,其中一個人可以屬於多個團隊。

Tim 提供了一個實際例子:如果有多個比賽同時進行,一個人可能是多個團隊的一部分。 這樣可以避免重複,並顯示如何使用主鍵有效地查詢資料。 Tim 強調,重複的資料是有害的,因為它會導致矛盾的資訊,例如不一致的電子郵件地址。

他解釋說,設計方法是使用 ID,而不是儲存完整的重複資料。 這是好 SQL Server 資料庫設計的基礎。

避免重複欄位

在 4:48,Tim 談到為什麼應該避免在單獨的欄位中儲存多個電子郵件地址(如 Email2 或 Email3)。相反,他建議建立一個包含 Person ID 和 Email Address 欄位的獨立電子郵件地址表。 這樣可以讓一個人擁有多個電子郵件地址,而不會使 People 表複雜化。

Tim 解釋,資料庫設計是簡單性和靈活性之間的平衡。 在此教學中,他決定只儲存一個電子郵件和一個電話號碼,以保持設計簡潔和實用。

在 SQL Server Management Studio 中建立資料庫

在 6:44,Tim 切換到 SQL Server Management Studio,並解釋他正在使用 SQL Server 2016 Developer Edition,這是免費的,具有與 Enterprise Edition 相同的功能。 他指出它不能用於生產,但非常適合在本地機器上進行開發。

Tim 解釋了兩種建立 SQL Server 資料庫的方法:通過 SSMS 對話框或使用 SQL 查詢。 他更喜歡查詢方法,因為這樣更快。 他使用的指令是:

create database tournaments;
Text

他解釋說,分號很重要,應在每個 SQL 語句的末尾使用。 建立資料庫後,Tim 展示如何刷新 SSMS 視窗以查看新資料庫出現。

查看表和表設計

在 12:06,Tim 提到他已經用腳本建立了所有表,然後演示如何在 SSMS 中打開表設計器。 Tim 解釋說,對於 C# 開發人員來說,SQL 腳本可能令人望而生畏,設計器幫助您在不需要記住 SQL 語法的情況下視覺化地編輯表。

Tim 使用 Prizes 表作為例子。 他解釋如何設置主鍵、選擇資料型別和管理空值。 他還指出,主鍵幫助 SQL 優化表的儲存和檢索。 沒有主鍵的話,SQL 會建立一個"堆",這使得查詢變慢。

自動增量 ID

在 15:36,Tim 解釋如何使用 Identity Specification 使 ID 欄位自動增量。 他將增量和起始值設為 1。Tim 強調這為每一行提供了一個唯一的識別符,有助於 SQL 有效地排序資料。

他指出,這種方法讓您用最小的努力獲得高度優化的設計,非常適合那些希望建立一個堅實的 SQL Server 資料庫而不需要複雜調整的 C# 開發人員。

理解資料型別

在 18:09,Tim 解釋了不同的 SQL 字串型別:varchar、nvarchar 和 nvarchar(max)。 他描述了:

  • Char:儲存字元

  • Var:可變長度(最多達到最大數量)

  • N:國際字元的 Unicode 支援

Tim 解釋說,nvarchar 使用更多的儲存,但支持全球語言,而 varchar 的理想用途是僅英文的文字。 他還解釋,nvarchar(max) 用於非常大的字串,例如 JSON,可能會被應用程式儲存並稍後檢索。

貨幣和浮點資料型別

在 24:00,Tim 將 SQL 資料型別與 C# 型別進行比較。他使用 money 來表示貨幣值(類似於 C# 中的 decimal),使用 float 表示百分比(類似於 double)。 這幫助 C# 開發者匹配 SQL 型別與他們的程式型別。

表關係

在 25:04,Tim 演示如何使用外鍵建立關係。 他打開關係編輯器並解釋主表包含真實的 ID,而外表引用該 ID。

他還解釋了級聯刪除的概念,當父記錄被刪除時自動移除相關的記錄。 Tim 提醒說,ID 應被視為不可變的,這意味著一旦建立就不應更改它們。

建立新表

在 29:30,Tim 演示如何使用 SSMS 編輯器建立新表。 他構建了一個測試人員表,包括以下欄位:

  • 名字

  • 姓氏

  • 電子郵件地址

  • 電話號碼

  • 子女數量

  • 建立日期

Tim 展示如何設置預設值,如將子女數量設定為 0,使用 getdate() 設置當前時間。他解釋說,getutcdate() 更適合跨時區的應用程式。

編輯表中的資料

在 39:39,Tim 展示如何直接在 SSMS 中編輯行。 他新增了示範記錄,並解釋即使插入失敗,仍然會消耗 ID 值。 他建議讓 SQL 繼續自動增量序列,不必擔心缺失的 ID。

基本的 SQL 查詢

在 44:23,Tim 教授基本的查詢語法:

  • SELECT * FROM 表

  • WHERE

  • LIKE

  • ORDER BY

  • 使用 AS 的欄位別名

他指出,SELECT * 適合學習,但在實際應用中應該指定欄位以提高性能和清晰度。

儲存程式

在 50:33,Tim 介紹了儲存程式。 他解釋了儲存程式允許您安全地存取資料庫邏輯,並防止 SQL 注入攻擊。 Tim 更喜歡儲存程式而不是直接存取表或視圖,因為它們提供更好的安全性。

他展示如何建立一個根據比賽 ID 檢索獎品的儲存程式。 他解釋了參數、BEGIN 和 END 塊以及 NOCOUNT ON 語句。

執行儲存程式

在 58:04,Tim 建立了一個根據姓氏獲取測試人員的儲存程式,並演示如何使用以下語句執行它:

EXEC dbo.SP_TestPerson_GetByLastName 'Corey'
Text

他解釋說,dbo 架構是預設的,SQL Server 對於程式名稱不區分大小寫。

最後的想法

Tim 在他的影片中結論到,SQL 資料庫設計可能看起來複雜,但核心概念很簡單。 他鼓勵觀眾練習和探索,並預告下一課程,將把資料庫與 C# 程式碼連接。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立