푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

C# SQL 데이터베이스: Tim Corey의 레슨을 통한 깊은 탐구

Tim Corey
1h 08m 25s

C# 애플리케이션 개발 세계에서 SQL 데이터베이스를 다루는 것은 가장 중요한 기술 중 하나입니다. Tim Corey는 그의 비디오 "C# App Start To Finish Lesson 08 – SQL Database Design"에서 관계형 데이터베이스를 설계하고, 테이블을 생성하고, 관계를 정의하고, 저장 프로시저를 작성하는 과정을 설명합니다.

이 기사에서는 Tim의 레슨을 더 깊이 살펴보고 그가 제시한 아이디어를 정확히 설명할 것입니다. C# 애플리케이션이 SQL Server에 연결되는 방식과 데이터베이스를 올바르게 구조화하는 방법에 대한 이해를 원한다면, Tim의 비디오는 훌륭한 가이드를 제공합니다.

데이터베이스 설계 소개

1:00 시점에서 Tim은 시청자에게 패키지에 모든 스크립트와 파일, 데이터베이스 스크립트를 포함하여 제공될 것임을 상기시킵니다. 그는 한 수업에서 완벽한 SQL Server 전문가가 되는 것이 아니라, 설계를 이해하고 데이터를 구조화하는 방법을 생각하는 것이 목표라고 강조합니다. Tim은 곧바로 데이터베이스 다이어그램으로 이동합니다.

데이터베이스 다이어그램 이해하기

1:52 시점에서 Tim은 팀 구성원 테이블을 강조하며, 이것이 사람의 이름이나 성을 직접 저장하지 않는다고 설명합니다. 대신, 이는 People 테이블로 연결되는 Person ID를 저장합니다. 이는 관계형 데이터베이스에서 일대다 관계의 예로, 한 사람이 여러 팀에 속할 수 있는 경우입니다.

Tim은 실용적인 예를 듭니다: 여러 토너먼트가 동시에 일어나면 한 사람이 여러 팀의 일원이 될 수 있습니다. 이것은 중복을 피하고 기본 키를 사용하여 데이터를 효율적으로 쿼리하는 방법을 보여줍니다. Tim은 중복 데이터가 해롭다고 강조하며, 이는 일관되지 않은 이메일 주소 같은 충돌 정보를 초래할 수 있다고 설명합니다.

그는 설계 접근 방식은 전체 중복 데이터를 저장하는 대신 ID를 사용하는 것이라고 설명합니다. 이는 좋은 SQL Server 데이터베이스 설계의 기초입니다.

중복 열 피하기

4:48 시점에서 Tim은 별도의 열인 Email2 또는 Email3에 여러 이메일 주소를 저장해야 하는 이유를 설명하면서, 대신 Person ID 및 이메일 주소 열이 포함된 별도의 이메일 주소 테이블을 만드는 것을 제안합니다. 이는 한 사람이 여러 이메일 주소를 가질 수 있도록 하며 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 쿼리를 사용합니다. 그는 쿼리 방법이 더 빠르기 때문에 선호합니다. 그가 사용하는 명령어는 다음과 같습니다:

데이터베이스 tournaments를 생성하다;

그는 세미콜론이 중요하며 모든 SQL 문장의 끝에 사용해야 한다고 설명합니다. 데이터베이스를 생성한 후 Tim은 SSMS 창을 새로 고쳐 새 데이터베이스가 나타나는 것을 보여줍니다.

테이블 보기 및 테이블 디자인

12:06 시점에서 Tim은 이미 스크립트를 사용하여 모든 테이블을 생성했다고 언급합니다. 그런 다음 SSMS에서 테이블 디자이너를 여는 방법을 시연합니다. Tim은 SQL 스크립트가 C# 개발자에게는 혼란스러울 수 있다고 말하며 디자이너가 SQL 구문을 외울 필요 없이 테이블을 시각적으로 편집할 수 있도록 도와줍니다.

Tim은 Prizes 테이블을 예로 사용합니다. 그는 기본 키 설정, 데이터 유형 선택, null 값 관리 방법을 설명합니다. 그는 또한 기본 키가 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: 국제 문자를 위한 유니코드 지원

Tim은 nvarchar가 더 많은 저장 공간을 사용하지만 글로벌 언어를 지원하며, varchar는 영어 전용 텍스트에 이상적이라고 설명합니다. 그는 또한 nvarchar(max)는 JSON과 같은 매우 큰 문자열에 사용되며, 애플리케이션에 의해 저장되고 나중에 검색될 수 있다고 설명합니다.

금액 및 부동 데이터 유형

24:00 시점에서 Tim은 SQL 데이터 유형을 C# 유형과 비교합니다. 그는 통화 값(역에서 소수와 유사)에는 money를 사용하며, 퍼센티지에는 float를 사용합니다(double과 유사). 이는 C# 개발자가 SQL 유형을 프로그래밍 유형에 맞출 수 있도록 도와줍니다.

테이블 관계

25:04 시점에서 Tim은 외래 키를 사용하여 관계를 생성하는 방법을 시연합니다. 그는 Relationships 편집기를 열고 기본 테이블에 실제 ID가 포함되며, 외래 테이블이 해당 ID를 참조한다고 설명합니다.

그는 부모 레코드가 삭제될 때 관련 레코드를 자동으로 제거하는 캐스케이드 삭제의 개념도 설명합니다. Tim은 ID가 불변이어야 한다고 경고하며, 생성 후에는 절대 변경해서는 안 된다고 말합니다.

새 테이블 만들기

29:30 시점에서 Tim은 SSMS 편집기를 사용하여 새 테이블을 만드는 방법을 시연합니다. 그는 다음과 같은 열이 있는 테스트 사람 테이블을 만듭니다:

  • 이름

  • 이메일 주소

  • 전화번호

  • 자녀 수

  • 생성 날짜

Tim은 Number of Kids를 0으로 설정하고 getutcdate()를 사용하여 현재 시간을 설정하는 것과 같이 기본값을 설정하는 방법을 보여줍니다. 그는 getutcdate()가 시간대에 걸친 애플리케이션에 더 적합하다고 설명합니다.

테이블의 데이터 편집

39:39 시점에서 Tim은 SSMS에서 행을 직접 편집하는 방법을 보여줍니다. 그는 샘플 레코드를 추가하고 실패한 삽입조차도 ID 값을 소비한다고 설명합니다. 그는 SQL이 자동 증가 시퀀스를 계속하도록 하고, 누락된 ID에 대해 걱정하지 말라고 조언합니다.

기본 SQL 쿼리

44:23 시점에서 Tim은 기본 쿼리 구문을 가르칩니다:

  • SELECT * FROM table

  • 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'

그는 dbo 스키마가 기본값이며, SQL Server는 프로시저 이름에 대소문자를 구별하지 않는다고 설명합니다.

마지막으로

Tim은 그의 비디오에서 SQL 데이터베이스 설계가 복잡해 보일 수 있지만 핵심 개념은 간단하다고 결론을 내립니다. 그는 시청자들에게 연습하고 탐험할 것을 독려하며, 다음 수업에서는 데이터베이스를 C# 코드와 연결하는 방법을 미리 보여줍니다.

Hero Worlddot related to C# SQL 데이터베이스: Tim Corey의 레슨을 통한 깊은 탐구
Hero Affiliate related to C# SQL 데이터베이스: Tim Corey의 레슨을 통한 깊은 탐구

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해