티스토리 뷰

C#(.NET)/SQL(ADO.net)

SQL ADO.net 1일차-2 (dbo, 무결성,pk)

열혈허슬러 상추님 2018.04.24 19:14

SQL ADO.net 1일차-2 (dbo, 무결성,pk)

이어서.. MS SQL Server 2017을 PC에 설치했는데 네트워크 연결이 안되서.. 노트북으로 이어서 수강했습니다.
SQL 2014 무료버전을 사용했습니다.

기본DB

빠른 수업진행을 위해서 미리 준비된 Script파일을 사용했습니다.

 일반적으로 선택하지 않으면 master가 선택되게 되므로 오류가 뜰 수 있기에 USE 키워드를 사용해서 우리의 DB인 AutoLot을 사용하도록 하는 모습입니다.

USE

이때 대괄호([ ])를 붙여서 사용하게 된다면 스페이스를 포함할 수 있습니다. 출력되는 결과는 위사진과 같이 확인이 가능하며, 우리가 Select해준 형태로 나타나게됩니다. Result set 으로 넘어오는 거죠.

SELECT []

또 MS SQL은 끝에 ;를 붙일 수 있습니다. C,C++,C#을 하다보면.. 끝에 ;가 없으면 어색하죠..

dbo

dbo는 네임스페이스. (스키마)를 의미합니다.

예시로
AutoLot.dbo.Customers
db명.dbo기본스키마.테이블명 이런식으로 사용합니다.

이런 것을 어디에 활용하느냐.. 만약 테이블이 열개정도가 된다면 각각의 권한 설정 등으로 유용하게 사용할 수 있습니다.

Script:선언(인터프리터)==Code 컴파일

Go키워드

GO 키워드

Go는 동기적(?) 실행을 위해서 넣어줍니다. 그리고 위와 같은 스크립트는 외울 필요없이 떠서 사용이 가능합니다. DBMS내장.

프라이머리키

중복데이터는 묶어서 표현하면 효율적일 수 있습니다.

프라이머리키 PK

여기서 말하는 부모란 물려받는게 아니라 .. 우리가 알고있는 상속.. 즉 부모에있는 기능을 물려받는 것이아닙니다. 바로 중복을 피하기 위해서 사용됩니다. 모델링 정규화를 통해서 완성됩니다.

 중복데이터가 있더라고 데이터 수가 작으면, 오히려 테이블 한개가 더 효율적일 수 있습니다. 즉, 경우에 따라서 모델링을 효율적으로 해야합니다. 위와같이..

 모든 테이블은 기본적으로 PK를 갖습니다. 바로 데이터를 구분하는 키가 됩니다. 거의 하나의 필드로 만들어지며 ID,주민번호,전화번도 등을 예시로 들 수 있습니다. 또 절대로 NULL일 수 없으며 변경될 수도 없고. 읽기전용이며 중복될 수도 없습니다! (복합적인 경우는 아주 드뭅니다.)

무결성

 예시로 위 그림을 참고하면,  만약 사용자 3번을 탈퇴한다면 보통 탈퇴 테이블에 옮기게 되며 일정 기간 지난후 완전히 데이터를 삭제하게됩니다. 그러나 이러한 삭제시 화살표관계 즉 부자관계시 무결성을 검사하게 됩니다. 즉, 먼저 주문 테이블에 있는 것을 삭제해야합니다. 그 후에 사용자 정보에서 탈퇴를 시키게되는데 이러한 것을 무결 성이라고 합니다.

 한테이블에 만들었다면.. 무결성 검사가 안됩니다. 그럼 3번을 찾아서 모두 삭제해야되겠죠. 네 비효율적입니다. 즉 테이블을 나누어 놓음으로써 무결성 검사도 같이 이루어 질 수 있습니다.

 여기까지 데이터베이스 설계에 대한 아주 간단한 내용이었습니다. DB는 이정도 알고있으면 개발자에게 충분합니다. 왜냐면 개발자는 데이터를 넣고 빼고 삭제하고 업데이트하고.. 이것만(?) 잘 하면 되기 때문입니다. 그래서 DML명령이 별로 사용되지 않는 것. 왜냐면 한번 만든 후에는 변경이 거의 이루어지지 않기 때문입니다. 그래서 DB설계시에는 굉장히 신중하게 해야합니다.

 아무리 큰 프로그램이라도 DB가 10개이상 넘어가지 않으며, 10개가 넘는다면 그 프로그램은 문제가 있을 수 있다고 의심해봐야한다고 하네요.

연결문자열

연결문자열

연결문자열만 알면 프로그램 상에서 라이브러리를 사용해서 데이터 베이스에 접근이 가능합니다.

과제: SQL 가지고 놀기

댓글
댓글쓰기 폼