본문 바로가기

카테고리 없음

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님/클라우드 활용 자바개발자 양성과정/•27일차/11.28

1교시 : 갑ㅈ ㅏ기 서버설정 시작..?

 

 

local PC : 외부접속

집에서 사용한다면 공유기(KT, SK...) 포트포워딩

ngrok: 외부에서 local PC를 접근할 때 가상으로 포트포워딩

Apatche Tomcat : WS + WAS

 

 

 

 

1. tomcat 검색후 다운

 

 

 

2. C드라이브에 폴더 만들고 압축 풀기

 

 

 

3. 환경변수설정

내pc -> 속성 -> 고급설정 -> 환경변수  

 

 

4. cmd 가서 echo %CATALINA_HOME% 치고  확인

 

5.  bin 열고  startup.bat 실행 -> 내 pc가 서버가 됨.

 

6. 192.168.8.102:8080 치고 들어가  (내 ip 주소)

 

7. ngrok 가서 다운받고  c: VirtualServer 만들어서 압출풀고  ngrok  관리자실행 하면 무슨 창 하나뜸

8. ngrok http 8080 --authtoken 2YmVDWbbgqh6Y1XZeujm4jQzBtf_3JtoadeHcRxHhoWMv3R26  라고 쳐

                        -> 여기서 authtoken은  https://dashboard.ngrok.com/get-started/your-authtoken   여기서 복사한 값임 

 

ctrl c 눌러서  강제종료

 

ngrok tcp 1521 -- 2YmVDWbbgqh6Y1XZeujm4jQzBtf_3JtoadeHcRxHhoWMv3R26   타이핑

 

9. 이걸 가지고 db에 접속하기   ( http를 tcp로만 바꾸면 돼)

 

 


 

Oracle case 표현식

 

CASE 표현식

java의 if문  switch case문을 만들어 낼 수 있다.

~~별 case문 혹은 group by로 해결함

 

CASE 표현식 종류

1: 범위  (searched case 문) - > if문 같다고 생각하면 됨

2. 값: simple case 문 (switch 같은거)      -> oracle decode로 사용 가능 

 

기본 Syntext:  CASE WHEN THEN ELSE END  (5개 다들어가야함 무조건)

        ELSE의 값이 없거나  or  CASE WHEN THEN END - > ELSE 문장이 없기 때문에 모두다 NULL로 반환됨

 


 

NULL 함수

1. NULL은 미지의 값이다

2. NULL의 연산 결과는 항상 NULL

3. NULL의 비교연산은 항상 FALSE

4. NULL과 공집합은 전혀 다르다.

5. NULL을 찾는 방법은 SQL연산자은 IS를 사용해야 한다.

 

NULLIF

 

 

 

 

 

 

 

 

 


정규화

(Normalization)

제 1 정규형

(First Normal form)                  -     모든 Attribute가 원자값을 가짐

                                                    원자값은 더 이상 분해할 수 없는 가장 작은 데이터 단위를 나타냅니다

->이런식으로 작성하면 취미 컬럼에 대한 다수의 값을 가짐 (원자성이 깨짐)

 

 

1. 무결성제약조건 위반 ( 학생번호 E001이 2개임)  

2. 변경된 테이블에 대해서는 이상현상 (Anomaly) 이 발생함   ex 영화가 취미인 사람 이름을 바꿔줘 -> 독서 홍길동의 홍길동은 안바뀜 

 

 

해결방법 

1. 테이블을 분리 

   학생 (학생번호), 취미(학생번호 + 일련번호) 테이블 생성  (흰색 밑줄은 PK)

       한 명의 학생은  여러개의 취미를 가질 수 있다.

 

 

2. 컬럼 추가

  만약 취미 컬럼의 입력 갯수가 정해져 있다면

 


 

제 2 정규형

(Second Normal form)            -   키를 구성하지 않는  모든 속성(Attribute)가 기본키에 완전하게 함수적으로 종속

                                                   ->부분적 함수 종속성을 제거한다

                                                   -> 부분적 함수종속성을 제거하기 위해서 두 엔터티(테이블)로 분리

 

                                                   A의 값이 주어지면 항상 B의 값을 결정한다면 A는 B에 대해 함수적으로 종속되어 있다

 

