<1. 리눅스 일반>

 /etc/password

  • 사용자의 목록 저장
  • 암호화하여 /etc/shadow에 추가 관리함
  • [아이디] : [password] : [UID] : [GID] : user의 추가 정보 : user의 홈 디렉터리 : 로그인 시 사용하는 셸 
    • ex ) luster47 : 1q2w3e4r : 600 : 500 : engineer : /home/luster : /bin/bash

 

ls 

  • 디렉토리 안의 내용 출력
    • -a : 숨겨진 파일, 디렉터리/ '.' : 숨겨진 파일
    • -F : 파일 형태에 따라 관련된 정보 출력
      • * : 실행 가능한 파일 (파일 이름 뒤에)
      • ./ : 디렉터리 (이름 뒤에)
      • @ : Symbolic link 뒤에
    • -l : 파일이나 디렉터리 정보를 한 줄씩 하나씩 길게 보여줌
    • -d : 디렉터리에 대한 정보 출력
    • -t : 시간 순으로 출력
    • -u : 사용된 시간 순으로 출력
    • -i : i-node 번호 출력(파일 or 디렉터리 명 앞에)
    • -r : 알파벳 역순으로 출력
    • -R : 관련 내용 전부 출력
    • -S : 파일 크기가 큰 것부터 출력
    • --color : 파일 종류에 따라 색 보여줌
    • -1 : 한 줄의 한 파일씩 출력
    • -Z : 보안 문맥 출력
  • 출력 결과 : [허가권] [하드 링크 수] [파일 소유자(파일 생성자)] [소유 그룹] [파일 크기] [파일 생성한 시간] [파일명]

<2. 리눅스 운영 및 관리>

1.1_권한 및 그룹 설정

 

 umask 

  • 파일이나 디렉터리 생성 → 허가권 지정
  • 파일 생성 시 : 666
  • 디렉터리 : 777
  • -S : umask 값을 문자로 표기
ex) umask -S
     u=rwx, g=rwx, o=rw
         u : 파일 소유자 접근 권한
         g : 그룹에 속한 사람들에 대한 접근 권한
         o : 다른 사용자들에 대한 접근 권한

cmod

  • 파일이나 디렉터리에 접근할 수 있는 허가권 설정
    • 권한 표시 - r, w, x
    • 사용자 지정 - u, g, o. a
    • 설정 - +, -, =(특정 권한만 지정)

 

1.2_파일 시스템 관리

리눅스의 파일 시스템

  • 파일 시스템 : os가 파티션 or 디스크에 데이터 저장, 읽기, 쓰기, 찾기 위해 구성하는 일련의 체계
  • ext3 (저널링 파일 시스템 기능 있음): 리눅스 커널 2.4부터 사용
  • 저널링 파일 시스템 : 파일 시스템에 변경사항을 반영하기 전에
    • 저널(로그)에 변경사항을 저장하여 추적이 가능하게 만든 파일 시스템
    • 시스템에 충돌 현상 or 전원 문제 발생 -> 데이터 복구 확률 높여줌
    • minix
    • ext
    • ext2
    • ext3 : 저널링 파일 시스템
    • ext4 : 저널링
    • Reiserfs : 저널링
    • XFS : 저널링
    • JFS : 저널링

 /etc/fstab 

  • 파일 시스템에 대한 다양한 정보 담고 있는 파일로 부팅 시에 마운트 할 파티션 정보가 기록되어 있는 파일
  • mount, umount, fsck,, 수행될 때 이 파일이 정보를 참고함.
  • 필드 구성
    • 첫 번째 : 장치명 기록 -> 볼륨 라벨, UUID
    • 두 번째 : 마운트 될 디렉터리 ex) /, /home
    • 세 번째 : 파일 시스템의 유형 ex) ext4, swap, nfs
    • 네 번째 : 마운트 될 때의 옵션
    • 다섯 번째 :  dump 명령을 통한 백업 시 레벨 덤프 주기 결정
      • 0 : dump사용 안 함
      • 1 : 매일 수행
      • 2 : 이틀에 한번 수행
    • 여섯 번째 : fsck 명령의 순서 정함 (부팅 시 파일 시스템 점검)
      • 0 : 부팅 시에 해당 파일 시스템 검사 X

특수 권한 //

  • Set-UID : 해당 파일을 실행하는 동안에는 실행시킨 사용자의 권한이 아닌 해당 파일의 소유자 권한으로 인식함
    • 소유자 권한 부분의 x자리에 s로 표시
    • 실행 권한이 없는 파일에 부여 -> S로 표시
  • Set-GID : 주로 디렉터리에 설정,
    • 이 권한이 설정된 디렉터리에 user가 파일들을 생성 -> 사용자가 속한 그룹에 상관 X, 디렉터리 소유 그룹 권한으로 만들어짐
    • 그룹 소유권 부분 x자리에 s로
    • 실행 권한이 없는 경우 ->  S로 표시
  • Sticky - Bit : 특수 권한 공유 디렉터리
    • /tmp디렉터리에 기본적으로 설정
    • 삭제하는 경우에 본인이 생성한 파일 이외에는 삭제 불가능
    • Group과 other 계층 사용자에게 사용할 수 있지만, 같이 사용 불가
    • other계층에 설정함
    • x자리에 t로 표기, 
    • other계층에 실행 권한이 없는 경우 -> 대문자 T로 

 

