ms-sql7.0 implementation 강의 노트
DESCRIPTION
MS-SQL7.0 Implementation 강의 노트. Written by 남현주. 1 일 history, 설치, R-DBMS Chapter 1. SQL Server 개요 Chapter 2. Transact- SQL 개요 Chapter 3. 데이터베이스 생성하기 (간략히). History (SQL Server 의 역사 ). 1970 년 IBM : 데이터베이스 질의를 위한 언어 만듬 – SEQUEL ( 구조적 질의 언어 : Structured English Query Language ) - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/1.jpg)
MS-SQL7.0 Implementation 강의
노트
Written by 남현주
![Page 2: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/2.jpg)
1 일 history, 설치 , R-DBMS Chapter 1. SQL Server개요 Chapter 2. Transact- SQL 개요 Chapter 3. 데이터베이스 생성하기 (간략히 )
![Page 3: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/3.jpg)
History (SQL Server 의 역사 ) 1970 년 IBM : 데이터베이스 질의를 위한 언어 만듬 – SEQUEL ( 구조적 질의 언어 : Structured English Query
Language)
Sybase 와 Microsoft 가 협력 v1.0 을 OS/2 용으로 , v4.2 부터 NT 서버로 이식 V6.0 부터는 Microsoft 독자적으로 개발 6.5, 7.0 으로 진보된 기능들을 선보임
( 위저드 제공 , UniCode 지원 )
![Page 4: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/4.jpg)
제 1 장 SQL Server 개요
SQL Server 란 클라이언트 / 서버형의 관계형 데이타베이스 관리
시스템 (RDBMS) 이다 .
클라이언트 / 서버 (Client/Server Architecture)
클라이언트클라이언트 : 다른 시스템 구성요소 들에게 서비스나 자원을 요청하는 시스템 구성요소 서 버서 버 : 서비스나 자원을 다른 시스템 구성 요소 들에 제공하는 시스템 구성요소
![Page 5: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/5.jpg)
클라이언트 / 서버 환경
클라이언트는 서버에게 자신이 원하는 바를 요청(Request) 한다 . 그러면 서버는 그에 대해 처리하고 클라이언트에게 응답 (Response) 한다
![Page 6: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/6.jpg)
데이터베이스의 필요 배경
SAM(Sequential Access Method)I-SAM(Indexed SAM) 파일 출현 PC :dBase, 호스트 :네트워크 DB, 계층적 DB
등장 DBMS(DataBase Management System) 등장
SQL Server 는 관계형 데이터베이스 관리 시스템(RDBMS:Relational Database Management
System)
![Page 7: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/7.jpg)
- 데이터에 기반한 시스템의 3 가지 범주 . 파일 기반 시스템 (File-based systems)
. 호스트 기반 시스템 (Host_based systems)
. 클라이언트 / 서버 시스템 (C/S systems)
관계형 데이터베이스 관리 시스템 (RDBMS) 구조 : 2 차원 테이블
Data base
Data modeling
Application
table entity record set
column attribute field
row instance record
![Page 8: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/8.jpg)
Transact_SQL
SQL Server 는 구조화된 쿼리 언어의 한 버전인 Transact-SQL 을 데이터베이스 쿼리 및 프로그래 밍언어로 이용한다 . Transact-SQL 로는 데이터를 액세스하고 관리할 수 있다 .
조 작조 작 : DB 에 저장된 데이터의 입력 , 수정 , 삭제 , 조
회 등의 작업을 SQL 에 의해서 최종사용자에 게 보여지게 함 무결성무결성 : 데이터의 일관성 , 믿을 만한 데이터로 만듬
![Page 9: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/9.jpg)
NT 서버와의 관계 SQL Server 는 NT Server 가 주된 플랫폼 . NT 의 기능들 중에서 SQL Server 가 그대로
사용하는 것은 다음과 같다 .
1. 보안 체계 2. 멀트 프로세서의 지원 3. NT 이벤트 지원 4. 서비스로서의 동작 5. 성능 모니터 6. Index 서버 7. 백 오피스와 관련성
![Page 10: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/10.jpg)
SQL Server 구성요소
- SQL Server 서비스
. MSSQLServer 서비스 . SQL Server Agent 서비스
. MS DTC (Microsoft Distributed Transaction Coordinator)
. MS Search 서비스
![Page 11: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/11.jpg)
- SQL Server 클라이언트 소프트웨어
. SQLServer Enterprise Manager
. SQL Server Query Analyzer
. SQL Server 관리도구와 마법사
. SQL Server 명령 프롬프트 관리 도구들
![Page 12: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/12.jpg)
SQL Server 구조개요
- 통신 구조
. 어플리케이션 . 데이터베이스 인터페이스 . 네트워크 라이브러리 . 개방형 데이터 서비스
![Page 13: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/13.jpg)
- 데이터 액세스 구조
. 응용 프로그램 프로그래밍 인터페이스OLE DBODBC
. 데이터 객체 인터페이스ADORDO
![Page 14: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/14.jpg)
제 2 장 Transact-SQL 개요
SQL Server 프로그래밍 도구
SQL Server Enterprise Management 사용방법과
SQL Server Query Analyzer 사용방법
![Page 15: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/15.jpg)
- 세션- 쿼리저장- GO 배치 분리자- 판독의 용이를 위한 여러 라인 코딩- 실행 ( 전체 , 일부분 ) - Parse : 분석은 하지만 실행하지는 않음- 단축키- osql 유틸리티 : 명령 프롬프트에서 쿼리나
스크립트 실행
![Page 16: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/16.jpg)
Transact-SQL 구성요소
1. 데이터 제어 언어 (Data Control Language, DCL)
2. 데이터 정의 언어 (Data Definition Language, DDL)
3. 데 이 터 조 작 언 어 (Data Manipulation Language, DML)
4. 변수 , 연산자 , 함수 , 처리 제어 언어 , 주석
![Page 17: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/17.jpg)
( 데이터 제어 언어 (Data Control Language, DCL))
DCL 문은 데이터베이스 사용자 혹은 역할과 관련된 권한을 변경할 때 사용 .
문 (Statement) 설명
GRANT 보 안 이 요 구 되 는 시 스 템 에 서 데이터를 조작하고 T-SQL 문을 실 행 하 는 사 용 자 를 허 가 하 는 엔트리를 생성한다 .
DENY 보안이 요구되는 시스템에서 계정의 권한을 거부하고 사용자 , 그룹 , 역할로부터 그들의 그룹과 역할 멤버쉽을 통해 권한을 상속받는 것을 막는다 . REVOKE 이전에 허가 또는 거부되었던 권한을 제거한다 .
![Page 18: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/18.jpg)
( 데이터 정의 언어 (Data Definition Language, DDL))
DDL 문은 데이터베이스와 테이블 및 저장 프로시저 같 은 데 이 터 베 이 스 객 체 의 생 성 을 통 해 데이터베이스 구조를 정의 . CREATE , ALTER, DROP 문
* 참고 : 객체의 이름 Fully Qualified Names : 서 버 이 름 ,
데이터베이스 이 름 , 소유자 이름 , 객체 이름 대부분의 객체 참조는 로컬 서버를 디폴트로 하고 세 부분의 이름을 사용한다
![Page 19: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/19.jpg)
( 데이터 조작 언어 (Data Manipulation Language, DML))
DML 문은 데이터베이스에서 데이터를 조작 . 이 문을 이용하여 데이터 변경 또는 정보를 추출할 수 있음 . SELECT, INSERT, UPDATE, DELETE
* 기본적인 SELECT 문
SELECT 이후에는 가져올 컬럼이나 표현식을 나열하면된다 . 모든 컬럼 지정시 * FROM 이후에는 어떤 테이블로부터 데이터를 가져오는지 지시한다 . 여러 테이블이 올 수 도 있고 , 뷰가 올 수도 있다 . WHERE 절 이후에는어떤 행을 가져올 것인지를 지시한다 . 생략하면 전체행을 가져온다.
![Page 20: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/20.jpg)
예 )SELECT * FROM titles – titles 테이블의 전체 자료 가져오기
SELECT title_id, pub_id, price, title FROM titles– 원하는 컬럼 순으로 가져오기
SELECT ‘ 책 번호 :’, title_id, pub_id, price, title FROM titles– 임의의 컬럼 만들기
![Page 21: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/21.jpg)
SELECT Title_no = title_id, ‘ 출판사 번호’ = pub_id, price, title FROM titles – 컬럼의 제목 바꾸기 (1) SELECT title_id as Title_no , pub_id as [ 출판사 번호 ], price, title FROM titles – 컬럼의 제목 바꾸기 (2) SELECT title_id Title_no , pub_id [ 출 판 사 번 호 ],
price, title FROM titles – 컬럼의 제목 바꾸기 (3)
![Page 22: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/22.jpg)
SELECT title_id as Title_no, pubid as ‘ 출판사 번호’ ,
price, Convert(char(30), title) as ‘ 줄인 제목’
FROM titles – 자료를 변형시킴 (1) SELECT title_id as Title_no, pubid as ‘ 출판사 번
호’ , price * 1.1 as ‘ 가격 ( 부가세 포함 )’FROM titles – 자료를 변형시킴 (2) * 주의 : SELECT 10/3 은 ?
![Page 23: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/23.jpg)
( 로컬 변수 )변수는 할당된 값을 갖는 언어 구성요소이다 . 사용자 정의 로컬 변수는 @ 로 시작한다 .예 ) DECALRE @lvname char(20)
SET @ lvname = ‘Dodsworth’ SELECT * FROM employees WHERE lastname = @lvname
( 연산자 )치환 연산자 (=), 산술 연산자 , 단항 연산자 , 비교 연산자 , 문자열 연결 연산자 (+), 논리 연산자
![Page 24: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/24.jpg)
( 함 수 ). . Rowset 함수 : T-SQL 문 테이블에서 사용될 수 있는 객체를
반환한다 .. . 집계 (Aggregate) 함수 : 일련의 값으로부터 하나의 요약된 값을 반환한다 .. . 스칼라 (Scalar) 함수 : 하나의 값을 반환한다 . (p96 ~102)
형변환 함수 ) CONVERT()
![Page 25: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/25.jpg)
연산 함수 )
ABS() – 절대값 CEILING() – 소수점 이하 버림
SELECT CEILING(29.9) FLOOR() – 소수점 이상 절상
SELECT FLOOR(29.9) ROUND() – 반올림 SELECT ROUND(29.1, 0),
ROUND(29.953, 1)
![Page 26: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/26.jpg)
문자열 함수 ) LTRIM() : 앞쪽의 빈칸을 모두 삭제한다 . RTRIM() : 뒤에 오는 빈 칸을 삭제한다 . SUBSTRING() : 문자나 이진 문자열의 일부분을 돌려준
다 . ( 한글도 한 글자가 한 문자로 인식 ) SELECT SUBSTRING(‘ 아버지 나는 누구예요 ?’, 3,6)SELECT SUBSTRING(‘ABFZ!!!’, 1,3)
REVERSE() – 문자 표현식을 거꾸로 돌려준다 .
![Page 27: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/27.jpg)
날짜 함수 ) GETDATE() – 현재의 날짜와 시간
SELECT CONVERT(varchar(30), GETDATE(), 102)
DATEADD() – datepart 부분에 지정한 숫자 값을 더한다 .SELECT DATEADD(DD, 100, GETDATE()) – 오늘로부터 100 일 후는 ?
datepart 약어 범위
year Yy 1753-9999
quarter Qq 1-4
month Mm 1-12
Day of year Dy 1-366
Day Dd 1-31
Week Wk 0-51
Weekday Dw 1-7(1 이 일요일 )
Hour Hh 0-23
Minute Mi 0-59
Second Ss 0-59
millisencond Ms 0-999
![Page 28: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/28.jpg)
시스템 함수 ) OBJECT_ID() : 데이터베이스의 오브젝트 아이디
번호 . OBJECT_NAME() : 데이터베이스 오브젝트명
보안 함수 ) SUSER_NAME() : 시스템 유저명을 돌려준다 .
![Page 29: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/29.jpg)
* 조건에 맞는 행 가져오기 SELECT title_id, qty
FROM salesWHERE title_id = ‘BU1032’
* 비 교 = > < >= <= <> != !> !<
![Page 30: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/30.jpg)
* NULLSELECT title_id, priceFROM titlesWHERE price IS NULL
주의 ) SELECT title_id, priceFROM titlesWHERE price = NULL
![Page 31: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/31.jpg)
* 정 렬SELECT title_id, qtyFROM salesORDER BY title_id, qty
주의 ) SELECT title_id, qtyFROM salesORDER BY title_id, qty DESC
![Page 32: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/32.jpg)
* 범 위SELECT title_id, qtyFROM salesWHERE qty BETWEEN 10 AND 20(WHERE qty >= 10 AND qty <= 20)
* 목 록SELECT title_id, qtyFROM salesWHERE title_id IN (‘BU1032’,’BU1111’,’MC3021’)(WHERE title_id =‘BU1032’ OR title_id =’BU1111’ OR title_id =’MC3021’)
![Page 33: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/33.jpg)
문자열에서 LIKE 와 패턴 매칭
패턴 설 명
_ 정확히 한 문자가 와야 한다 .
% 아무것도 없는 경우를 포함하여 어떤 것이라도 상관 없다 .
[ ] [ ] 안에 있는 글자들
[ ^ ] ^ 다음에 이는 글자는 제외한 나머지
![Page 34: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/34.jpg)
* 중복된 행 제거 – DISTINCTSELECT DISTINCT title_idFROM sales( ! DISTINCT 가 사용되면 자동으로 정렬해줌 )
표현식 해당되는 것 해당되지 않는 것
book_ books, booka, booky book, booked
book% book, books, booked abook, atbooks, adbooked
%book% abook, abooks, book brook, brooks
[st]ing sing, ting ving, king, k, v, vin
[b-f]ing bing, cing, ding, eing ,fing
aing, b, f, ging
M[^c]% Mike, Many, Mickey McDonald, McAthur, M, Mc
![Page 35: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/35.jpg)
/* 튜닝을 위한 제안 */
. NOT 연산자를 사용하지 말것 : 색인의 도움을 받을 수 없다 .
. 연산자 앞에는 컬럼만 오게 할 것 . 적절한 ( ) 와 띄어쓰기 : 가독성을 좋게한다 .
![Page 36: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/36.jpg)
((흐름흐름 제어제어 언어언어 구성요소구성요소 ))BEGIN… END 블록IF… ELSE 블록WHILE 구조 : 지정된 조건이 참인 동안 블록을 반복 적으로 수행RETURN : 쿼리 혹은 프로시저로부터 무조건 빠져 나 옴 . RETURN 뒤 의 문 은 실행되지 않는다 . 0 값이 정상 , 0 이 아닌 값이 에러지시를 위해 사용된다 .인 라인 주석 ( -- ) : 주석문자의 오른쪽 텍스트는 무
시된다 .블록 주석 (/* */)
![Page 37: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/37.jpg)
( 배치 이용하기 ) 여러 개의 SQL 문을 모아 놓고 GO 라는 키워드로
구분한 것을 배치라고 한다 .
배치 구분자 GO 를 이용하여 배치 정의하기 사용자 정의된 변수 범위는 배치에서 제한되므로
배치구분자 GO 뒤에서는 참조할 수 없다 . SQL Server 는 GO 가 나타날 때까지 문법 검사와 실행을 하지 않음 .
규 칙 : CREATE DEFAULT, CREATE TRIGGER, CREATE PROC(EDURE), CREATE RULE, CREATE VIEW 는 배치의 처음에 나타나야 한다 .
![Page 38: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/38.jpg)
( 스크립트 사용하기 )
파일로 저장되는 하나 이상의 T-SQL 문이다 . 즉 , 배치를 여러 개 모은 것을 스크립트라고 한다 . 일반적으로 파일로 저장해두고 반복적인 작업을 할 때 사용한다 .
표준 확장자는 .SQL 이다 .
![Page 39: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/39.jpg)
( 쿼리가 처리되는 과정 P112~)( 캐시 쿼리 )( 다이나믹하게 문 구성하기 )( 트랜잭션 사용하기 )
![Page 40: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/40.jpg)
제 3 장 데이터베이스 생성하기
R-DBMS( 관계형 데이터베이스 ) 설계 소개
데이터베이스란 어느 한 조직의 다수 응용 시스템들이 사용하기 위해 통합 , 저장되어진 서로 관련된 데이터의 집합 “서로 관련된 데이터의 집합”
행 (Row),열 (Column)로 이루어진 2 차원 테이블 구조
![Page 41: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/41.jpg)
용어정리 >
관계형 데이터베이스는 설계시에 꼭 중요한 모델링이라는 작업이 들어간다 . 설계에 들어가는 시간이 개발에 들어가는 시간보다 월등히 많이 필요하다 .(70~80%) 모델링을 하는 가장 큰 이유는 데이터의 중복성을 제거하는 것이다 .
데이터베이스 데이터 모델링 어플리케이션
테이블 (table) 실체 (entity) 레코드셋 (record set)
열 (column) 속성 (attribute) 필드 (field)
행 (row) 인스턴스 (instance) 레코드 (record)
![Page 42: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/42.jpg)
* 모델링의 3단계 : 실체 , 관계 , 속성
실체 (entity) : 하나로 묶을 수 있는 것의 실질적인 집합예) 사원 테이블 , 고객 테이블 등…
관계 (Relationship) : 실체에 대한 설명이나 추가적 인 구분자 . 기본키와 참조키로 정의
예) 사원과 부서의 관계 , 고객과 주문의 관계 등…
속성 (Attribute) : 실체나 관계에 대한 서술적 속성 . 컬럼예) 사원명 , 사원번호 , 주소 , 전화번호 등…
![Page 43: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/43.jpg)
* 논리적인 데이터베이스 설계
. 테이블 및 해당 이름 .각 테이블의 컬럼명 . 유일 값 요구 , 널 허용 , 컬럼에 저장될 자료형 같
은 컬럼의 특성 . 각 테이블의 기본키 : 테이블의 컬럼을 유일하게
식별할 수 있는 값들을 저장하는 컬럼이다 . . 테이블간의 관계 : 어떤 테이블의 행들은 다른
테이블의 하나 이상의 행에 종속적이다 . 이러한 테이블 사이의 종족성을 관계라 한다 . 관계를 정의하기 위해서 다른 테이블의 기본 키를 참조하는 이러한 컬럼을 참조 키라 한다 .
![Page 44: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/44.jpg)
. 관계에는 일대일 , 일대다 , 다대일 , 다대다와 같은 경우가 발생할 수 있다 . 참고로 다대다는 R-DB에서는 인정되지 않는 관계로 정규화를 거쳐야 한다 .
( 정 규 화 )
1. 제 1정규화 (1NF)규칙 : 여러 값을 가진 컬럼이 존재할 수 없다 . 반
복되는 그룹이 존재해서는 안된다 . 각 행 과 열에는 오직 한 값만이 존재해야 한다 .
![Page 45: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/45.jpg)
1 번 사원은 두 가지 취미를 갖고 있다 . 이 그룹은 제 1 정규화의 대상이 된다 . 다음과 같이 정규화 한다 .
사번 사원명 취미
1 홍길동 여행골프
2 사미자 등산
사번 사원명
1 홍길동
2 사미자
사번 취미
1 여행
1 골프
2 등산
![Page 46: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/46.jpg)
2.제 2정규화 (2NF)
규칙 : 모든 키가 아닌 컬럼은 기본 키 전체에 의존 적이어야 한다 . 기본키의 일부분에 의존적 이어서는 안된다 .
사번 프로젝트번호 부서 프로젝트 역할 고과율
1 A 전산 팀장 A
1 B 전산 조원 C
1 C 전산 부팀장 B
2 C 경리 팀장 A
3 C 기획 팀장 A
![Page 47: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/47.jpg)
위의 테이블에서 기본키는 (사번 +프로젝트 번호 )이다 . 그런데 부서 컬럼은 사번에 의존적이다 . 즉 , 부서컬럼은 ( 사번 + 프로젝트 번호 ) 에 의존적이지 않고 사번에 의존적이므로 아래와 같이 제 2정규화를 거쳐야 한다 .
사번 프로젝트번호
프로젝트역할
고과율
1 A 팀장 A
1 B 조원 C
1 C 부팀장 B
2 C 팀장 A
3 C 팀장 A
사번 부서
1 전산
2 경리
3 기획
![Page 48: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/48.jpg)
3.제 3정규화 (3NF)규칙 : 키가 아닌 컬럼은 , 다른 키가 아닌 컬럼에 의 존적이어서는 안된다 .
사번 프로젝트번호 프로젝트 역할 고과율
1 A 팀장 A
1 B 조원 C
1 C 부팀장 B
2 C 팀장 A
3 C 팀장 A
![Page 49: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/49.jpg)
고과율 컬럼은 프로젝트 역할에 따라 변하고 있음을 볼 수 있다 . 즉 , 고과율은 키가 아닌 , 프로젝트 역할 컬럼에 의존적이다 . 아래와 같이 정규화한다 .
사번 프로젝트번호 프로젝트 역할
1 A 팀장
1 B 조원
1 C 부팀장
2 C 팀장
3 C 팀장
프로젝트 역할 고과율
팀장 A
조원 C
부팀장 B
![Page 50: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/50.jpg)
4.제 4정규화 (4NF)규칙 : 3NF 테이블은 의존적인 다대다 관계를 가질 수 없다 .
학번 이름 과목번호 과목명
1 최철호 K 국어
2 이상진 K 국어
3 김철민 K 국어
3 김철민 M 수학
3 김철민 E 영어
2 이상진 H 역사
2 이상진 P 정치
1 최철호 P 정치
![Page 51: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/51.jpg)
위의 테이블은 학생과 과복 간의 관계가 다 : 다 관계 이다. 이를 해결하면 다음과 같다.
<학생> <수강신청> <과목>
학번 이름
1 최철호
2 이상진
3 김철민
학번 과목번호
1 K
2 K
3 K
3 M
3 E
2 H
2 P
1 P
과목번호 과목명K 국어M 수학E 영어H 역사P 정치
![Page 52: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/52.jpg)
5. 비 정규화
정규화를 하는 것은 되도록 중복된 데이터를 제거해서 성능 향상에 도움을 주는 것에 초점을 두고 있으나 , 자주 JOIN 을 사용하면 차라리 테이블을 다시 합치는 것이 나을 수도 있기 때문에 이를 고려한 방법이 비 정규화이다 . 뿐만 아니라 파생된 컬럼을 테이블에 하나의 컬럼으로 저장하는 경우나 , 한 테이블에서 자주 쓰는 행과 그렇지 않은 행을 분리하여 테이블을 별도로 관리하는 것 또한 비 정규화에 속한다 .
![Page 53: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/53.jpg)
SQL Server 데이터베이스 소개 ( 데이터가 어떻게 저장 되는가 )
![Page 54: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/54.jpg)
(SQL Server 데이터베이스 파일 )
일차 데이터 파일 (.mdf)이차 데이터 파일 (.ndf)로그 파일 (.ldf)
* 데이트베이스의 아키텍처 :
데이터를 저장하는 데이터 파일은 그 내부에 여러 개의 익스텐트 단위 구조를 가지고 있고 , 다시 익스텐트는 8 개의 연속된 페이지를 기본 단위로 한다 . (SQL Server 에서 Input/Output 단위는 page이다 )
![Page 55: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/55.jpg)
페이지가 가들 차게 되면 다음 페이지에 저장된다 . 그러나 이 때에 하나의 행은 여러 페이지에 동시에 저장되어 질 수 없기 때문에 익스텐트가 가득 차게 되면 새로운 익스텐트를 할당받게 된다 . 즉 64KB를 더 사용할 수 있게 된다 .
( 트랜잭션 로그의 작동 방법 )
![Page 56: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/56.jpg)
트랜잭션 여러 개의 작업이 하나의 작업처럼 전부 처
리되거나 아니면 전부 처리가 안 되도록 (All or Nothing) 하는 일의 최소 단위
* 디스크의 성능을 높이기 위해서 캐쉬 사용
캐쉬는 디스크의 내용 중 일부를 메모리에저장해 두는 원리나 메모리를 뜻함 .
장점 : 빠른 수행 속도단점: 정전시 데이터가 하드디스크에 저장하지 못함
![Page 57: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/57.jpg)
SQL Server 는 트랜잭션 처리를 위해서 잠금과 로그 사용
* 데이터 변경 작업로그에 먼저 기록 -> 트랜잭션 완료 -> 로그를 메모리에서 디스크로 기록
데이터베이스 생성 및 삭제하기
* 생성하기 CREATE DATABASE mydb1 만 입 력 해 도 데이터베이스는 생성된다 . 모두 기본 설정값을 그대로 반영한 것이다 .
![Page 58: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/58.jpg)
예 ) CREATE DATABASE mydb2 -- 데이터베이스 명은 mydb2이다ON -- 데이터를 저장하는 공간이다 .( NAME = mydb2data -- 논리적 파일명을 지정한다 ., FILENAME = ‘c:\mssql7\data\mydb2.mdf’ -- 물 리 적
파일명을 지정한다., SIZE = 10MB -- 크기는 MB 단위, MAXSIZE = 50MB -- 최대 몇 MB 까지 자동적으로 늘릴
것인지 지정한다 ., FILEGROWTH = 5% -- 늘어날 때 5% 단위로 늘어나도록
지정한다 .)LOG ON( NAME = mydb2log, FILENAME = ‘c:\mssql7\data\mydb2.ldf’, SIZE = 5MB , MAXSIZE = 25MB , FILEGROWTH = 5MB -- 늘어날 때 MB 단위로 늘어나도록
지정한다 .)
![Page 59: MS-SQL7.0 Implementation 강의 노트](https://reader033.vdocuments.pub/reader033/viewer/2022052510/56814703550346895db43f50/html5/thumbnails/59.jpg)
- 삭제하기 DROP DATABASE database_name [,…n]