728x90

데이터베이스 라이프사이클

1. 요구사항분석 : 저장할 데이터 범위 결정을 위해 요구사항 분석

2. 설계 : 개념적설계, DBMS 선정, 논리적설계, 물리적설계 수행

3. 구현 : 설계된 DB 스키마를 기초로 생성, 데이터 저장, 프로그램 개발

4. 운영 : 서비스 제공

5. 감시 및 개선 : db 성능 향상, 새 요구조건에 대응

 

DB 구축시 고려사항

- 무결성

- 일관성

- 회복

- 보안

-효율성

- 확장

 

1. 요구사항 수집 및 분석

- 정보 내역 수집 분석 -> 개념적 설계에 필요한 요구 분석 명세서 작성

2. 개념적 설계

- 요구 분석 명세서를 기초로 DBMS와 무관한 추상적 형태로 사용자 요구 표현.

- 미처 수집되지 않은 새로운 요구사항 발견

- 개념적 모델링(데이터 중심) + 트랜젝션 모델링(데이터 처리 중심)

3. DBMS 선정

- 논리적 데이터모델, 운영환경, 경제성을 고려하여 선정

4. 논리적 설계

- 개념적 데이터 모델(개념적 스키마)를 DBMS가 지원하는 논리적 데이터 모델(논리적 스키마)로 변환

- ERD를 논리적 데이터 모델(관계 데이터 모델)- 릴레이션 스키마, 무결성 제약조건으로 변환.

- 정규화로 보다 적합한 형태로 변환.

- 요구 분석 명세서를 기초로 제약조건 정의

5. 물리적 설계

- 논리적 스키마(릴레이션 스키마와 무결성 제약조건)을 기초로 내부 스키마(물리적 데이터 구조)로 변환

- 내부 스키마( 저장 레코드 양식), 뷰와 인덱스 설계, 트렌젝션 분석 및 인터페이스 설계

- 릴레이션스키마,무결성 제약조건 -> 내부 스키마(DDL), 뷰, 인덱스 정의

- 릴레이션은 테이블로, 속성은 칼럼, 관련성은 외부키,  데이터 타입과 크기 제약조건 등 표현

6. 구현 및 테스트

- DBMS로 DB 생성 , 프로그램 개발, 테스트

 

 

 

 

(1) 요구사항 수집 및 분석

1) 요구 분석 명세서

 - 요구 사항 수집 분석해서 요구분석 명세서 작성 - 데이터 요구 분석 명세서와 트랜젝션 요구 분석 명세서

- 데이터 요구 분석 명세서 : 데이터 분석 결과

 ex) 종업원은 유일한 사원번호를 가지며 이름, 급여, 입사일, 부서 정보기 필요. 종업원은 정규직과 계약직으로 구분.

- 트랜젝션 요구 분석 명세서 : 데이터 처리 과정 중심

 ex) 새 종업원 정보를 삽입, 기존 종업원 급여 변경, 기존 종업원 부서 정보 변경, 퇴직한 종업원 정보 삭제

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터베이스 6 - 논리적 설계  (0) 2020.05.17
데이터베이스 5 - 개념적 설계  (0) 2020.05.17
데이터베이스 3 - SQL  (0) 2020.05.17
요구사항 2 - UML  (0) 2020.05.16
데이터베이스 2 - 데이터 모델링  (0) 2020.05.16
728x90

db 다운

mysql community

https://dev.mysql.com/downloads/workbench/

 

 

DDL 데이터 정의어

- DB 구조 정의

 

테이블 생성

create table 테이블이름

(

  속성명 데이터타입 [not null] [default] [primary key],

   foreign key(속성명) references 참조테이블명(속성명),

   primary key(속성명),

   unique(속성명),

   constraint 제약조건명 check(조건),,

  [on delete 옵션],

  [on update 옵션]

);

- on delete/on update : 삭제나 업데이트시 옵션 지정 가능

 

create table option

- set null : 널 설정

- cascade : 관련 데이터 삭제

- no action : 조치 x

- set default : 디폴트값 설정

 

테이블 생성 예시
기본키, 고유키 등록 예시

 