fdisk

  • 디스크 파티션을 확인하고 추가/삭제하는 명령
  • 설정 후에는 재부팅해야 함
  • 옵션
    • -I : 현재 디스크 파티션 테이블 출력
    • -s partition : 특정 파티션의 크기 출력, 단위는 block
  • 명령어
    • p : 현재 디스크 정보 출력
    • d : 파티션 삭제
    • n : 파티션 새로 생성
    • t : 파티션 속성 변경
    • w : 변경된 파티션 정보 저장하고 종료함
    • q : 파티션 정보 저장 X 하고 저장
  • ex) fdisk /dev/hi
    • p

 

mkfs(make filesystem)

  • 새로운 파일 시스템 만듦
  • root만 사용 가능
  • 파일 시스템 유형 설정 안 하면 -> ext2로 
  • mkfs [-t fs_type] [option] 장치명
  • 옵션 
    • -t fs_type : 파일 시스템 유형
    • -c : 배드 블록을 체크한 후 파일 시스템 구축
  • ex ) mkfs -t ext3 /dev/asdf
    • /dev/asdf을 리눅스 파일 시스템인 ext3로 만듦

 

 

mount

  • 보조기억장치나 파일 시스템이 다른 디스크를 /의 하위 디렉터리로 연결하여 사용 가능하게 해 줌
  • 옵션
    • -a : /etc/fstab에 명시된 파일을 마운트 할 때 
    • -t : fs_type : 파일 시스템의 유형 지정
      • 지정하지 않으면 : /etc/fstab 참조함
    • -o : 추가적인 설정 적용할 때
  • 유형
    • msdos : FAT - 16 마운트 할 때
    • vfat : FAT - 32
    • ntfs : NT, 2000, XP 이후 버전에서 사용하는 파일 시스템 마운트 할 때
    • ext2, ext3, ext4 
    • xfs
    • iso9660 : CD-ROM, DVD 마운트 할 때
    • smbfs : 네트워크 파일 시스템(삼바 파일 시스템)
    • cifs : 삼바 시스템 확장된 거
    • nfs : 네트워크 파일 시스템 (NFS) , 공유된 영역 마운트 할 때
    • udf : DVD 파일 시스템
  • -o의 항목
    • ro : 읽기 전용
    • rw : 읽/쓰 (기본값)
    • remount : 다시 마운트
    • loop : loop 디바이스로 마운트 할 때, iso(CD-ROM 이미지 파일)를 마운트 해서 사용할 때
    • noatime : 파일이 변경되기 전까지 Access Time(파일 내용 읽을 때 변경됨) 변경 X
    • username = 사용자명 : 사용자 계정 필요할 때
    • password
    • acl : ext3에서 지원하는 접근제어 리스트 사용 가능하도록
  • ex) mount -t ext4 -o ro /dev/sdf /hn
    • ext4인 /dev/sdf를 /hn 디렉터리에 읽기 전용으로 마운트

↓설명 너무 잘 되어 있다. 매일 읽자

jhnyang.tistory.com/12

 

마운트(mount) 뜻, 관련 명령어 & 문제 (fdisk, df, mkfs,디스크마운트)

리눅스 완전 정복 : 리눅스 목차 아마 마운트라는게 윈도우 운영체제에서는 우리가 실감할 일이 없기 때문에 리눅스를 처음 접하시는 분들은 헷갈릴 수 있는 개념이예요. 오늘은 마운트에 대해

jhnyang.tistory.com

 

df (disk free)

  • 현재 마운트 된 디스크의 크기, 사용량, 남아있는 용량,,, 대한 정보 출력
  • 옵션
    • -h : 용량 단위 표시
    • -k : 킬로바이트 단위로 보여줌 (기본)
    • -m : 메가바이트 단위로 보여줌
    • -T : 파일 시스템 유형 보여줌
    • -i : 아이 노드의 사용량 보여줌

 

du (disk usage)

  • 파일 or 디렉터리들이 디스크에서 차지하고 있는 크기 출력
  • 옵션
    • -h : 용량의 단위 표시
    • -s : 파일의 전체 크기 합한 값만 보여줌

nice 

  • 우선순위 변경
  • 프로세스 명으로 우선순위 조정
  • 명령 실행 -> 새로운 프로세스 추가 발생
  • NI 설정할 때 (증감)
  • root만 가능
  • nice [옵션] 프로세스 명
  • 옵션 
    • -n 값, -값/ --adjustment=값
    • 기본값은 10

 

renice

  • 실행 중인 프로세스 우선순위 변경할 때
  • 기존 프로세스 교체하여 조정
  • 설정된 NI 값 바로 설정 됨
  • renice [옵션]  NI  PID
  • 옵션
    • -p : PID 지정
    • -u : 사용자 이름 지정
    • -g : 프로세스 그룹 ID지정

 

 

2. shell
    shell : 커널 - 사용자 간의 다리 역할

    사용자로부터 명령어 받 -> 해석 -> 프로그램 실행

 

