정처기 실기 : 2024년 1회차 기출, 6️⃣ ~ 🔟

m_ngyeong·2024년 7월 19일
0
post-thumbnail

정보처리기사 실기


📝 2024년 1회차 기출, 6️⃣ ~ 🔟

6. Normalization(정규화)

🖍 제 3 정규형
풀이) 고객 아이디, 인터넷 강좌 기본키이자 유일한 결정자여야 함. 그러나 담당 강사 번호인터넷 강좌를 결정하는 결정자가 되어 모든 결정자가 후보키가 아닌게 되어버렸기 때문에 BCNF를 만족하지 못함.
✚ 원자성, 부분함수종속, 이행적함수종속이 완료된 상태라서 3정규형을 만족.

결정자란?

어떤 애트리뷰트의 값이 다른 애트리뷰트의 값을 고유하게 결정할 수 있으며, 주어진 릴레이션에서 다른 애트리뷰트를 고유하게 결정하는 하나 이상의 애트리뷰트를 의미한다.

  • 키 애트리뷰트이거나 아닐수도 있고, 복합 애트리뷰트일 수 있음
  • 결정자 표기법 : A가 B를 결정하는 결정자라고 하면 A->B로 표현함

Normalization(정규화)

📌 두부이걸다줘? ≒ 도부이결다조

  • 제 1정규형(1NF; First Normal Form)
  • 제 2정규형(2NF; Second Normal Form)
    • 부분 함수적 종속(Partial Functional Dependency) :
  • 제 3정규형(3NF; Third Normal Form)
    • 이행적 함수적 종속(Transitive Functional Dependency) : X → Y이고 Y → Z일 때 X → Z를 만족하는 관계를 의미
  • BCNF(Boyce-Codd Normal Form)
  • 제 4정규형(4NF; Fourth Normal Form)
  • 제 5정규형(5NF; Fifth Normal Form) : 조인 종속성을 이용/제거
  • https://velog.io/@m_ngyeong/Implementation-of-Data-Input-and-Output-4

7. Routing Protocol(경로 제어 프로토콜)

  • 내부 라우팅 알고리즘 프로토콜이다.
  • 링크 상태를 벡터로 나타낸다.
  • Dijkstra(다익스트라) 알고리즘을 사용한다.
  • 대규모 네트워크에 사용된다.

🖍 OSPF

Routing Protocol(경로 제어 프로토콜):

경로 제어는 송 ∙ 수신 측 간의 전공 경로 중에서 최적 패킷 교환 경오를 결정하는 기능이며, 경로 제어표를 참조해서 이우러지며, 라우터에 의해 수행 된다.

  • 대표적인 경로 제어 프로토콜 : IGP(RIP, OSPF), EGP(BGP)
    • IGP(Interior Gateway Protocol, 내부 게이트웨이 프로토콜) : 하나의 자율 시스템(AS) 라우팅에 사용되는 프로토콜
      • RIP(Routing Information Protocol) : 현재 가장 널리 사용되는 라우팅 프로토콜로 거리 백터 라우팅 프로토콜이라고도 불리며, 최단 경로 탐색에 Bellman-Ford 알고리즘을 사용함
      • OSPF(Open Shortest Path First protocol) : RIP의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜로 대규모 네트워크에서 많이 사용되며 최단 경로 탐색에 Dijkstra(다익스트라) 알고리즘을 사용함
    • EGP(Exterior Gateway Protocol) : 자율 시스템(AS) 간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 프로토콜
      • BGP(Border Gateway Protocol) : 자율 시스템(AS) 간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해 만들어진 프로토콜로 초기에 BGP 라우터들이 연결되 때에는 전체 경로 제어표(라우팅 테이블)를 교환하고, 이후에는 변화된 정보만을 교환
  • https://velog.io/@m_ngyeong/OSIOpen-System-Interconnection-7계층-2

8.SQL - DML(JOIN)

[보기] 세미 조인, 세타 조인(THETA JOIN), 외부 조인(OUTER JOIN), 동등 조인(EQUI JOIN), 자연 조인(NATURAL JOIN)
관계대수의 조인과 관련된 내용이다.
① 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.
② 조건이 정확하게 = 등호로 일치하는 결과를 반환한다.
③ ( ② )에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성(두 번째 속성)을 제거한 결과를 반환한다.

🖍 ①세타 조인 ②동등 조인 ③ 자연 조인