외래키 등록 예시

 

제약조건 등록 예시

 

테이블 삭제 drop table

- drop table 테이블명 {restrict | cascade};

- restrict :참조하는 뷰나 제약조건 있을 시 삭제 불가

- cascade : 참조하는 뷰나 제약조건 있을시 그것들도 같이 삭제

ex) "취미'라는 이름의 테이블 삭제 참조하는 뷰나 제약조건이 있을 경우 삭제

 

기존 테이블 변경 alter table

alter table 테이블이름

[add 열이름 데이터타입] [default 값] |

[drop 열이름] [무결성제약조건] [restrict | cascade]

[modify 열이름 [데이터타입] (drop default | set default 값)];

1. 열추가/기본값 설정

2. 열 삭제

3. 열 변경

4. 열 변경/기본값 설정

 

스키마 생성

- create 스키마명 authorization 사용자아이디;

 

뷰 생성

- 뷰를 정의

- create view 뷰명[속성명 ...] as select문

 

DCL 데이터 제어어

- 권한 제어/데이터 복원 적용 등

- GRANT 권한 부여, REVOKE 권한 회수

 

1. 테이블 권한 부여

  -> grant 권한 on 테이블명 to 사용자계정명 [with grant option]

  -> revoke [grant option for] 권한 on 테이블명 from 사용자

- 권한 종류 : all, select, insert, delete, update, alter

- with grant option :  타 사용자에게 재부여

 

2. 사용자 등급 지정 및 해제

- 사용자 등급 : dba, resource db와 테이블 생성 가능자, connect 일반 사용자

- grant 사용자등급 to 사용자 [identified by 암호];

- revoke 사용자등급 from 사용자

 

 

 

commit

- 데이터베이스 변경사항 반영 명령

- commit;

 

rollback

- commit 하기전 변경사항 취소

- robback [to 세이브포인트지점];

 

savepoint

- 롤백할 지점 설정

- savepoint [세이브포인트명];

0. 오토커밋부터 끄기 - 커밋 시 세이브 포인트가 사라지고, 롤백할수없으므로 우선 오토커밋 설정부터끈다.

1. 사원 행 추가, 세이브포인트 s1 지정

2. 1번 사원 호봉 15로 변경

 

3. savepoint s1로 롤벡 -> 호봉이 12로 돌아옴

 

 

데이터 조작어

- db 사용자가 데이터 사용하는 언어. 검색, 삽입, 삭제, 수정 등

- select [* or 속성명] from 테이블/뷰명 where 조건

- update 테이블명 set 속성=값 where 조건

- delete from 테이블명 where 조건

- insert into 테이블명[(속성들)] values(값들);

 

1. select 명령

select [all|distinct] [열 목록 as 새이름] from 테이블 목록

[where 조건]

[group by 열목록]

[having 그룹 조건]

[order by 열목록 [asc|desc]];

- all : 중복되는 행 그대로 표시

- distinct : 중복되는행 삭제 표시

- as : 열 이름을 새이름으로 대치

- asc : 오름차순 (기본값)

- desc : 내림차순 (지정해야함)

 

조건 1. 호봉 20보다 큰경우

조건 2. 이름이 길동으로 끝나는 사람

조건 3. 이름이 김으로 시작하는사람

 

조건 4. 호봉으로 그룹

 

조건 5. 그룹핑 조건

조건 6. 호봉이 11보다 크고 30보다 작은 사람

조건 7. 호봉이 null 인 경우

 

as - 열대치

distinct - 호봉 열 데이터의 중복된 행 제거

 

정렬 - 호봉 내림차순 정렬

특정 튜플 갱신 update

 

 

 

집계함수*그룹 함수)

- count(속성명) : 해당 그룹 속성 개수

- sum(속성명) : 해당 그룹 속성 합

- avg(속성명) : 해당 그룹 속성 평균 

- max(속성명)

- stddev(속성명)

- variance(속성명)

 

 

호봉 그룹별 인원 수

 

인원이 2이상인 호봉 그룹 사원 수

300x250
728x90

UML

- Unified Modelinig Language