셀 확인

  • echo $SHELL
  • 변경 가능한 쉘 확인
    • chsh -l
    • cat /etc/shells
  • 쉘 변경 
    • chsh [쉘 이름]
  • 쉘 관련 파일 및 디렉터리
    • /etc/profile : 시스템 전체의 환경변수, 시작 관련 프로그램 설정
    • /etc/bashrc : 시스템 전체에 적용되는 alias와 함수 설정
    • ~/. bash_profile : 개인 사용자의 환경설정, 시작 프로그램 설정과 관련 있는 파일/ 로그인 시 읽어 들인다.
    • ~/. bashrc : 개인 사용자가 정의한 alias와 함수들이 있는 파일
    • ~/. bash_logout : 개인 사용자가 로그아웃할 때 수행하는 설정 지정
    • /etc/profile.d : 몇몇 응용프로그램이 시작할 때 필요한 스크립트가 위치하는 디렉터리

 

3. 프로세스 관리

  • 프로세스 : 실행 중인 프로그램
  • 시스템 호출 방법
    • fork : 새로운 프로세스를 위해 메모리 할당 받음 -> 복사본 형태의 프로세스 실행
      • 기존 프로세스는 그대로 실행
      • 원래 프로세스와 똑같은 코드 기반으로 실행됨
    • exec : 원래의 프로세스를 새로운 프로세스로 대체
      • 메모리 할당 X
  • 부팅 시작 -> init 프로세스 발생 -> init는 PID 1번 할당
  • 명령어 앞에 exec : 기본 프로세스 교체, 새로운 프로세스 할당됨
  • bg : 백그라운드 프로세스로 전환
  • fg : 포어그라운드 프로세스로 전환
  • 시그널 - 순서 기억
    • 특정 프로세스가 다른 프로세스에게 메시지 보낼 때
    • SIGHUP : 터미널에서 접속이 끊겼을 때 보냄, 재시작할 때 쓰임
    • SIGINT : 키보드로부터 오는 인터럽트 시그널 ( ctrl + c)
    • SIGQUIT : 키보드로 부터 오는 중지 시그널 (ctrl + \)
    • SIGKLL : 프로세스 강종
    • SIGTERM : 정상 종료
    • SIGCONT : 정지된 거 다시 실행시킬 때
    • SIGSTOP : 정지
    • SIGTSTP : 정지 후 다시 실행을 계속하기 위해 대기시킴 (ctrl + z)
  • 데몬
    • 백그라운드로 실행
    • 지속적인 서비스 요청 처리
    • 서버 역할
    • 방법
      • standalone : 부팅 시에 실행, 메모리 상주하면서 클라이언트의 요청 처리
      • inet : 클라이언트의 요청이 들어왔을 때 관련 프로세스 실행 -> 접속 종료 후에 자동으로 프로세스 종료

 

스케줄링과 cron

  • 스케줄링 : 특정한 시간에 특정한 작업 수행, at, cron사용
  • cron 
    • 시스템 운영에 필요한 작업 : /etc/crontab에 등록해서 주기적으로 실행
    • 사용자의 필요에 의한 작업 : crontab명령으로 등록 가능
    • 필드
      • minute
      • hour
      • day of month
      • month
      • day of week : 1월, 2화 ...
      • user-name
      • command

 

ps

  • 동작 중인 프로세스의 상태를 출력해 주는 명령
  • 옵션 계열
    • System V : (dash, -)사용
    • BSD : 대시 사용 X
    • GNU : 두 개의 대시 
  • ps [option]
  • 옵션
    • a : 터미널과 연관된 프로세스 출력
    • u : 프로세스의 소유자를 기준으로 출력
    • x : 터미널에 종속되지 않는 프로세스 출력
    • l : 프로세스의 정보를 길게 보여줌, 우선순위와 관련된 (RPI, NI)값 확인
    • 옵션 항목
      • USER : BSD 계열, 프로세스 소유자의 이름
      • UID : SYSTEM V 계열, 프로세스 소유자의 이름
      • PID : 프로세스의 식별 번호
      • %CPU : CPU 사용 비율 추정치 (BSD)
      • %MEM : 메모리 사용 비율의 추정치 (BSD)
      • VSZ : K단위 또는 페이지 단위의 가상메모리 사용량
      • RSS : 실제 메모리 사용량
      • TTY : 프로세스와 연결된 터미널
      • STAT : 현재 프로세스의 상태 코드
      • START : 프로세스 시작 시간 or 날짜
      • TIME : 총 CPU 사용 시간
      • COMMAND : 프로세스의 실행 명령행
      • STIME : 프로세스가 시작된 시간 혹은 날짜(Sys V)
      • C, CP : 짧은 기간 동안의 CPU사용률
      • F : 프로세스의 플래그 (1:exec 호출 없이 fork된 경우 / 4 : 슈퍼유저 권한 사용자)
      • PPID : 부모 프로세스의 PID
      • PRI : 실제 실행 우선순위
      • NI : nice 우선 순위 번호
    • STAT의 주요 값
      • R ( Runnig) : 실행 중 혹은 실행될 수 있는 상태
      • S ( Sleeping) : 인터럽트에 의한 sleep 상태, 특정 이벤트가 끝나기를 기다리는 상태
      • D ( Disk wait) : 디스크 I/O에 의해 대기하고 있는 상태
      • T ( Traced or stopped) : 정지된 상태
      • W : paging 상태
      • Z ( Zombie) : 작업이 종료되었거나 부모 프로세스로 부터 회수되지 않아 메모리를 차지하고 있는 상태
      • X : 죽어있는 상태, 상태값으로 볼 수 X
      • < : 우선순위가 인위적으로 높아진 상태
      • N (Nice) : 다른 사용자에 의해 인위적으로 우선순위가 낮아진 상태
      • L : 메모리 안에서 페이지가 잠금된 상태
      • s : session Leader
      • I : 멀티 쓰레드 상태
      • + : 포어그라운드 프로세스 그룹