위 테이블에서 학번, 학과 전화번호 같은건 같은 테이블에 있으면 안됨

 

(학번, 과목번호) -> 학점

(학번, 과목번호) -> 학과명, (학과, 과목번호) -> 학과전화

(학번)-> 학과명, 학점 -> 학과전화번호

 

학번테이블에서 

키를 구성하지 않는 속성(학과명, 학과전화번호, 학점 중에서 학과명과 학과 전화번호는 (학번, 과목번호)에 함수적 종속이면서  완전함수 종속은 아니다

 

(학번, 과목번호)의 부분집합인 (학번)에 다시 함수종속 되고 있기 때문에   (종속 )  = pk에 속한다는 뜻 

-> 따라서 수정이상, 삭제이상, 삽입이상이 발생함

 

 

해결방법

부분 함수 종속성을 제거하기 위해서 두개의 엔티티로 분리 (제 2 정규형)

가지고 있는 컬럼을 사용해서 새로운 테이블로 구분하여 작성한다

 


제 3 정규형

(Third Normal form)            -   키가 아닌 모든 Attribute가 기본키에 직접 종속 (부분적 함수 종속)

                                            - 이행적으로 종속하지 않는 것을 제거함 

                                            -키(pk, 식별자)가 아닌 일반속성(Attribute)에 함수 종속성을 가질때 

                                              이를 이행적이라고 하며  이를 제거하는 것을 말함

                                             -  쉽게 말해서 기존 테이블에서 pk로 증명할수없는 애들 빼서 따로 나가라는거임 

                                                  테이블 내의 특정 열이 기본 키가 아닌 열에 함수적으로 종속되는 경우 부분적 함수적 종속이라고 할 수 있습니다.

 

 

학번 = 학생꺼

학과명, 학과 전화번호 = 학과꺼    -> 그래서 얘네를 따로 빼자는거임 

                                                          근데 컴퓨처, 1114가 겹치잖아   그래서 새로운 PK를 만들어

 

 

 

BCNF

(Boyce-Codd Normal form)            -   모든 결정자가 후보키 

 

-보이스와 코드가 개발한 정규형

- 제 3정규화를 확장한 것으로 데이터의 중복성이 배제되어 갱신시 부정합 또는 불일치로 인해 문제가 발생

- 모든 결정자(식별자)가 후보키(PK가 될 수 있는 애들)

- 모든 결정자가 후보키가 되도록 만든다

다 대 다 관계 

 

->학생은 여러 과목을 수강할 수 있으며, 강사는 하나의 과목만을 가르침 

 

위의 테이블은  제 3 정규화는 만족하고 있음

1. 강사는 학번이나 과목에 함수적으로 종속하지 않는다

2. 강사는 기본키인(학번, 과목)에 완전하게 함수적으로 종속한다.

 

 

키가 아니면서 결정자 역할을 하는 Attribute(위 테이블에선 강사)와 그 결정자에 함수적으로 종속하는 Attribute를 하나로 테이블 구성  ex ) 예시

 

 


JOIN

 

테이블을 정규화 이전의 테이블 구성을 조합하여 볼 수 있도록 해줌 (가상, Temp)

view 테이블임  (변수라고 생각하기)

 

-EQUI (등가조인) :  1:1로 연결되어 지는 것   (타입 조심할 것..문자형 숫자는 숫자라 조인 가능!)

                                 반드시 PK/FK 관계에서만 발생되는 것 아님

                                 컬럼명이 서로 달라도 JOIN은 성립함 (ex: team_id와 hometeam_id 관계)

                             

-Non-EQUI(비등가조인) : 범위를 가지고 연관 관계를 성립하는 것 

 

 

 


 

여러개의 값을 테이블에 넣고 싶을 때 - > 다중 insert

                                         마지막은 UNION ALL 필요없음

 

 

 

 

 

테이블 복제  CTAS

 

 

 

 

 

 

 

구디아카데미 후기/ 국비지원IT개발자 취업 / 전민균 강사님