- 개발자와 고객 등 의사소통을 원할하게 하기 위해 표준화한 객체지향 모델링 언어

- 사물, 관계, 다이어그램 구성

- 사물 : 기본 요소. 구조 사물 - 클래스, 유스케이스, 컴포넌트, 노드, 행동 사물, 그룹 사물 - 패키지, 주해 - 노트

- 다이어그램 : 클래스 다이어그램, 객체 다이어그램, 컴포넌트 다이어그램, 배치 다이어그램, 시퀀스 다이어그램, 상태 다이어그램

 

연관 관계

- (양방향 관계)실선으로 연결하여 표현, 방향성은 화살표

- 1 : 1개 객체가 연관

- n : n개 객체가 연관

- 0..1 : 없거나 1만 존재

- 0..* or * : 없거나 다수 존재

- n..* : 적어도 n개 이상

- n..m : 연관된 객체가 n에서 m개

 

예시

- 교수와 학생은 양방향 상담 관계

- 학생과 휴대폰은 1:1 단방향 소유 관계

 

집합 관계

- 포함하고 포함되는쪽이 독립적인 관계

- 실선 마름모

 

포함 관계

- 포함하는/되는 쪽이 독립적일수 없이 포함하는 관계

- 실선 찬 마름모

의존 관계

- 필요한 관계

- 점선 화살표

일반화 관계

- 일반적인지 표현

- 실선 삼각형

 

실체화 관계

- 기능으로 그룹화 할수 있는 관계

- 점선, 삼각형

300x250
728x90

데이터 모델링

- 데이터를 DB로 표현하기 위한 모델링 과정

1. 개념적 모델링 : 현실 데이터를 추상화하여 개념적 데이터로 표현. ER 모델 이용하여 ERD로 표현

2. 논리적 모델링 : 개념적 모델을 DBMS에서 사용하는 논리적 데이터 모델로 변환. 2차원 테이블 형태로 릴레이션 표현

3. 물리적 모델링 : 논리적 데이터 모델을 물리적 데이터(디스크에 저장)로 변환 

 

데이터 모델

- 데이터를 기술하는 개념적 도구

- 개념적 데이터 모델 : 개체와 관계라는 개념으로 구성 -> ER 모델

- 논리적 데이터 모델 : 레코드와 관계라는 개념으로 구성 -> 관계형 데이터 모델

* 데이터 모델은 일반적으로 논리적 데이터 모델 지칭

 

 

개념적 데이터 모델

- 현실 세계를 개념적 모델링하여 얻을 수있는 데이터 구조. 개체와 관계로 구성된 데이터 모델 ex) ER 모델

- Entity Relation Model : ERD로 표현

 

논리적 데이터 모델

- 개념적 데이터 모델을 DBMS에서 사용가능한 논리적 데이터 모델. 레코드와 관계 개념으로 구성

- 관계 데이터 모델 : DB를 릴레이션(테이블 집합)으로 모델링한 구조

 

ER 모델 관련 용어

 

개체 entity

- DB가 표현하려는 정보, 서로 구별될수 있는 요소

- 파일 시스템의 레코드에 대응

- 둘 이상의 속성으로 구성

 

속성 attribute

- 개체 특성을 나타내는 요소. 가장 작은 논리적단위 열

 

도메인 domain

- 속성이 가질수 있는 값의 범위

- ex) : 성별 속성의 도메인 "남, 여"

 

개체 타입 entity type

- 속성들을 포함한 개체 정의

 

개체 인스턴스 entity instance

- 행 하나 값들의 집합

 

관계 relation

- 개체들관 의미있는 연결

- 1:1, 1:N, N:M 관계

 

카디널리티 cardinality

- 관계에 대응하는 개체 수

- (min, max)로 표현 . (1, 3) 해당 개체는 최소 1개서 3개까지 대응

- 아래의 예시서 학생은 최소 1개서 7개의 교과목 수강. 교과목은 최소 1, 최대 7명 학생이 수강

 

차수 degree

- 관계에 연결된 개체 타입 개수

- 개체 타입 개수에 따라 1진, 2진, N진 관계로 구분

 

 

 

 