<제품 소프트웨어 패키징>

1. 제품 소프트웨어 패키징

  • 개념
    • 전반적인 내용 포함하는 매뉴얼 작성함
    • 버전관리 수행하는 능력
    • 고객 편의성, 사용자 실행 환경을 우선으로
  • 특성
    • 제품 소프트 웨어 : 사용자 중심
    • 식별 소스 모듈화 -> 상용 제품으로 
    • 고객 편의성 중심
    • 버전 관리 and 릴리즈 노트 사용
    • 범용 환경에서 실행 가능하게
  • 소프트웨어의 모듈 및 패키징
    • 소프트 웨어의 모듈화
      • 모듈 : 소프트웨어 설계 -> 기능 단위로 분해 -> 추상화 -> 재사용 및 공유 가능한 단위
      • 모듈화 : 소프트웨어의 성능 향상 or 시스템의 테스트, 수정, 디버깅을 용이하도록하는 설계 기법
      • 패키징 -> 모듈들을 통해서
    • 제품 소프트웨어의 모듈 및 패키징
      • 모듈의 개념을 정확하게 적용
      • 기능 단위로 패키징 해야 배포 시 성능 향상 가능
      • 모든 것을 모듈 단위로 분류하여 작업 진행
  • 제품 소프트웨어 모듈 빌드 기법
    • 소프트웨어 빌드
      • 소스 코드 파일 → 제품 소프트웨어의 단위로 변환하는 과정이나 결과물
      • 컴파일 과정 핵심
        • 컴파일 : 소스 코드 파일 → 실행 코드
      • 빌드에 따른 결과물에 대한 상세 확인 필요
    • 제품 소프트웨어를 위한 빌드 기법
      • 컴파일을 위한 빌드 도구의 특징 : 사전 확인 필요
      • ex) Ant, Make, Maven, Gradle...

 

2. 사용자 중심의 패키징

  • 사용자 실행 환경의 개념
    • 사용자 실행 환경 우선 고려
    • 사용자 환경 : 운영체제 ~ 실행 환경, 시스템 사양, 고객 사용 방법 -> 상세 분류
  • 사용자 관점에서의 패키징 고려사항
    • 최소 환경 정의
    • 사용자가 이해가능한 인터페에스 제공함
    • 제품 소프트웨어 : HW와 함께 적용되게
    • 패키징 : MAnaged Service형태로 제공 (제3자가 운영 관리해줌)
    • 안정적 배포가 중요
  • 사용자 중심의 패키징 작업 수행 순서
    • 기능식별
      • 기능 수행을 위한 입출력 데이터 : int, char, float,,,
      • 전체적인 기능 정의 및 데이터 흐름 : 흐름 or 출력 절차
      • 함수 단위 및 출력에 대한 상세 정의 : 호출 함수 정의, 출력값 식별
    • 모듈화 - 순서에 맞게 진행함
      • 수행을 위한 기능 단위 및 서비스 분류 
      • 패키징 개념에서의 기능의 공유와 재활용 분류 
      • 모듈 간 결함도와 응집도 식별 
    • 빌드진행
      • 신규 개발 소스 및 컴파일 결과물 준비
      • 정상 기능 단위 및 서비스 분류
      • 빌드 도구 확인 및 정상 수행
      • 컴파일 이외의 도구의 다양한 기능 확인
    • 사용자 환경 분석
      • 최소 사용자 환경 사전 정의
      • 모듈 단위의 여러 가지 기능별 사용자 환경 테스트
    • 패키징 적용 시험
      • 사용자 환경에서의 패키징 적용 시험
      • 사용자 인터페이스 및 시스템상의 편의성 체크
    • 패키징 변경 개선
      • 변경 부분 정리
      • 개선 포인트 도출
      • 재배포 수행

3. 제품 소프트웨어의 패키징 도구

  • 개념
    • 배포를 위한 패키징 시 디지털 콘텐츠의 지적 재산권을 보호, 관리하는 기능
    • 안전한 유통과 배포 보장
    • 암호화 및 보안 기능 고려하여 패키징 함
  • 활용시 고려사항
    • 반드시 암호화 및 보안 기능 고려한다
    • 다양한 다른 기종 연동 고려
    • 사용자 편의성을 위한 복잡성 및 비효율성 문제 고려
    • 제품 SW의 종류에 적합한 암호화 알고리즘 사용
    • 지속적인 배포를 고려
  • 저작권 보호
    • 저작권의 이해
      • 창작물인 저작물에 대한 배타적 독점권 권리
      • 타인의 침해 받지 않을 고유한 권한
    • 저작권 보호 기술의 개념
      • 불법 복제 및 배포 막기 위한 기술적인 방법
      • 복제 허용 -> 사용화 과금 정책 수립 연계됨
      • 종량제 BM SW -> Clearing House 통해 이용시간에 비례한 요금 과금
        • 종량제 BM : 서비스 실제 사용량을 측정하여 요금 측정하는 비지니스 모델
      • 패키징 도구 : 암호화 및 보안 기능 고려함
    • 기술의 필요성
  • 저작권 보호 측면의 패키징 도구 활용
    • 저작권 관리의 흐름도
    • 저작권 관리의 구성요소
      • 콘텐츠 제공자
      • 콘테츠 분배자
      • 패키지
      • 보안 컨테이너
      • DRM 컨트롤러- 이용권한 통제
      • 클리어링 하우스
    • 암호화/보안 기능 중심의 패키징 도구 기술 및 활용
      • 패키징 도구 구성 요소
        • 암호화
        • 키 관리
        • 암호화 파일 생성
        • 식별 기술 - ISBN
        • 저작권 표현
        • 정책 관리
        • 크랙 방지
        • 인증