JOIN

  • THETA JOIN(세타 조인) : 두 릴레이션의 속성 값을 비교하여 특정 조건을 만족하는 투플만 반환하는 방식. 이는 = 외에도 !=, <, >, , 와 같은 다양한 비교 연산자를 사용할 수 있는 조인의 일종이며, 보통 ON 절을 사용해 조인 조건을 명시.
  • EQUI JOIN(동등 조인) : JOIN 대상 테이블에서 공통 속성을 기준으로 =(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과 생성하는 방법.
    • NATURAL JOIN(자연 조인) : EQUI JOIN에서 JOIN 조건이 =일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법.
  • INNTER JOIN(내부 조인) : 내부 조인은 공통 존재 컬럼의 값이 같은 경우를 추출하는 기법.
  • OUTER JOIN(외부 조인) :
    • LEFT OUTER JOIN(왼쪽 외부 조인) : 왼쪽 테이블의 모든 데이터와 오른쪽 데이블의 동일한 데이터를 추출하는 기법.
    • RIGHT OUTER JOIN(오른쪽 외부 조인) : 오른쪽 테이블의 모든 데이터와 왼쪽 데이블의 동일한 데이터를 추출하는 기법.
    • FULL OUTER JOIN(완전 외부 조인) : 양쪽의 모든 데이터를 추출하는 기법.
  • SEMI JOIN(세미 조인) : 서브 쿼리를 사용하여 서브 쿼리의 결과에 존재하는 데이터만 메인 쿼리에서 추출하는 조인 방법으로 조인 대상 릴레이션 중 하나를 프로젝트(PROJECT) 연산을 수행한 후 조인을 함.
  • Cross Join(크로스 조인): 조건 없이 두 테이블을 모두 조합하는 방식으로, 카테시안 곱(Cartesian Product)을 생성. 특별한 조인 조건 없이 두 테이블의 모든 가능한 조합을 반환.
  • https://velog.io/@m_ngyeong/DMLData-Manipulation-Language

9. 페이지 부재(Page Fault)

🙋‍♀️ : 4개의 페이지를 수용할 수 있는 주기억장치가 있으며, 초기에는 모두 비었다고 가정한다. 다음의 순서로 페이지 참조가 발생할 때, LRU 페이지 교체 알고리즘 사용할 경우와 LFU 페이지 교체 알고리즘을 사용할 경우 페이지 결함의 발생 횟수를 구하시오.
페이지 참조 순서 : 1,2,3,1,2,4,1,2,5,7

🖍 LRU : 6, LFU : 6
참조 페이지가 페이지 테이블에 없을 경우 페이지 결함이 발생한다.

LRU(Least Recently Used) :

  • 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법.

    ❶ 초기에는 모든 페이지가 비어 있으므로 처음 1,2,3 그리고 4 페이지 적재 시 페이지 결함이 발생.
    ❷ 참조 페이지 1,2는 이미 적재되어 있으므로 그냥 참조.
    ❸ 현재 시점에서 가장 오랫동안 사용되지 않은 페이지 3을 제거한 후 5를 적재.
    ❹ 다음으로 가장 오랫동안 사용되지 않은 페이지 4을 제거한 후 7를 적재.
    ⇒ 이러한 과정으로 모든 페이지에 대한 요구를 처리하고 나면 총 페이지 결함 발생 횟수는 6회.

LFU(Least Frequently Used) :

  • 참조 횟수가 가장 적은 페이지를 교체하는 기법

    ❶ 초기에는 모든 페이지가 비어 있으므로 처음 1,2,3 그리고 4 페이지 적재 시 페이지 결함이 발생.
    ❷ 참조 페이지 1,2는 이미 적재되어 있으므로 그냥 참조.
    ❸ 현재 시점에서 가장 사용 횟수가 적은 페이지 4을 제거한 후 5를 적재.
    ❹ 다음으로 가장 사용 횟수가 적은 페이지 5을 제거한 후 7를 적재.
    ⇒ 이러한 과정으로 모든 페이지에 대한 요구를 처리하고 나면 총 페이지 결함 발생 횟수는 6회.

10. Java Lang. - overloading

자바 프로그램의 실행 순서는?

class Parent {
	int x, y;
	Parent(int x, int y) { //①
		this.x = x;
		this.y = y;
	}
	int getArea() { //②
		return x * y;
	}
}
class Child extends Parent {
	int x;
	Child(int x) { //③
		super(x+1, x); 
	}
	int getArea(int x) { //④
		return x;
	}
}
public class ProcessFlow {  
	public static void main(String[] args) { //⑤
		Parent parent = new Child(10); //⑥
		System.out.println(parent.getArea());//⑦
	}
}

// 정답 : 110
// (11*10)

🖍 ⑤ → ⑥ → ③ → ① → ⑦ → ②

Overloaing(오버로딩) : 이름은 같지만 인수를 받는 자료형의 개수를 달리하여 여러 기능을 정의하는 것

⑥구문은 Parent 클래스의 객체 변수 parent를 선언하고 Child() 클래스의 생성자를 호출함.
③구문이 호출되고, x의 값은 10이되고 super(11,10) 구문에 의해 부모 클래스의 생성자를 호출.
①구문이 호출되고, x의 값에 11, y의 값에 10이 저장됨.
⑦구문이 실행되는데, 부모 클래스의 getArea()와 자식 클래스의 getArea(int x)는 메소드의 이름이 같지만 '인수를 받는 자료형과 개수'가 다른 메소드이므로 ②구문 호출.
②구문 실행.

  • extends [class name] : 클래스 정의 시 상속받을 클래스를 추가하는 예약어
  • new : 객체 생성 예약어
  • super : 부모 클래스 생성자 호출


참고,
기출 문제 : https://newbt.kr/시험/정보처리기사%2520실기
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023
결정자 : https://ybdeveloper.tistory.com/86#toc-%EA%B2%B0%EC%A0%95%EC%9E%90%EB%9E%80?%C2%A0
정규화 : https://youtu.be/YB_UcgO111Y?si=mEd3b8kMtCMM-Tu1
JOIN : https://www.youtube.com/watch?v=61rPcPhh3Sk, https://www.inflearn.com/questions/1250048/%EC%84%B8%ED%83%80%EC%A1%B0%EC%9D%B8-%ED%81%AC%EB%A1%9C%EC%8A%A4%EC%A1%B0%EC%9D%B8,
https://velog.io/@leesinji8/JOIN,
https://etloveguitar.tistory.com/124

profile
ʚȉɞ

0개의 댓글