관계 데이터 모델

- DB를 2차원 테이블, 릴레이션 집합으로 모델링하는 논리적 데이터 구조

- ER 모델을 관계 데이터 모델로 바꾸기 쉬움

- 사원 개체를 표현한 개체 관계 데이터 모델

 

테이블과 릴레이션 차이

- 테이블 : 릴레이션을 표현하는 구체적인 표현 방법. 중복 행 허용

- 릴레이션 : 추상적 개념. 중복행 허용 x

 

관계 데이터 모델 관련 용여

- 튜플 tuple : 관계 데이터 모델 하나의 행. 엔티티에 대응

- 속성 attribute : 관계 데이터 모델 하나의 열

- 도메인 domain : 속성이 가질수 있는 값의 범위

- 기수 cadinality : 릴레이션이 갖는 튜플의 갯수

- 차수 degree : 릴레이션이 갖는 속성의 갯수

- 릴레이션 스키마 relation scehema : 속성들의 집ㅎ바

- 릴레이션 인스턴스 relation instance : 튜플들의 집합

- 릴레이션 relation : 행과 열의 2차원 구조로 릴레이션 스키마와 릴레이션 인스턴스의 합한 개념

- 키 key : 튜플을 유일하게 식별할수 있는 속성, 속성 집합

* 개체 관계 모델과 관계 데이터 모델의 카디널리티와 차수의 개념은 조금씩 다르다

 

 

관계형 데이터베이스

- 릴레이션(테이블)의 집합으로 테이블 형태로 표현

 

관계형 데이터베이스 스키마

- 릴레이션 스키마와 무결성 제약조건으로 정의

 

릴레이션 스키마 :  속성들의 집합

릴레이션 인스턴스 : 튜플들의 집합

릴레이션 : 릴레이션 스키마 + 인스턴스

 

- 릴레이션을 구성하는 튜플들을 식별하는 속성, 속성들의 집합

- 후보키 : 유일성과 최소성을 만족하는 속성들의 집합

- 슈퍼키 : 유일성은 만족하나 최소성이 만족하지 않는 속성 집합

- 기본키 : 후보키 중 가장 적합한 하나의 키. not null. 중복 불가

- 대체키 : 기본 키를 제외한 나머지 후보키

- 외래키 :하위(참조) 릴레이션이 상위(피참조) 릴레이션의 기본키를 외래키로 가짐

 

유일성 : 각 튜플을 유일하게 식별

최소성 : 각 튜플들을 유일하게 식별한는데 필요한 최소 속성만 포함

 

후보키 candidate key

- 사번, 이름, 입사일, 호봉, 휴대폰 속성

- 사번, 휴대폰만 후보키 가능

- 이름, 입사일, 호봉은 유일하지 않음

- {사번, 이름}, {사번, 호봉} -> 최소성을 만족하지 않음

 

외래키 foreign key

- 하위-참조 릴레이션이 상위-피참조 릴레이션의 기본키(or null)를 참조하는 속성을 외래키

 

무결성 제약조건 integrity

- 데이터 정확성 일관성 유지를 위해 DB가 만족해야하는 조건

- 개체 무결성 entitiy integrity : 튜플 유일하게 식별하도록 기본키는 반드시 값을 가져야함. 기본키는 not null

- 참조 무결성 referencial integrity : 외래키는 피참조 릴레이션의 기본키나 널값을 가짐

- 도메인 무결성 domain integrity : 미리 정해진 값을 가져야함

 

무결성 제약 조건

- 기본키와 외래키는 개체 무결성과 참조 무결성이 묵시적으로 정의

- not null

- unique

- check 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터베이스 3 - SQL  (0) 2020.05.17
요구사항 2 - UML  (0) 2020.05.16
데이터베이스 1 - 데이터베이스 관리 시스템  (0) 2020.05.16
보안 점검 항목  (0) 2020.05.16
암호 알고리즘  (0) 2020.05.16
728x90

데이터 data

- 측정된 값

 

정보 information

- 의사 결정 할수 있는 지식

 

데이터베이스 database

- 데이터 집합

 

개체 entity

- 서로 구별될수 있는 정보