4. 패키징에서의 릴리즈 노트 

  • 릴리즈 노트의 개념
    •  
  • 릴리즈 노트의 중요성
  •  
  • 릴리즈 노트 작성시 고려사항
  •  

 

 

<개체와 속성>

개체

개체의 정의

  • 레코드에 대응하는 개념
  • 독립적으로 존재

 

개체 타입

  • 개체 스키마
  • 유일한 식별자에 의해 식별 가능해야함
  • 개체 타입에는 속성들이 포함되어 있어야 함
  • 다른 개체 타입과 최소 한 개 이상의 관계가 있어야 함

 

개체 타입을 명명하는 일반적인 기준

  • 실제 업무에서 사용하는 용어 사용
  • 약어 사용하지 않는다
  • 단수 명사 사용
  • 이름은 유일해야함
  • 의미에 따라 이름 부여

개체 어커런스 - 레크드의 값

개체 집합 - 개체 어커런스들의 집합

 

속성
  • 더 이상 분리되지 않은 최소의 데이터 단위
  • 필드
  • 각각의 개체 타입은 속성의 집합으로 설명 가능
  • 하나의 속성 : 하나의 개체 타입에만 존재

 

속성에 따른 분류

  • 기본 속성
    • 모든 속성
    • 일반적, 많이 사용됨
    • 다른 속성에 영향 받아 생성되는거 제외
  • 설계 속성
    • 설계를 하면서 도출되는 속성
    • 새로 만들거나 변형하여 정의하는 속성
  • 파생 속성(Derived Attribute) 
    • 다른 속성으로부터 변형되어 생성되는 속성
    • 계산 된 값

개체 구성 방식에 따른 분류

  • 기본키 속성
    • 개체를 식별할 수 있는 속성
  • 외래키 속성
    • 다른 개체와 관계에 포함된 속성
  • 일반 속성
    • 개체에 포함 됨 || 외래키에 포함 안됨

 

속성 후보 선정 원칙

  • 원시 속성으로 보이는 후보는 제거하지 않는다
    • 다시 재현할 수 없는거
    • 제거하면 정보가 소실됨
  • 소그룹별로 후보군을 만들고, 가장 근접한 개체에 할당
    • 모든 개체가 드러나지 않아서

 

식별자
  • 각각의 개체 구분할 수 있는 결정자
  • 모든 개체 타입에는 반드시 하나 이상의 식별자 있어야함. 

식별자 구분

  • 주 식별자, 보조식별자
    • 주 : 개체 타입의 대표성을 나타내는 유일한 식별자
      • 개체 타입이 하나에 한개
      • 물리테이블 -> 기본키
    • 보조 : 주 식별자 대신, 보조적으로 식별 가능
      • 하나 이상 가능
  • 내부 식별자, 외부식별자
    • 내부 : 스스로 생성되어 존재
    • 외부: 다른 개체 타입과의 관계에 의해 주 식별자의 속성 상속받음,
      • 주 식별자 영역에 포함될 수도, 일반 속성에 포함될 수도
      • 연결자 역활
  • 단일 식별자, 복합 식별자
    • 단일 속성으로 식별 되는 가 
    • 단일 : 주 식별자의 구성이 한 가지 속성
    • 복합 : 두 개의 이상의 속성으로 구성
  • 원조(Artificial) 식별자, 대리(Surrogate)식별자
    • 대체 여부에 따름
    • 대리 : 주 식별자가 복합일 때, 여러개 속성 묶어 하나의 속성으로

 

후보 식별자 조건

  • 각 인스턴스 유일하게 식별 O
  • 나머지 직접 속성할 수 있어야 함
  • 널 X
  • 개념적으로 유일해야함
  • 자주 변경하지 않는 것

 

인조 식별자 조건

  • 최대한 범용적인 값
  • 유리한 값 만들고 싶을 때
  • 편의성, 단순성, 의미의 체계화, 내부적 사용시 

 

 

개체 정의서
  • 개체, 속성, 식별자가 모두 확정 -> 명세서 작성

개체 정의서 포함 항목

  • 개체 타입명
  • 개체 타입 설명
  • 동의어/유의어
  • 개체 타입 구분
  • 관련 속성들
  • 식별자

 

<정보 모델링과 데이터 모델링>

모델링

개념

  • 정보 모델링 : 개체 -> 정보 구조로 표현하는 과정
  • 데이터 모델링 : 정보 구조 -> 논리적인 데이터 구조 (컴퓨터가 이해O)

 

모델링 단계

  • 현실 단계  : 개체 파악, 개체 실체 만들어냄
  • 개념 단계 : 공통점 찾아 추상화 (그림으로 표현?)
  • 논리 단계 : 데이터들의 관계로 구성 (레코드 필드,,)

 

데이터 모델링

구성요소

  • 논리적 구조
  • 연산
    • 데이터 삽입, 삭제, 변경
  • 제약조건
    • 데이터 구조에서 허용할 수 있는 관계를 명세화

 

