모도리는 공부중

20.11.03 오전 - 데이터베이스 본문

K-디지털 빅데이터 분석서비스 개발자과정 20.11.02~21.04.12/SQL

20.11.03 오전 - 데이터베이스

공부하는 모도리 2020. 11. 3. 12:53
728x90
반응형

첫번째 시간

 

영타타이핑 날마다 연습
주석문 다는 연습
연습문제가 날마다 있다
질문 많이많이



데이터베이스
수집 저장 분석 예측 서비스
서비스는 웹이나 어플로 제공.
저장? 공간이 있어야겠죠. 앞으로 배울 데이터베이스 개념이 바로 이것.
데이터들을 모아놓은 집합. 저장된 형태를 데이터베이스라고 한다.



데이터 : 가공되지 않은것. 추상적인것을 통틀어서 표현.
정보 : 데이터를 가공해서 얻어낸 결과

1+1=2
1은 데이터, 2는 정보
1+1=3
1은 데이터, 3은 틀린 정보



☆데이터무결성☆ : 무결성? 결점이 없다. 데이터가 결점이 없어야한다. 데이터의 정확성.
데이터베이스에 저장된 데이터들은 항상 정확한 데이터가 저장되어있어야한다는 개념.
 └신뢰성으로 이어지는 부분.
잘못된 데이터를 가공하면 잘못된 정보가 나온다.
은주쌤 생각나네. 쓰레기를 넣었더니 쓰레기가 나오더라~ㅋㅋ



일괄처리시스템 : 특정 작업을 모아서 한 번에 처리하는 시스템.
└장점 : 한 번에 하나의 일만 하기 때문에 시스템이 안정적.
└단점 : 고객 요청이 들어왔을 때 실시간 피드백을 할 수 없음.
위의 단점을 해결한 것이 바로?
실시간처리 시스템 
└단점 : (시스템 뇌에 쥐가...ㅋㅋ) 한계를 넘어서는 실시간 요청이 들어오므로 시스템과부하 발생. 하나의 시스템에 몰려있기 때문에 오버헤드 발생.
위의 단점을 해결한 것이 바로?
분산처리 시스템 (지하철 공간을 더 늘려달라~~하는 것처럼)
하지만 요즘은 하이브리드 시스템입니다. 은행이 대표적인 하이브리드 시스템이죠!
하이브리드 : 실시간(을 분산으로 조정) + 일괄

파일 처리 시스템 : 1990년대에 주로 쓰이던 것이지만 지금도 사용중.
└여기서 나온 단점을 해결해서 나온 것이 바로 데이터베이스.



비전공자들이 알고 넘어갈 상식 정보들을 정리하고 넘어가볼까요?
재료, 도구, 공간 ← 컴퓨터도 이 세가지가 반드시 필요하다!
이건 돌고 돌고 돌고~~

저장장치 : DISK : 재료(AMP)
컴퓨터에는 실제로 이런 저장장치들이 필요하겠죠?
도구: 프로세스!를 할당받아야만 작업진행 가능!
프로세스는 CPU에서 할당해준다.
작업공간 : MEMORY(RAM)에서~~ 



다시 파일처리시스템으로 돌아와서~
파일의 형태로 데이터를 저장하는 것!

종속성의 첫번째 문제!
응용프로그램과 파일이 1:1로 매칭되어있어서 약점 발생
└응용프로그램이 파일을 독점한다.

 

 

 

같은 파일을 여러개 열 수 있다. 그럼 이걸 저장하면 어떻게 될까?

첫번째 파일은 ctrl + s를 누르면 바로 '저장'되지만 두번째 파일은 '다른 이름으로 저장'이 뜬다.

이처럼, 응용프로그램은 다른 작업을 방지하기 위해 독점을 하고 있다. 독점성!

내 작업을 철저하게 현 상태로 보관하기 위한... 동시성 방지.

 

데이터중복을 최소화시키는게 가장 중요한 이슈.

 

데이터베이스를 다시 정의해보자면,

파일을 여러개의 독립된 데이터로 놔두지 않으려고 통합데이터.

데이터베이스는 항상 현 시점을 유지해야한다. 항상 지속적으로!

많은 유저들이 동시접속을 통해 작업할 수 있는 환경을 제공. 동시성을 극대화해주는 특징을 가진다.

'내용으로 참조'라는 특징은 시험때 매우 중요!

└데이터베이스는 물리적인 주소가 아닌 데이터자체를 보고 찾아간다.

아파트로 보자면 101동에 101호 102호 103호 104호 등이 있겠지?

파일처리시스템은 hader와 value가 있는데, hader에 101동 101호가 있음..

음...

 

데이터베이스는 정확히 말하자면 중복을 허용하지만, 중복을 최소화시켜서 무결성을 보장하므로 정확한 데이터만 저장해놓은 집합을 말한다. 정확한 데이터를 제공하기 위해 끊임없이 지속되며 여러 사용자가 사용하기 위해 동시성도 가지고 있다.