- 속성 attribute로 구성

- 파일 시스템의 레코드

ex) 개체 - 학생

    속성 - 학번, 이름, 학과 등

 

속성 attribute

- 정보의 가장 작은 단위

- 파일 시스템의 필드에 해당 

 

데이터베이스 관리 시스템 DBMS DataBase Management System

- DB 정의, 조작, 제어 기능 제공

- 데이터 정의 definition : 응용프로그램과 db가 인터페이스 제공, 다양한 데이터 요구 지원하도록 db 구조 정의

- 데이터 조작 manipulation : 사용자와 db간 인터페이스 제공, 데이터 검색, 삽입, 삭제, 수정 등 처리

- 데이터 제어 control : 권한 변경, 데이터 적용 복원 등 제공

 

스키마 schema

- DB 구조, 개체와 속성 관계를 포함하는 논리적 정의와 제약조건 기술한것

 

데이터 언어

- DDL : DB 관리자가 DB 스키마 정의(DB 구조 정의/변경)하기 위해 사용

 -> DB 스키마는 시스템 카탈로그나 데이터 디렉토리에 저장

- DML : DB 사용자와 DBMS 사이 통신수단. 검색, 삭제, 수정, 삽입 등 처리

- DCL : 데이터 제어 정의. DB 관리자가 데이터 보안/무결성/복구/병행 수행 제어 

* 일반 사용자 : SQL로 DB에 접근하는 사람

 

 

 

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

요구사항 2 - UML  (0) 2020.05.16
데이터베이스 2 - 데이터 모델링  (0) 2020.05.16
보안 점검 항목  (0) 2020.05.16
암호 알고리즘  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
728x90

보안 점검 항목

- 소프트웨어 개발 보안 가이드

https://www.kisa.or.kr/synap/doc.html?fn=201911290959441585.pdf&rs=/synapfile/

300x250
728x90

암호 할고리즘

- 정보 보호를 위해 평문을 암호화.

- 해시를 이용한 단방향 암호화와 개인키, 공개키를 이용한 양방향 암호화

 

hash 해시

- 임의 길이의 데이터를 고정된 길이 값이나 키로 변환

- 해시 알고리즘을 해시 함수, 해시 함수로 변한된 값/키을 해시값/키

- sha, md5 등

 

private key encryption 개인키 암호화 방법

- 평문을 암호화 알고리즘과 개인 키로 암호화하여 암호문 만듬 해당 키와 복호화 알고리즘으로 평문으로 되돌림.

- 암호화/복호화가 빠르며 단순, 사용자가 많을수록 개인키가 많이 필요

- 블록 암호화 : DES, SEED, AES, 스트림 암호화 : RC4

- DES Data Encryption Standard : 1975년 발표. 64비트 크기 블록과 56비트 길이 키 사용.

- AES Advanced Encryption Standard : 2001년 발표. 블록 크기 128비트, 키 길이에 따라 128, 192, 256

 

public key encryption 공개키 암호화 방식

- 공개키로 데이터를 암호화, 비밀키로 암호화된 데이터를 평문으로 복호화

- 키 분배, 관리가 쉬움, 암호/복호화 속도가 느리며, 복잡.

- RSA

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

데이터베이스 1 - 데이터베이스 관리 시스템  (0) 2020.05.16
보안 점검 항목  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
보안 약점  (0) 2020.05.16
728x90

캡슐화

- 정보 은닉이 필요한 데이터, 기능을 불충분하게 캡슐화하여 발생할수 있는 문제

- 잘못된 세션에 의한 정보 노출 : 멤버 변수에 정보 저장시 발생 -> 지역 변수로 변수 범위 제한

- 제거되지 않고 남은 디버그 코드 : 버그 수정이나 결과값 확인을 위해 남은 코드로 발생 -> 배포 전 디버그 코드 삭제

- 시스템 데이터 정보 노출 : 내부 정보를 메시지로 외부 노출 -> 노출 메시지 정보는 최소화

 

코드 오류

- 개발자들이 코딩 중 하기 쉬운 실수들로 형 변환, 자원 반환 등 