목적

  • 정보 요구에 정확한 이해
  • 효율적인 의사소통 수단
  • 유지 보수 비용 감소 효과 기대
  • 개발 기초

 

특성

  • 업무 흐름 파악 용이
  • 무결성 보장 O
  • 데이터 공유를 통한 중복 제거, 일관성 있는 정보 제공 O

 

데이터 모델링 절차

데이터 모델링 절차

0. 요구사항

1. 개념(Conceptual) 데이터 모델링

  • 정보 내용 만족
  • 성능 목적 지원
  • E-R모델
  • 논리 데이터 모델의 기초
  • 개념 모델링 2단계
    • 개념 스키마 모델링
      • E-R다이어그램
    • 트랜잭션 모델링
      • 고차원 명세로 기술

2. 논리 데이터 모델링 (분석)

  • 개념
    • DB 개발 과정 첫 단계
    • 가장 핵심
    • 개념 구조 -> 논리적 구조
    • DB 관리자가 사용
    • 관계형 데이터 모델, 계층적 데이터 모델, 네트워크 데이터 모델
    • 정규화하여 모델링함
    • 완전하고 정확하게 표현
    • 특정 DBMS로부터 독립적
  • 논리적 데이터 모델링 3단계
    • 논리적 DB구조로 매핑
    • 트랜잭션 인터페이스 설계
    • 스키마의 평가 및 정제(최적화)
  • 특성
    • 충분히 수집하지 않으면 비용 발생
    • E-R모델 활용
    • HW , SW에 독립적

3. 물리 데이터 모델링 (설계)

  • 개념
    • DB생성을 위한 물리 구조로 변환
    • 레코드 양식, 응답시간, 저장공간 등 설계
  • 3단계
    • 레코드 분석 및 설계
    • 저장 레코드들을 클러스터링 (데이터 하나로 집중 or 분산)
    • 접근 경로 설계
  • 오브젝트 추가
    • 설계용 개체 타입 추가
    • 설계용 속성 추가
  • 성능을 고려한 조정
    • DBMS 고려
    • 개체 타입의 분리 or 통합 검토
    • 반정규화
    • 관계를 해체
  • DBMS에 적합한 성능 조정
    • 인덱스 추가 및 조정
    • 테이블 스페이스 조정
    • 인덱스 스페이스 조정

4. 데이터 베이스 구축 (개발)

  • 개념
    • 설계된 데이터 저장하기 위해 -> DBMS이용하여 DB생성
  • 고려사항
    • 무결성
    • 일관성
    • 회복성
    • 보안성
    • 호율성
    • 확장성

5. 데이터베이스

 

관계

1. 종류

  • 속성 관계
    • 속성과 속성 사이의 관계
    • 개체 내 관계
  • 개체 관계
    • 개체와 개체 사이 관계
    • 개체 간의 관계
  • 종속 관계 (Dependent Relationship)
    • 식별 관계
      • 외래 식별자-> 하위 개체의 주 식별자의 전체 or 일부로 존재
    • 비식별 관계
      • 외래 식별자 -> 하위 개체의 일반 속성으로
  • 중복 관계 (Redundant Relationship)
    • 두 개체 간 두 번 이상의 종속 관계 발생
  • 재귀 관계 (Recursive Relationship)
    • 자기 자신 개체를 다시 참조
  • 배타 관계 (Exclusive Relationship)
    • 데이터 통합
    • AND, OR관계

 

2. 관계의 대응

  • 1:1 
    • 반드시 한 개씩
  • 1:0 or 1:1
    • 한 개 : 한개 이하
  • 1:1 or 1:N
    • 반드시 한 개 : 한 개 이상
  • 1:0 or 1:1 or 1:N
    • 반드시 한 개 : 한 개 이상 or 없
  • 1:N
    • 반드시 한 개 : 반드시 한 개 이상

 

3. M:N 관계의 해소

  • 구현 불가
  • N : 1로 변경해야 함
  • 논리적 완성, 부분집합 식별 능력 제한
  • 정규화 x, 불안정, 문서화 적업 완료 X

 

4. 관계의 특징

  • (1:1 - 1:0 ) or (1:1 - 1:1 )  : 개체 1, 개체 2는 주 식별자가 동일
    • 성능 향상, 데이터 보안 목적

 

 

<E-R다이어 그램 작성>

E-R다이어 그램

1. 배경

2. 개념

  • 개체와 관계로 현실 세계를 표현한 모델
  • 기본 요소 : 개체, 관계, 속성

3. 특징

  • 식별자, 상관관계, 속성 설명해줌
  • 물리적 시스템 환경 고려 X
  • 설계 변경이 거의 발생 X
  • 논리 data 모델 -> 하나의 개체 != 하나의 테이블이나 세그먼트

 

E-R다이어그램 표기법

1. 개체 - 사각형

  • 사물 or 사건
  • 유일한 단어

2. 속성 - 동그라미

  • 개체가 가지고 있는 요소 or 성질
  • 속성명 != 개쳄여
  • 속성 값이 NOT NULL인지, NULL인지 고려

3. 관계 - 마름모

4. E-R 모델 작성 기법

  • 개체들을 정렬하며 배열
  • 좌에서 우, 상에서 하
  • 관계는 사선 X
  • 교차선 X,

 

