데이터베이스 정규화 부분은 예제 없이 글로만은 이해하기가 힘들어서 구글링을 많이 했다. 출처는 본문 중간중간에 적혀있다. 데이터베이스 정규화(Normalization)란? 정규화란 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정이다. 바람직한 스키마로 만들어간다는 것은 데이터베이스 설계를 논리적으로 재구성한다는 것으로 이해하면 된다. 이렇게 정규화를 수행하면 불필요한 데이터를 없애거나 삽입/삭제 등의 쿼리 수행 시 발생할 수 있는 각종 이상현상을 방지할 수 있다. - 하나의 종속성이 하나의 릴레이션에 표현될 수 있도록 분해해가는 과정 - 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형,제5정규형이 있음 - 차수가 높아질수록 만족시켜야 할 제약조건이..
키(Key)의 개념 및 종류 - 데이터베이스에서 튜플들을 서로 구분할 수있는 기준이 되는 애트리뷰트를 말함 후보키(Candidate Key) - 릴레이션을 구성하는 속성들 중 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 - 즉, 기본키로 사용할 수 있는 속성들을 말함 - 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 함 - 모든 튜플들에 대해 유일성, 최소성을 만족해야 함 릴레이션에서 학번, 주민번호 기본키(Primary Key) - 후보키 중에서 선택한 주키로 NULL 값이 될 수 없음 - 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성 - 기본키로 저장된 속성에는 동일한 값이 중복되어 저장될 수 없음 릴레이션에서 학번이나 주민번호, 릴레이션에서는 '학번+과목명' 조합 대체..
관계형 데이터베이스 개요 - 관계형 데이터베이스를 구성하는 개체나 관계를 모두 릴레이션이라는 표로 표현함 - 장점 : 간결, 보기 편리, 다른 데이터베이스로의 변환 용이 - 단점 : 성능이 떨어짐 관계형 데이터베이스의 Relation 구조 - 릴레이션 : 데이터들을 표 형태로 표현한 것 - 릴레이션 스키마 : 구조를 나타내는 릴레이션 - 릴레이션 인스턴스 : 실제 값들 튜플 (Tuple) - 릴레이션을 구성하는 각각의 행 - 속성의 모임으로 구성됨 - 파일 구조에서 레코드와 같은 의미 - 튜플의 수 = 카디널리티(Cardinality) = 기수 = 대응수 속성 (Attribute) - 릴레이션을 구성하는 각각의 열 - 가장 작은 논리적 단위 - 파일 구조에서 데이터 필드에 해당 - 개체의 특성을 기술 도..
관계형 데이터베이스의 관계대수 - 관계형 데이터베이스에서 원하는 정보를 얻기 위해 어떻게 유도하는가를 기술하는 절차적 언어 - 관계대수에는 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 존재 순수 관계 연산자 : Select, Project, Join, Division 일반 집합 연산자 : UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱) 순수 관계 연산자 Select - 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산 - 행에 해당하는 튜플을 구하는 것으로 수평 연산이라고도 함 표기 형식 : σ(R) Project - 속성 리스트에 제시된 속성 값만을 추출해 새로운 릴레이션을 ..
시나공 기준 개정된 2020 정보처리기사에서는 E-R 다이어그램 표기법에서 정보 공학 표기법이나 바커 표기법 등의 표기법이 추가되었다. E-R (Entity-Relationship, 개체-관계) 모델의 개요 - 개념적 데이터 모델의 대표적인 모델 - 피터 첸에 의해 제안됨 - 개체와 개체 간의 관계를 개념적인 논리 데이터로 표현하기 위한 방법 - 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)로 묘사함 - E-R 다이어그램으로 표현하며 1:1, 1:N, N:M 등 관계 유형을 제한없이 나타낼 수 있음 E-R 다이어그램 - E-R 모델의 아이디어를 이해하기 쉽게 기호를 사용해 시각적으로 표현한 그림 - E-R 다이어그램 표기법에는 피터 첸 표기법, 정보 공학 표기법,..
시나공 기준, 개정된 2020 정보처리기사에서는 데이터베이스 파트에 스키마에 대한 내용 (스키마 3계층 등)이 제외된 것 같다. 혹시 몰라 추가해놓는다. 데이터베이스 설계 순서 - 요구조건 분석 : 요구 조건 명세서 작성 - 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델링 - 논리적 설계 : 논리 스키마, 트랜잭션 인터페이스 설꼐 - 물리적 설계 : 구조의 데이터로 변환 - 구현 : DDL로 데이터베이스 생성, 트랜잭션 작성 1) 요구조건 분석 - 데이터베이스를 사용할 사람들의 필요한 용도를 파악 - 데이터의 종류, 용도, 형태 등을 수집 - 수집된 정보를 바탕으로 요구 조건 명세를 작성 2) 개념적 설계 - 개념 스키마 모델링과 트랜잭션 모델링을 수행 - 개념 스키마를 설계 - 요구분석 ..
시나공 기준 개정된 2020 정보처리기사에서는 이전과 달리 모듈 부분에 결합도와 응집도는 똑같지만 팬인/팬아웃이 추가되었다. 모듈 (Module) 개요 - 모듈은 모듈화를 통해 분리된 시스템의 각 기능들을 의미 - 모듈은 단독으로 컴파일이 가능, 재사용 가능 - 모듈의 독립성은 결합도와 응집도에 의해 측정됨 - 독립성을 높이려면 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야 함 * 모듈화 : 소프트웨어 성능 향상이나 수정 및 재사용 등이 용이하도록 시스템의 기능들을 모듈 단위로 분해하는 것 결합도 (Coupling) - 약할수록 좋음 - 모듈간에 상호 의존하는 정도, 두 모듈 사이의 연관 관계를 의미 - 결합도가 강하면 시스템 구현 및 유지보수가 어려움 - 결합도의 종류 : 자료 < 스..
NCS 기반으로 개편된 2020 정보처리기사의 경우 자료구조 파트가 소프트웨어 개발 과목으로 넘어왔다. 확실히 삭제된 부분도 많고, 새로 추가된 부분도 많고 전체적인 구조도 많이 바뀐 것 같다. 자료구조의 분류 - 선형 구조: 배열, 선형리스트(연속리스트, 연결리스트) 스택, 큐, 데크 - 비선형 구조: 트리, 그래프 배열 (Array) - 동일한 자료형의 데이터들이 같은 크기로 나열됨 - 순서를 갖고 있는 집합 - 기억장소의 추가가 어려움 - 데이터 삭제 시 메모리 낭비 발생 연결리스트 (Linear List) - 노드의 포인터를 이용해 서로 연결시킨 자료 구조 - 노드의 삽입, 삭제 작업이 용이함 - 링크가 필요하기 때문에 순차 리스트에 비해 기억 공간의 이용 효율이 좋치 않음 - 포인터를 찾아야해서..
왜인지는 모르겠으나 시나공을 기준으로 2020 정보처리기사에는 객체지향의 주요 개념에 추상화와 정보 은닉이 사라지고 캡슐화/상속성/다형성만 남았다. 하지만, 추상화와 정보은닉도 추가해두려 한다. 객체지향(Object-Oriented) 이란 - 현실 세계를 그대로 모형화 - 소프트웨어 개발 시 객체들을 조립해 작성 가능 - 소프트웨어 재사용 및 확장을 용이, 유지보수가 쉬움 - 주요 요소와 개념에는 객체, 클래스, 캡슐화, 상속, 다형성이 존재함 객체지향의 주요 요소 (객체, 클래스) 객체 객체란, 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈이다. - 함수는 객체가 수행하는 기능, 객체가 갖는 데이터를 처리하는 알고리즘 - 함수는 객체가 메시지를 받아 실행해야 할 객체의 구체적 연산을 정의 - ..
프로그래머스 완전탐색 - 소수찾기, 문제 확인 숫자 조합에 관한 모든 케이스를 구한 후, 그 중 소수가 몇개인지 찾는 문제이다. numbers는 길이 1 이상 7 이하인 문자열 numbers는 0~9까지 숫자만으로 이루어져 있음 013은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지, 개수를 리턴 프로그래머스 완전탐색 - 소수찾기, 문제 풀이 (파이썬) 모든 수의 조합을 찾는 것은 itertools의 permutations를 임포트하여 구하였다. "17"의 경우 길이가 1인 경우의 조합과 2인 경우의 조합을 전부 구해야 하기 때문에 1부터 numbers 길이까지 반복문을 돌면서 모든 조합을 구해 num_case에 추가해주었다. 그리고 nu..
프로그래머스 완전탐색 - 모의고사, 문제 확인 정렬 문제를 끝내고 이제 완전탐색 문제이다. 아래와 같이 답을 찍는 1,2,3번의 수포자가 있을 때 누가 제일 답을 많이 맞췄는지 리스트로 리턴하면 된다. 만약 답을 맞춘 수가 5,5,5 라면 [1,2,3]을 리턴하면 된다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 프로그래머스 완전탐색 - 모의고사, 문제 풀이 (파이썬) 문제 수가 최대 10000개라고 해..
프로그래머스 정렬 - H-Index, 문제 확인 처음 읽었을 때는 쉽다고 생각했는데 풀면 풀수록 문제가 난해했다. 처음부터 확실히 이해하고 넘어가면 금방 풀수 있는데 제대로 이해한 줄 알았던게 완전 아니었어서 삽질을 좀 했다. "어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면, h의 최댓값이 H-Index가 됨" 즉, [3,0,6,1,5] 에서 3회 이상 인용된 논문은 3,5,6 으로 3편 이상이고 나머지 논문 0,1이 3회 이하 인용되었기 때문에 리턴값은 3이 된다. 처음엔 3회 이상 인용된 논문이 3편이고 3회 이하 인용된 논문이 3편이기 때문에 3인 것으로 착각했다. 따라서 [22,42]의 경우 2번 이상 인용된 논문은 22,42로 ..