- 널 포인터 역참조 : 널 포인터가 가리키는 곳에 값을 저장하여 발생 -> 사용 전 널 값 확인

- 부적절 자원 해제 : 자원 반환을 누락하거나 반환 실패시 발생. 계속 자원 점유시 부족 -> 반환 코드 추가

- 해제된 자원 사용 : 이미 반환된 메모리 참조 -> 반환 후 접근 못하도록 주소 저장한 포인터 초기화

- 초기화 하지 않은 변수 사용 : 값이 없는 변수 사용시 발생 -> 변수 선언시 초기화

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

보안 점검 항목  (0) 2020.05.16
암호 알고리즘  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
보안 약점  (0) 2020.05.16
개발 보안  (0) 2020.05.16
728x90

시간 및 상태

- 병렬 처리나 시스템이나 멀티 프로세싱 환경에서 시간 실행상태 관리하는 보안 검증 항목

 

toptou 경쟁  조건

- 검사 시점과 사용 시점을 고려없이 코딩시 발생하는 보안 약점

-> 검사 시점에 사용 가능한 자원이 사용 시점 사용 불가

 

종료되지 않는 반복문 이나 재귀함수

- 종료 조건을 정의하지 않거나 구조상 종료 안되는 경우 발생하는 보안 약점

-> 시스템이 자원 고갈로 정지

 

 

 

에러 처리

- 오류들을 사전에 정의하여 예방하는 보안 검증 항목

- 오류메세지를 통한 정보 노출 : 실행 환경, 디버깅 정보, 스택트레이스 등 메시지로 외부 노출하는 보안 약점

- 오류 상황 대응 부재 : 개발 중 예외처리 미비로 발생하는 보안 약점 -> 예외 처리 구현

- 부적절한 예외 처리 : 예외를 세분화하지 않거나 누락된 예외로 인한 보안약점 -> 세분화된 예외처리

* stack trace 스택 트레이스 : 오류가 발생한 위치 추적하는 호출 메소드 리스트

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

암호 알고리즘  (0) 2020.05.16
캡슐화, 코드 오류  (0) 2020.05.16
보안 약점  (0) 2020.05.16
개발 보안  (0) 2020.05.16
DML  (0) 2020.05.16
728x90

입력 데이터 검증 및 표현과 보안 약점

- 잘못된 입력 데이터로 문제 발생을 막기 위한 검증

- 위험한 파일 업로드 : 악의적 명령어 스크립트 파일을 업로드하여 시스템 손상

- 운영체제 명령어 삽입 : 시스템 명령어 실행 유도

- 크로스 사이트 스크립팅 : 악의적 스크립트 삽입하여 정보 탈취

- sql 삽입 : 입력칸에 sql을 삽입하여 무단으로 db 접근

- 경로 조작 및 자원 삽입 : 데이터 입출력 경로 조작하여 시스템 자원 접근 

 

보안 기능과 보안약점

-인증, 접근제어, 암호화 등 구현하기위한 점검항목

- 하드코드된 비밀번호 : 소스 유출시 하드코드 패스워드 이용 가능  -> 비밀번호 암호화하여 별도 저장

- 취약한 암호화 알고리즘 : 암호 해독하여 중요 정보 탈취 ->안전한 암호화 알고리즘 사용

- 인증없이 기능 허용 : 중요 정보나 기능에 접근 -> 인증 구현

- 중요 자원에 잘못된 권한 설정 : 중요한 자원에 접근해 정보나 권한 사용 -> 관리자만 접근가능하도록 설정

- 암호화없이 정보 저장 및 전송 : 평문 데이터를 탈취하여 이용 -> 암호화, HTTPS나 SSL 같은 보안 채널 이용

 

* hard code 하드 코드 : 데이터를 코드 안에서 직접 입력

 

300x250

'컴퓨터과학 > SW, DB' 카테고리의 다른 글

캡슐화, 코드 오류  (0) 2020.05.16
시간 및 상태, 에러 처리  (0) 2020.05.16
개발 보안  (0) 2020.05.16
DML  (0) 2020.05.16
DCL  (0) 2020.05.16

+ Recent posts