확장 E-R다이어그램 (ERD)

1. 슈퍼 타입, 서브 타입

  • is-a 관계 가짐
  • 서브 타입 -> 슈퍼 타입이 되어 -> 여러 개 서브 타입 가질 수 O

2. 특수화 (Specialization) ↓

  • 여러 개로 분리
  • 하향식 설계

3. 일반화 (Zeneralization) ↑

  • 공통적인 특성 -> 상위객체로
  • 클래스들 간의 개념적인 포함 관계
  • 상향식 

4. 상속 (inheritance)

  • 하위 클래스는 상위 클래스 모든 것 상속 O
  • 하나의 하위 클래스는 여러개의 상위 클래스 상속 O

5. 집단화(Aggregation)

  • 여러 개체 타입을 묶어 -> 하나의 상위 객체 만들 수 있
  • 중복될 수 있는 개체 -> 단순하게 표현 O
  • 특수화, 일반화 -> 집단화 상속 관계 X

6. 분류화(Classification)

  • 공통적인 성질을 갖는 멤버들 표현
  • 상속 관계X
  • root노드 유형

데이터 베이스

중복 데이터 or 불필요한 데이터 제거  -> 체계적으로 최적화시킨 데이터들의 집합

 

데이터 베이스의 정의

  • 공유데이터(Shared Data) : 데이터들을 공동으로 공유

  • 운영 데이터(Operational Data) : 필요한 모든 데이터 and 데이터들의 관계 집합

  • 통합 데이터(Integrated Data, 종합데이터) : 중복이 최소화된 데이터들의 집합(불필요한거 제거)

  • 저장 데이터(Stored Data) : 저장 매체에 저장

 

데이터 베이스의 특징

  • 계속적인 변화(Continuous Evolution) : 새로운 데이터 삽입 삭제등 데이터 유지하면서 갱신됨

  • 실시간 접근(Real Time Accessibility) : 실시간 처리로 응답 가능

  • 동시 공유(Concurrent Sharing) : 다수 이용자 이용 가능

  • 내용에 의한 참조(Content Reference) : 데이터의 내용 참조하며 접근

  • 뛰어난 데이터 간의 연계성(Superb Data Combination) : 데이터와 데이터 사이의 관련된 정보들로 연결됨

 

 

스키마(테이블 구조)

외부 스키마(개별 사용자 접근)

|

응용인터페이스

|

개념 스키마(DB 전체)

|

저장인터페이스

|

내부 스키마(실제 레코드 형식)

 

 

 

<데이터베이스 관리 시스템(DBMS)>

  • 데이터 저장하고 분석하기 위한 컴퓨터 응용프로그램

  • 주요 기능 : DB관리

  • 데이터 관리의 복잡성 해결 

  • 운영 데이터를 통합 저장 -> 공동으로 사용 가능하도록

 

질의어

  • DDL (Data Definition Language, 데이터 정의어)

    • 테이블 생성, 변경, 제어

    • 응용프로그램 <-> DBMS 간의 인터페이스 제공

    • Table, row, column, 기본키, 외래키

  • DML (Data Manipulation Language, 데이터 조작어)

    • SELECT, UPDATE, INSERT, DELETE

    • 사용자 <-> DBMS 간의 인터페이스 제공

  • DCL (Data Control Language, 데이터 제어어)

    • 데이터 관리자가 사용

 

 

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

  • 데이터 정의 기능 (Definition Facility) : 논리적, 물리적 구조 정의

  • 데이터 조작 기능(Manipulation Facility) : 데이터 접근 방법 효율, 명확 / 누구나 쉽게 데이터 검색 변경 삭제 조작 가능해야함

  • 데이터 제어 기능 (Control Facility) :

    • 동시성 제어 (Concurrency Control) : 동시에 데이터 사용 -> 감시 감독

    • 보안과 권한 (Security + Authority) : 외부로부터 데이터 보호, 데이터 사용 권한 구분

  • 무결성 (Integrity)및 제약조건 유지 기능 :  변경돼도 데이터 일관성 유지되어야함

 

특징

  • 무결성

  • 일관성

  • 회복성 : 복구 가능

  • 보안성

  • 효율성 : 최적화

 

DBMS 장단점

  • 장점

    • 중복 최소화

    • 많은 사용자 공유

    • 보안, 무결성 유지, 일관성 유지

  • 단점

    • 구축 자체 어렵, 규모 큼

    • 파괴되면 회복 어렵

    • 독립적이지 않음 : 일부 문제 -> 전체 시스템 영향

    • 구축 비용 많이 듦

 

상용 DBMS 선정 시 고려사항

  • 협업 : 협업 용이한 툴 선정

  • 지원 깊이 : 지원 커퍼리지 파악

  • 시각화 : 그래필 요소 지원 여부 파악

  • 이 기종 DB 지원 : 하나의 툴로 여러 DB 지원

  • 비용 : 총비용 고려

  • 편의 기능 

 

 