공유와 공용의 공통점은 같이 쓰는걸 말하지만 둘은 엄연히 다르다.

파일처리시스템은 데이터 전체를 독점, 데이터베이스시스템은 데이터 하나를 독점.

파일처리 : 땡처리하는 곳 / 데이터베이스 : 마트백화점

이렇게 생각하는 것이 좋음.

 

 

 

DBMS - 데이터베이스 매니지먼트시스템 - 관리시스템

{+우리나라는 오라클 점유율 60%. 요즘은 IBM이 열심히 노력해서 내려간게 이정도이며 70~80% 정도 되었었음.

오라클(db로 시작) vs 마이크로소프트(운영체제로 시작) ← 둘이 원수 관계.

오죽하면 바이러스 이름을 빌게이츠라고 할 정도. 시리와 빅스비도 둘이 싸운다?

(+약어 쓰는건 좋아요, 제발 풀네임은 알고 써줘. 언어마다 다르게 쓰이기도 하니까 제에발.)}

 

데이터베이스 관리시스템 필수 기능

정의 조작 제어로 이루어져 있다.

 

 

데이터베이스 관리시스템의 장단점

DB쪽 자격증 관심이 있으시다면??

└SQL-D(문장에 관련된 시험) 공부해보시죠. 연구원님이 지도해줄 수 있음!

 

메타데이터? : 데이터를 표현해놓은 데이터.

└이걸 '스키마'라고 표현.

스키마라는 형태로 사람으로 따지면 뇌에 해당하는 dictionary에 저장.

 

데이터베이스언어! - 내일부터 배울 SQL~~

DDL, DML, DCL 

 

데이터베이스 사용자? 가장 많이 접근하는 사람들이 바로 응용프로그래머!

 

데이터모델링

프로세스진행과정을 이해했으면 합니다.

데이터베이스 설계 프로세스를 설명해볼게요.

제목 결정, 이름 결정했죠? 주소록이라는 제목을 만들고, 이름 나이 연락처라는 열 이름을 만들고 표 형태로 만들어 넣었죠? 표의 형태로 저장하는게 관계형 데이터베이스(RDB)라고 합니다.

열 이름을 단 이유는 어떤 형태체계로 할건지 분류체계 약속을 한거죠? 스스로의 약속.

세부 영역을 나누는 것. 이것을 데이터베이스라고 생각.

{이따 오후에 하게될 파이썬. 입력한 내용을 실행하는걸 컴파일(컴퓨터가 이해할 수 있는 단어로 변환하는 작업을 통틀어서 지칭.)이라고 한다.}

코끼리를 컴퓨터에 못 넣죠? 박살나요~~ㅋㅋ

현실세계 데이터를 DB의 구조에 맞게 변환하는 작업 : 모델링 : (상위개념-추상화)

└이런 추상화 작업이 컴파일로 이루어지는 것.

 

구조 논리 물리적 3단계 설계를 통해 실제 DB를 구현 후 운영하면서 유지보수 단계 진행.

 

설계

개념적 설계

└ 이 DB에 무엇을 설정할 것인지?

  └ 개체(릴레이션, Table = 아까 표에서 제목)

  └ 속성(열 이름, Column = table구성하는 세부속성)

  └ 관계(e-R모델 가장 많이 사용. 개체 속성을 도형의 형태로 표현. e-R모델의 결과물이 ER D)

 (+작업을 편하게 할 수 있도록 도와주는 도구를 모델링이라고 한다.)

비정규릴레이션(TABLE) => 중복허용 => 이상현상

정규화작업이 되면 TABLE을 속성별로 잘게 쪼개면서 무결성으로 이어진다.

중복을 제거하는 정규화작업을 거쳐서 중복 최소화.

 

논리적 설계

└ 효율적인 TABLE을 만드는 단계. 표의 형태로..

계층형 데이터모델, 단계형, 네트워크형 이렇게 모델이 많다.

우리나라는 관계형 DB의 형태.

프라이머리키. 주민등록번호같은거? - 중복을 허용하지 않도록 해주는 중요한 작업

반드시 값이 있어야만 함.

PK = UK + NN

(null은 '값이 없다'라고 현업에서 표현하는데 이건 실상 틀린 표현. 시스템에서 '값이 없다'는 '찾을 수 없다'임. null은 정확히 '비어있는 값'. 그래서 실제 시스템에서 null은 공간이 할당되어있기 때문에 찾아낼 수 있다.

0, 띄어쓰기, null 이거 차이?

0은 1byte, 띄어쓰기는 문자byte로 저장되기 때문에 크기가 커진다.

uk는 유니크. 값이 고유해야한다.라는 속성.

후보키는 프라이머리키 속성 선정을 위해 일단 후보군을 뽑는걸 말함.)

