SQL 기초

bitna's study note·2022년 4월 12일
0

SQL

목록 보기
9/12

4월 12일 내용정리

1.테이블(=릴레이션)
-테이블:실무에서 사용하는 용어, 데이터를 강조
-릴레이션:수학에 기초, 구조적인 면을 강조

2.속성(=열=컬럼=어트리부트,필드)
속성의 개수:degree, 차수
튜풀(=행=레코드=row):튜플은 1행의 데이터 값
튜블의 개수:카디널리티

3.<정규화>
자료를 쪼개는 것인데,이상현상이 발생하는 릴레이션(테이블)을 분해하여 이상현상을 없애는 과정

*이상현상
1)삽입이상 :튜플을 삽입할때 특정 속성에 해당하는 값이 없어 null값이 입력되는 현상
나는 넣고싶지 않은데 어쩔수 없이 null데이터가 들어감 (null 값 이상)
2)수정이상(update 이상):튜플을 수정할때 중복된 데이터의 일부만 수정되어서 데이터의 불일치 문제가 일어나는 현상
데이터의 자료가 달라지는 현상, 담당자가 1번 자료는 업데이트했는데, 2번 자료는 업데이트안했을때(불일치 문제)
3)삭제이상:튜플을 삭제할때 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상.(연쇄삭제 문제)

4.함수 종속성
학번을 알면 학생이름을 알수 있다.
학번(결정자)->학생이름(종속자)
하나를 알면 다른 정보를 알수있는 관계를 종속성
학생이름은 학번에 종속되어 있다.
1) 함수 종속성(=함수적 종속성): 릴레이션의 속성 간에 함수적으로 종속하는 성질
a -> b : a는 b를 결정한다. 속성b는 속성a에 종속되어 있다.
a: 결정자, b: 종속자
2)이행적 함수종속성
a->b 를알면 b->c 를알면 c->a 알수 있는 관계

5.<논리적 모델링>

1NF(제1정규형):릴레이션에 속한 모든 도메인이 원자값 되어 있는 정규형
2NF(제2정규형):1NF가 된 상태에서, 기본키가 아닌 모든 속성이 기본키에 대하여 완전함수적종속을 만족하는 정규형
즉, 부분함수 종속을 없애는것(학벅을 알면 학년을 알수 있듯이 같은의미가 중복되지않게 쪼개는것)
3NF(제3정규형):1NF, 2NF가 된 상태, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는(이행적 종속문제를 해결)정규형
*이행적 종속:a->b 를알면 b->c 를알면 c->a 알수 있는 관계

6.<반정규화>: 물리적 모델링
시스템의 성능 향성, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정
의도적으로 정규화 원칙을 위배하는 행위

데이터(테이블) 통합: 두개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능향성에 도움이 될 경우 수행
테이블분할:
-수평테이블 분할 :튜플(레코드,행)을 기준으로 테이블을 분할
튜플(레코드,행)별로 사용빈도의 차이가 큰 경우 사용빈도에 따라 테이블을 나누기
-수직테이블 분할:하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할하는 것

7.<트랜잭션>
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미

(1)원자성(Atomicity): 트랜잭션에 포함된 작업은 전부 수행 되거나 아니면 전부 수행 되지 않아야한다.
트랜잭션의 연상은 데이터베이스에 모두 반영되도록 오나료(commit)되든지 아니면 전혀 반영되지 않도록 복구(rollback)되어야 한다.
실행했을때 완료가 되던지 문제가 샐길시 아예취소가 되는것, 즉 하다마는것 없음.
예)A계좌에서 B계좌로 이체를 할때 다른 계좌들이 접근못하도록 이체하는 동안에 락(=로크)을 걸어둠.
그리고 commit이라는 메세지를 보내면 다음작업 실행 하는것
A계좌에서 B계좌로 이체를 할때 문제가 생겼을때 rollback은 작업이전의 상태로 다시 되돌려 놓는것

(2)일관성(Consistency): 트랙젹션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야한다.
시스템이 가지고 있는 고정 요소는 트랙잭션 수행전과 트랙잭션 수행완료후의 상태가 같아야한다.
실행하기전과 실행후 상태는 같아야 한다.
예)계좌이체전 과 계좌이체후가 같아야 한다.

(3)고립성(Isolation,독립성,격리성,순차성)
수행중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야 한다.
수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행결과를 참조할수 없다.

(4)지속성(Durablity)
수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 한다. 저장된 데이터베이스는 저장직후 혹은 어느 때나 발생할 수 있는 정전 장애,
오류에 영향을 받지 않아 한다.
(성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.)

8.<락(lock,로크)>
트랙잭션이 데이터를 읽거나 수정할때 데이터에 잠금장치하는것
락을 이용하여 자신이 사용할 데이터를 잠그면 다른 트랙잭션은 잠금이 풀릴때까지 기다려야 한다.

9.<CRUD분석>
C(create, 생성), R(Read, 읽기), U(Update, 갱신), D(delete,삭제)
CRUD분석은 데이터베이스 테이블에 변화를 주는 트랙잭션의 CRUD 연상에 대해 CRUD 매트릭스를 작성하여 분석하는것
C>D>U>R 순서대로 흘러감.

10.<CRUD매트릭스>
2차원 형태의 표로서 행에는 프로세스를 열에는 테이블을 행과 열이 만나는 위치에는 프로세스가
테이블에 발생시키는 변화를 표시하는 업무프로세스와 데이터간 상관분석표

11.key
(1)후보키:학번, 주민번호 같이 유일하게 식별할수 있는 key , 유일성 과 최소성(최소한의key로만 구성되어있어야함)

(2)기본키(pk):후보키중에서 주가되어서 쓸거야, 중복안됨, null값 안됨, 최소성과 유일성은 만족하면 좋고 아니더라도 괜춘
unique->null쓸수있고, 중복쓸수없음

(3)대체키(보조키): 기본키에서 후보키를 뺀 나머지

(4)슈퍼키:유일성 만족, 최소성은 만족안해도됨
외래키(FK):다른테이블기본키를 참조하는 속성이나 이런값을 Fk라고함.


<ER 다이어그램> 개념적 설계

12.데이터 베이스 설계(모델링)
요구사항분석->개념적 설계(모델링 예:ER다이어그램) ->논리적 설계(정규화 과정이 필요) ->물리적 설계 ->db구현

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보