<데이터 베이스의 종류>

  • 파일 시스템
  • HDBMS
    • 트리 형태의 구조

      • 구현 용이

    • 접근 속도 빠름

    • 종속적인 구조 -> 데이터 변화 유연하게 대응 어렵

      • 적응성 ↓

    • 한 레코드 -> 여러 개의 레코드 포함

      • 삽입 삭제 어렵

    • 1 : N

      • M : N 관계 표현 X

 

  • NDBMS (Network DBMS)
    • 그래프 형태

      • 계층형 DB보단 유연

      • 레코드로 연결

    • 설계 복잡

      • 데이터 간의 연계성 뛰어남

      • 비용 많이 듦

    • 1:1, 1:N, N:1, N:M

    • 데이터 종속성 문제 해결 X

 

  • RDBMS (Relational DBMS)
    • 테이블 구조

      • 단순한 데이터 구조

      • 2차원 형태인 테이블로 관계 맺는 개념

    • 가장 보편화 됨

    • 데이터 상호 간의 관계 표현

    • 유연성 좋음

      • 유지 관리 용이

    • 시스템 부하가 커서 수행 속도 느림

    • Oracle, SQL Server, MySQL, Maria DB

 

범용 DBMS

  • 관계형 DBMS

    • 테이블 구조(스키마)정의, 테이블 간의 관계 정의 -> 데이터 관리

  • 문서 저장 DBMS

    • 스키마 구조 필요 X

    • 컬럼의 하나 이상의 값 가질 O

    • Client 단에서 후 처리 필요

    • ex) Mongo DB, Amazon Dynamo DB ...

  • 그래프 DBMS

    • 정점과 간선으로 특화

    • 노드 간 관계를 구조화 -> 저장

    • ex) Neo4j

  • 키 값 DBMS

    • 가장 간단한 형태

    • 임베디드 시스템에 적합

    • ex) Redis, Amazon Dynamo DB

 

 

RDBMS 모델링

1. 기본용어

  • 속성 (Attribute) - 애트리뷰트
    • 변수명, 레코드의 필드

    • 유일한 값을 가져야 함

    • 순서 X

  • 도메인(Domain)
    • 실제 원자 값들의 범위

  • 튜플 (Tuple)
    • 실제 입력된 값들의 집합

    • 레코드

  • 릴레이션

    • 표 자체

    • 한개 이상의 속성들 집합

    • 릴레이션 스키마 + 릴레이션 어커런스

  • 릴레이션 스키마
    • 하나 이상의 속성

  • 릴레이션 어커런스
    • 실제 입력된 튜플들의 집합 -> 실시간 변화

  • 차수(Degree)
    • 릴레이션에서 정의된 속성의 개수

    • 레코드 필드 수

  • 카디날리티 (Cardinality, 기수)
    • 튜플의 개수 or 기수

    • 레코드의 수

  • 널 (NULL)
    • 속성 값 비어 있는 거

 

2. 릴레이션 특징

  • 튜플의 유일성

    • 중복 X

  • 튜플의 무순서

  • 속성의 원자성

  • 속성의 무순서 

  • 속성 이름의 유일성

 

3. RDMS의 키

  • 후보키(Candidate Key)
    • 유일성, 최소성

  • 기본키(Primary Key)
    • NULL값 불가

  • 대체키(Alternate Key, 보조키)
    • 후보키 중 기본키 제외한 모든 키

  • 외래키 (Foreign Key)
  • 슈퍼키
    • 튜플을 식별하기 위한 두 개 이상의 속성들의 집합

    • 유일성 O, 최소성 X

  • 무결성(integrity) 제약사항

    • 도메인 무결성
      • 정확성 유지

      • 숫자면 숫자로만, 한글은 한글로만

    • 개체 무결성
      • 기본키는 NULL값 X

      • 튜플 중복 X

    • 참조 무결성
      • 릴레이션은 참조할 수 없는 외래키 가질 X

      • 외래키가 NULL이거나 참조 릴레이션의 기본키값과 동일해야함

      • ex) [학과] 테이블의 '학번'은 [학생]테이블의 '학번'에 있는 값만 넣을 수 있다. 

본 정리 글은 이기적 정보처리기사 필기 책을 참고하여 정리하였습니다. 

book.naver.com/bookdb/book_detail.nhn?bid=17134434

2021 이기적 정보처리기사 필기 기본서

- 기초부터 탄탄히 잡아주는 영진닷컴의 이기적 수험서!영진닷컴이 자랑하는 수험서 브랜드 ‘이기적’ 시리즈는 쉽고 풍부한 내용으로 기초부터 튼튼하게 쌓아주는 합격의 동반자입니다. 기

book.naver.com

 

 

Part 1

소프트웨어 설계

  1.   소프트웨어의 종류 및 개발 방법론
  2. 요구사항 확인
  3. 화면설계
  4. 애플리케이션 설계

 

Part 2

소프트웨어 개발

  1. 데이터 입출력 구현
  2. 통합 구현
  3. 제품 소프트웨어 패키징
  4. 애플리케이션 테스트 관리
  5. 인터페이스 구현

 

Part 3

데이터베이스 구축

  1. 데이터베이스 개요
  2. 논리 데이터베이스 설계
  3. SQL
  4. 물리 데이터베이스 설계
  5. 데이터 전환

 

Part 4

프로그래밍 언어

  1. 프로그래밍 언어 기초
  2. 프로그래밍 언어 활용
  3. 객체지향 기술
  4. 프로그램 개발 환경 구축
  5. 멍령어와 주소 지정
  6. 운영체제

 

Part 5

정보 시스템 구축 관리

  1. 정보 통신의 기초
  2. 데이터 전송 제어
  3. 통신 프로토콜
  4. 소프트웨어 보안 구축
  5. 보안 공격 및 예방
  6. 암호 기술

+ Recent posts