다시 프라이머리키로 돌아와서,  아래의 표는 대학에서 쓰이는 표라고 치고, 학번이 pk..

주민번호 학번 이름
     

pk는 특정 상황에선 여러개 있을 수 있지만 결코 좋은 것은 아니다.

 

물리적 설계

└ 데이터베이스의 성능을 고려.

실제 db 구현...

 

 

지금까지의 이론은 솔직히 잊어도 됩니다. 논리만 알려고 공부하는 건 아니니까.

하지만 지금부턴 다 기억해야함. 반드시.

 

 

데이터무결성..

다시 s대학을 가져와보자. 후보키들중 학번이 pk가 됐지?

주민번호 학번 이름
     

후보키중 프라이머리키가 지정되고, 지정되지 않은 나머지를 대체키라고 한다.

 

지금부터 중요한 외래키(foreign key).

부서
부서번호 부서이름
10 a
20 b
30 c
사원
사번 사이 부번
100 10
101 20
102 10
103 40

물리적으로는 40번이 들어가지만 논리적으로는 들어가면 안됨.

10번부터 30번까지만 쓸 수 있어야하지만 입력되면 독립적인 테이블로 인식되어버린다.

이때 foreign key는 관계형을 할 수 있도록 서로 참조할 수 있게 테이블과 테이블을 연결해주는 역할을 함.

40을 입력하면 응? 그런거 없으니 안돼!를 외쳐준다고.

 

슈퍼키(super key)

물품
물번 물이
B01 라면
B02 참치
주문내역
주번 물번 물이
P01 B01 10
P01 B02 10

여러개의 후보키를 PK로 설정해줄 수 있는 걸 슈퍼키라고 한다.

PK는 유일성과 최소성을 만족. 

유일성은 중복을 허용하지 않겠다. 최소성은 하나의 Column을 의미.

슈퍼키는 최소성은 만족하지만 유일성을 만족하지 못함.

슈퍼키 자체가 중복을 허용하기 때문에 그렇게 좋은 값은 아님.

실제 쇼핑몰에서 같은 내용을 또 누르면 또 생성될 수 있는게 슈퍼키때문.

 

이후 내용들은 정처리 관련이구요~

그러니 시간 있으면 읽어보세요.

 

 

트랜잭션 - 데이터베이스를 일괄처리하기 위한 작업의 단위.

트랜잭션이 종료가 되면 commit이 생성.

작업 시작부터 끝까지의 모든 과정을 트랜잭션이라고 부르죠?

commit : 트랜잭션에 의해 수행된 모든 작업내용을 한꺼번에 db에 영구이 저장해버리는 개념.

하지만 트랜잭션이 commit을 위해 만들어진 개념은 아닙니다.

트랜잭션이 수행중일때 문제가 해결되지 않은 상황에서 저장되면 데이터무결성이 깨진다.

그래서 이걸 어떻게 취소시킬까? 맨 처음으로 되돌려야겠죠. 트랜잭션이 수행되기 전으로.

취소시키는 현상을 Rollback. 고로, 트랜잭션은 잘못 수행된 것을 rollback하기 위해 있는 것.

지금까지의 설명이 바로 '원자성'이다.

격리성 - 의자 만들때 내 작업을 다른것이 끼어들어서 손상되지 못하게 해주는 속성.

지속성 - 다른말로 연속성이라고도 표현. 한 번 commit된 데이터는 무조건 commit되어 있어야한다. 컴퓨터 에러로 인해서 문제가 발생했을 때 파일을 asd확장자로 복구되어있는 것을 본적이 있을 것이다. 이게 바로 지속성.

 

 

 

 

오늘 내용 다시 중요한 것만 정리해보자.

무결성을 보장하기 위해 중복을 최소화해서 저장해놓은 것을 데이터베이스.

끊임없이 운영이 이어져야한다는 것 꼭 기억.

테이블 - 가장 작은 저장단위. 테이블은 속성들로 구성되어 있다. table, column

프라이머리 키 - 테이블에서 속성들 중에 그 테이블을 대표할 수 있는 column에 부여. 중복되지 않도록 관리.

포린 키 - 다른 테이블의 값을 참조하여 테이블과 테이블의 관계를 지정해주는 속성 제공.

트랜잭션 - 트랜잭션이 종료되면 commit 아니면 rollback 둘 중 하나의 현상 발생. 정상적으로 발생되었을 땐 commit으로 영구히 저장, rollback은 결점이 생기면 안되므로 되돌리는 것.

 

여기까지가 DB개론ppt 1~76까지의 내용.

내일부턴 SQL 들어갑니다. DB구조를 잘 알고 있어야해요.

내일부터 보이는건 검은 바탕에 흰 글씨.. 오늘은 DB 복습하지마세요(?)

728x90
반응형
Comments