Programming

    1:M 재귀적 관계

    트리구조처럼 무한히 확장해나가는 모델을 데이터베이스로 어떻게 표현할까? 1:M 재귀적 관계 분류체계 또는 Directory 구조와 같이 1:M 관계가 끊임없이 나아가는 모델이 있다. 이럴 경우에 자식 테이블을 무한히 만들어주어야만 할까? 테이블 안에 PK와 FK를 같이 만들어 줌으로써 해결할 수 있다. 회사와 부서 관계를 예시로 들어보자. 회사에는 여러 부서가 있고, 부서 속에 또 여러 부서가 존재할 수 있다. (EX. 삼성전자 > 총무부 > 총무1팀 > 총무1과...) 이 경우 '상위부서ID'란 Column을 만든 뒤 PK인 부서 ID를 참조함으로써 무한히 확장해나가는 1:M 관계를 표현할 수 있다. 결국 하나의 테이블 안에 모든 부서 간의 1:M 관계를 표현할 수 있게 된다. 이렇게 설계된 테이블을 ..

    1:M 관계

    1:M 관계 1:M 관계는 한쪽이 관계를 맺은 쪽의 여러 객체를 갖는 것을 의미한다. 1:M 관계는 가장 흔하게 나타나는 매우 일반적인 형태이다. 대표적인 예로 부모와 자식 관계, 컴퓨터 Directory 구조가 있다. 테이블은 서로 선천적으로 관계를 갖고 있다.(RDBMS) 1:M 관계는 부모와 자식 관계와 같다. 부모는 자식이 없어도 되고, 자식이 1명 또는 여러명일 수도 있다. 그러나 자식은 부모가 단 한명이어야 하며, 부모없는 자식은 존재하지 않는다. 데이터베이스에서 1:M 관계를 설정하면 부모없는 자식이 생기는 것을 막아준다. 학년 테이블과 반 테이블을 예로 들어볼 수 있다. 여기서 학년 테이블이 부모, 반 테이블이 자식이 된다. 학년테이블의 PK인 학년번호가 반 테이블의 FK인 학년번호와 연결..

    주 식별자 (Primary Key) 설계

    Primary Key 설계 고려사항 목록 1. 유일하고 모든 레코드에 NOT NULL 일 수 있는 컬럼을 찾는다. 2. 후보 식별자가 없는 경우 임의의 식별자를 만들어 부여한다. (인조 식별자) 3. PK의 데이터 타입을 결정한다. 1) 레코드의 발생 가능한 최대 수를 예측한다. 예) 1년에 몇개 정도 발생하는가? 한 달에 몇개 정도 발생하는가? 처리해야 하는 대상이 대략 몇개정도 되는가? 4. 발생 가능한 최대 레코드 수를 커버할 수 있는 데이터 타입을 선정한다. 1) 만일 대상 레코드가 수십 만개 정도라면 999,999로 커버할 수 있다. 따라서 32bit int(2,147,483,647)를 사용할 수 있다. varchar(6)을 사용해서 '999999' 까지 처리할 수 있다. 5. PK의 데이터 타..

    [SWEA] 1249. 보급로 자바(Java) 풀이

    1. 문제 접근방법 dfs, bfs로 풀 수 있는 문제입니다. 그러나 완전탐색으로 모든 지점을 방문하면 시간초과가 발생합니다. 그렇기에 조건에 부합하지 않는 경우의 수를 가지치기 해야만 합니다. 2. 문제풀이 1. 각 좌표의 깊이를 2차원 배열인 supply에 담는다. 2. 2차원 배열인 map을 만든 뒤, -1로 초기화한다. 3. supply 배열을 (0, 0) 에서 시작하여 bfs를 한다. 대신 조건에 맞는 경우에만 큐에 담는다. 3-1) 다음 가려고 하는 지점이 한번도 방문하지 않았을 경우 큐에 담는다. (if (map[nx][ny] == -1)) 3-2) 다음 가려고 하는 지점이 이미 방문했으나 그동안 지나온 깊이의 합보다 클 경우 방문한다. else if (map[nx][ny] > cur.sum..

    관계형 데이터베이스(RDBMS), 주식별자와 후보식별자

    1. 관계형 데이터베이스 데이터베이스란 구조화된 데이터들의 집합이다. 1) 관계형 데이터베이스 특징 고유 식별자 테이블은 각 행(레코드)를 식별하기 위해 고유 식별자를 정의할 수 있음 고유 식별자는 Not NULL, UNIQUE 속성을 갖음 고유 식별자는 하나 또는 여러 개의 컬럼들로 정의할 수 있음 참조 무결성 테이블에서 외래키를 선언 외래키는 다른 테이블에 정의된 고유 식별자를 참조 외래키의 값은 다른 테이블에 정의된 고유 식별자의 값의 범위를 넘을 수 없도록 제한됨 2. 주식별자와 후보식별자 1) 키의 정의 하나의 테이블에서 각 레코드를 고유하게 식별할 수 있는 컬럼 또는 컬럼의 조합 키의 조건은 NOT NULL, UNIQUE(유일성) 테이블 디자인 시 키를 정하고 테이블을 데이터베이스에 만들 때 ..

    운영체제 서비스

    1. 운영체제 서비스 운영체제가 하는 일은 정부와 같다. 1) 프로세스 관리 (Process management) 프로세스(process)란 메모리에서 실행중인 프로그램을 말한다. (program in execution) 주요기능 : 프로세스의 생성, 소멸(creation, deletion) 프로세스 활동 일시 중지, 활동 재개(suspend, resume) 프로세스 간 통신(interprocess communication : IPC) 프로세스 간 동기화(synchronization) 교착상태 처리(deadlock handling) 2) 주기억장치 관리 (Main memory management) 주요기능 : 프로세스에게 메모리 공간 할당(allocation) 메모리의 어느 부분이 어느 프로세스에게 할당..

    이중모드, 하드웨어 보호

    1. 이중모드 한 컴퓨터를 여러 사람이 동시에 사용하는 환경 또는, 한 사람이 여러 개의 프로그램을 동시에 사용하는 환경 위와 같은 환경에서 한 사람/프로그램의 고의/실수가 전체에 영향을 끼칠 수 있다. EX) STOP, HALT, RESET 등 그래서 사용자 프로그램의 STOP 등 치명적인 명령의 사용을 불가능하게 만든다. 이러한 맥락에서 나온 것이 바로 이중모드이다. 이중모드(dual mode) 사용자(user) 모드 vs 관리자(supervisor) 모드 관리자모드 = 시스템모드 = 모니터모드 = 특권모드 Supervisor, system, monitor, privileged mode 특권 명령(privileged instructions) STOP, HALT, RESET, SET_TIMER, SET..

    고등운영체제, 인터럽트 기반 운영체제

    1. 고등 운영체제 1) 다중 프로세서 시스템(Multiprocessor system) 병렬 시스템(parallel system) 강결합 시스템(tightly-coupled system) : 다수의 CPU가 하나의 메인메모리로 결합되어 있다. 3가지 장점 : performance(효율성), cost(비용), reliability(안정성) : 하나의 CPU가 고장나도 다른 CPU가 대신한다. 다중 프로세서 운영체제(Multiprocessor OS) 2) 분산 시스템(Distributed system) 다중 컴퓨터 시스템(multi-computer system) 소결합 시스템(loosely-coupled system) : 각각 메모리를 갖고 있어 다중 프로세서 시스템보다 결합이 약하다. 3가지 장점 : pe..