728x90

갱신 이상 update anomaly

- 데이터 중복으로 발생하는 문제

- 삽입 이상 : 불필요한 데이터를 삽입하지 않으면 데이터 삽입이 안되는 이상

- 수정 이상 : 중복데이터 중 일부만 수정되어 데이터 불일치 발생

- 삭제 이상 : 유용한 데이터도 같이 삭제되는 문제

 

교수 릴레이션 - 기본키 : 학번, 교과목 번호

 

- 학번에 학년 정보가 중복되어 있음

- 삽입 이상 : 600번 학생. 2학년 삽입 시 교과목 번호가 없으면 삽입 x

- 수정 이상 : C312 수강한 400번 학생 학년을 4 -> 3학년으로 변경시 나머지 데이터 학년과 불일치

- 삭제 이상 : 200번 학생 삭제시 3학년 정보도 사라짐

->속성간 종속성 고려가 불충분해서 발생

=> 릴레이션 분해해서 하나의 종속관계를 하나의 릴레이션으로 표현해야함 => 릴레이션 정규화

 

 

함수적 종속 functional dependency : fd

- 정규화 핵심 개념으로 릴레이션의 갱신 이상을 발견하는 방법.

- 속성 간 관계에 대한 제약조건에 해당

- 속성 y는 속성 x에 함수적으로 종속 : x -> y

 

사원 릴레이션의 함수적 종속 관계 표현

1. 사원번호 -> 사원 이름, 주소, 전화번호 : 사원번호를 알면 이름, 주소, 전화번호알수있음

2. 부서번호 -> 부서이름 : 부서번호를 알면 부서이름 알수있음

3. 부서이름 -> 부서번호 :부서이름을 알면 부서번호알수있음

4. {사원번호, 부서번호} -> 직책 : 사원번호, 부서번호를 알아야 직책을 알수있음

5. x : 사원이름이나 부서번호, 주소등을 알아도 나머지 속성을 알수없음. 함수적으로 결정 x

 

함수적 종속 다이어그램 function dependency diagram fdd

- 함수적 종속 관계를 그림으로 표현

 

사원 릴레이션 함수적 종속 다이어그램

 

 

 

완전 함수적 종속 full functional dependency

- 복합속성 x -> y가 성립시

- 복합속성 {a,b}가 c의 결정자로 a나 b만으로 c를 결정 불가

완전 함수적 종속

부분 함수적 종속

- 복합 속성 x->y 성립시

- 복합 속성 {a, b} 중 b만으로 c를 결정

부분 함수적 종속

 

 

사원 릴레이션 함수적 종속 정리

함수적 종속 1. {사원번호, 부서번호} -> (직책, 사원이름, 주소, 전화번호, 부서이름) 성립

부분 함수적 종속 1.  {부서번호} -> (사원이름, 주소, 전화번호)

부분 함수적 종속 2  {사원번호} -> (부서이름)

완전 함수적 종속 1. {사원번호, 부서번호} -> (직책)

 

 

 

이행적 함수적 종속 transitive functional dependency

- 한 릴레이션 속성 a, b, c가 있을때 다음 필요충분조건 만족하는경우. 속성 c가 속성 a에 이행적 함수적종속

속성 c는 a에 이행적 함수적 종속

 

 

학생 릴레이션 예시

- 학생(학번, 교과목번호, 성적, 학과 이름, 학과 전화번호)

함수족 종속 

- 완전 함수적 종속 : {학번, 교과목 번호} -> 성적

- 부분 함수적 종속 : 학번 ->(학과이름, 학과전화번호)

- 완전 함수적 종속 : 학과이름->학과전화번호

학생 릴레이션 함수적 종속 다이어그램

학번 -> 학과명, 학과명-> 학과 전화번호

=> 학과 전화번호는 학번에 이행적 함수적 종속관계

 

 

정규화 normalization

- 데이터 중복을 제거하여 갱신 이상 제거. 논리적 데이터 모델 단순화 

* 많은 조인이 발생하여 질의 응답시간이 느려질수있음

 

정규형 normal form

- 데이터 중속 감소와 응답시간 단축하기위한 제약 조건을 만족하는 형태 

- 제약조건에 따라 제1 정규형 ~ 제 5정규형.

- 정규화 정도가 낮을수록 하나의 릴레이션에 많은 정보 포함

 

 

정규형 단계

1. 제 1정규형 1NF : 모든 속성 도메인이 원자값 -> 중복 속성 분리

2. 제 2정규형 2NF : 모든 속성이 기본키에 완전 함수적 종속 -> 기본키에 부분 함수적 종속 속성 분리

3. 제 3정규형 3NF : 이행적 함수적 종속 없어야함 -> 이행적 함수적 종속 속성 분리

4. 보이스/코드 정규형 BCNF

* 보통 제3정규형이나 보이스/코드 정규형까지 정규화 수행

 

3NF, BCNF가 최적인 이유

- 1NF, 2NF : 불필요한 데이터 중복, 공간 낭비

- 4NF, 5NF : 너무많은 릴레이션. 복잡한 종속성

 

 

정규화 단계

0. 비정규 릴레이션

1. 1NF <- 원자 값이 아닌 도메인 분해

2. 2NF <- 부분 함수적 종속 제거

3. 3NF <- 이행적 함수적 종속 제거

4. BCNF <- 결정자가 후보키가 아닌 함수적 종속 제거

5. 4NF <- 다치 종속성 제거

6. 5NF <- 조인 종속성 제거

 

 

- 비정규 릴레이션 예시 : 동아리가 다중치 속성

학생1 릴레이션 - 비정규 릴레이션

 

(1) 제1 정규형

- 릴레이션 속성은 원자값만 가져야함. 학생 2 새 릴레이션 생성(기본키 : {학번, 동아리})

학생2 릴레이션 - 제 1정규형, 1NF

 

- 그러나 학번, 이름, 학과가 중복된 데이터 발생 -> 2개의 새 릴레이션(제 1 정규형 만듬)

- 학생 3 릴레이션(1NF) : 학번 -> (이름, 학과)

- 학생 4 릴레이션(1NF) : {학번, 동아리}

학생 3 릴레이션 - 제1정규형, 1NF
학생 4 릴레이션 - 제1 정규형, 1NF

 

(2) 제 2정규형

- 제1 정규형은 기본키에 부분적 함수적 종속으로 갱신 이상 발생

-> 릴레이션을 분해하여 부분적 함수적 종속 제거하여 제 2정규형 만듬

 

수강지도 릴레이션 분해

- 수강지도(학번, 교과목번호, 지도교수, 학과, 성적)

- 기본키 : {학번, 교과목번호}

- 함수적 종속

 학번 -> (지도교수, 학과)

 {학번, 교과목번호} -> 성적

 지도교수 -> 학과

수강지도 릴레이션 1NF

 

수강 릴레이션 2NF, 지도 릴레이션 2NF

- 학번 -> (지도교수, 학과)로 부분적 함수적 종속 발생

=> 수강 릴레이션과 지도 릴레이션으로 분해

지도(학번, 지도교수, 학과)

수강(학번, 교과목 번호, 성적)

지도 릴레이션 2NF

 

수강 릴레이션 2NF

 

 

(2) 제 3 정규형

- 제 2정규형은 이행적 함수적 종속관계가 존재시 갱신 이상 발생

-> 이행적함수적 종속 제거하여 제3정규형 만듬

 

 

지도 릴레이션 2NF

- 지도(학번, 지도교수, 학과)

- 기본키 : 학번

학번 ->(지도교수, 학과)

지도교수 -> 학과

=> 학과는 학번에 이행적 종속관계

지도 릴레이션 2NF

 

 

지도 릴레이션 분해 3NF

- 지도릴레이션을 학생지도와 교수소속 3NF 릴레이션으로 분해

학생지도(학번, 지도교수)

교수소속(지도교수, 학과)

학생지도 3NF
교수소속 3NF

 

보이스 코드 정규형 BCNF

- 제3 정규형은 후보키가 아닌 결정자가 존재시 갱신 이상 발생

-> 모든 결정자가 후보키가되는 BCNF 만듬

 

수강과목 3NF 릴레이션

- 수강과목 : (학번, 교과목, 교수)

- 기본키 : {학번, 교과목}

- 후보키 : {학번, 교과목}, {학번, 교수}

{학번, 교과목} -> 교수

교수 -> 교과목

-> 교수 속성이 후보키가 아닌데도 결정자 역활 수행

수강과목 3NF 릴레이션

 

수강과목 3NF 릴레이션 분해

- 교수과목(교수, 교과목) BCNF 릴레이션

- 수강교수(학번, 교수(FK)) BCNF 릴레이션

교수과목 BCNF

 

수강교수 BCNF

 

역정규화 denormalization

- 성능 개선을위해 데이터 중복과 갱신 이상이 생기더라도 낮은 정규형으로 되돌아감

 

300x250
728x90

테이블과 릴레이션 차이

- 테이블 : 릴레이션 표현하는 구채적인 방법

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

 

 

논리적 설계

- 개념적 데이터 모델을 DBMS가 지원하는 논리적 데이터 모델(릴레이션=릴레이션 인스턴스 + 릴레이션 스키마) 설계

- 논리적 모델링 : 개념적 스키마를 논리적 스키마(릴레이션 스키마)로 변환, 정규화 수행, 무결성 제약조건 정의

- 트랜젝션 인터페이스 설계 : 트랜젝션 모델링을 기초로 인터페이스 설계

 

릴레이션 스키마

- 관계 데이터 모델의 기본이 되는 릴레이션을 구성하는 속성들의 집합

- 릴레이션 이름과 속성들로 표현

1. erd 개체와 관계를 릴레이션 스키마로 변경 ->  릴레이션명(속성1, 속성2)

2. 기본키에 밑줄 표기

3. 스키마 단순화 - 1:1, 1:n 관계 유형 단순화

4. 정규화로 적합한 릴레이션 형태로 변환

개체 관계 모델을 릴레이션 스키마로 변환

 

튜플 tuple : 관계 데이터 모델의 한 행으로 개념 데이터 모델의 엔티티에 대응

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

도메인 domain : 속성이 가질수 있는 값의 영역

카디널리티 cardinality : 릴레이션이 가지는 튜플의 갯수

차수 degree : 릴레이션이 가지는 속성의 개수

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

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

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

키 key : 유일하게 식별할수 있는 속성이나 속성 집합

후보키 : 유일성, 최소성 만족하는 속성 집합

슈퍼키 : 유일성만 만족하는 속성 집합

대체키 : 기본키가 아닌 후보키들

기본키 : 후보키중 가장 적합한 키, not null, unique

외래키 : 타 릴레이션의 기본 키를 참조하는 키

 

무결성 제약 조건 integrity constraints

- 정확성과 일관성 유지를 위해 db가 만족해야하는 조건

1. 개체 무결성 :기본키는 구분가능한 유일한 값으로, null값을 가져선 안됨

2. 참조 무결성 : 외래키는 null이나 기본키값을 가져야함

3. 도메인 무결성 : 미리 정해진 도메인 값을 가져야함

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

- not null, unique, check 는 논리적 모델링 단계에서 명시적으로 정의

300x250
728x90

개념적 설계 conceptual design

- 요구 분석 명세서를 토대로 DBMS와 무관한 추상적 형태로 요구사항 표현

- 개념적 모델링 : 데이터 중심 DB 설계. 데이터 요구분석 명세서로 ER 모델 도출 -> ERD로 표현

- 트랜잭션 모델링 : 처리 중심 DB 설계. 트랜젝션 요구분석 명세서를 기초로 업무 단위 유형별 트랜잭션 설계

 

 

데이터 요구 분석 명세서 -> 개념적 모델링 -> ER 모델

- 목표 : 주요 개체와 관계를 식별

1. 핵심 개체 타입 식별

2. 관계 타입 식별

3. 관계 타입 유형과 카디널리티(옵션, 최소 최대범위) 설정

4. 개체 타입 속성 식별

5. 개체 타입 식별자 결정

6. 관계 타입 속성 식별

7. ERD 표현

8. 검증

 

개체 entity

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

 

개체 타입 entity type

- 테이블

 

관계 relation

- 개체간 의미있는 연결, 연관성

 

속성 attribute

- 개체의 특성. 정보의 가장 작은 단위

- 개체 설명하는 명사 -> 개체의 속성, 관계 설명하는 명사 -> 관계의 속성

 

차수 degree

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

 

카디널리티 cardinality

- 관계에 대한 개체 최소, 최대 범위. 옵션

 

ERD entity relation diagram

- 개체 관계 모델을 표현하는 방법

1. 개체 타입 표시 - 사각형. 이름

2. 개체 타입 간 관계 표시 - 가능한 동사

3. 관계 타입 유형 표시 : 1:1, 1:N, N:M

4. 관계 타입 카디널리티 표시 : (최소, 최대) 옵션

5. 개체 타입 속성 표시 : 최소 한개의 식별자(기본키). 식별자는 밑줄, 동그라미. 최소 2개이상

6. 관계 타입 속성 표시 : 속성이 있는 경우

 

 

300x250
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

데이터 모델링

- 데이터를 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

DDL Data Define Language

- 데이터 정의어

- 데이터베이스 테이블 구조, 형식 등 정의

 

create table

- 테이블 정의 명령어

- primary key : 기본키 설정

- unique : 대체키 지정

- foreign key : 참조 설정 

- constraint : 제약조건명 설정. constraint [제약조건명] foreign key(속성명) references 타테이블명(타테이블기본키)

- not null : 널 허용 x

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

 -> no action : 테이블 변화시 행동 x

    casecade : 참조테이블 튜플 삭제시 관련 튜플 삭제

    set null : 참조 테이블 변화시 기존 속성 null로 변경

    set default : 참조 테이블 변경,삭제시 기존 속성을 기본값으로 변겅

create table 테이블명

(

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

    primary key(속성명)

    foreign key(속성명) references 타테이블명(타테이블의 기본키)

);

 

 

create view

- 뷰 정의 명령

- select 문 서브쿼리로 select 결과를 뷰로 설정

create view 뷰명(속성명,[,속성명]) as select 문;

 

 

 

 

create index

- 검색시간 단축을 위한 자료구조인 인덱스 정의

- 정렬 미지정시 기본으로 오름차순 정렬

create [unique] index 인덱스명 on 테이블명(속성명 [asc | desc]);

 

 

 

 

alter table

- 테이블 정의 변경

alter table 테이블명 add 속성명 데이터타입 [not null];

alter table 테이블명 alter 속성명 데이터타입 [set default 기본값];

alter table 테이블명 drop column 속성명 [cascade];

 

 

 

 

 

drop

- 테이블, 뷰, 인덱스, 스키마, 도메인, 제약조건 등 제거하는 명령어

- casecade : 참조하는 다른 개체도 함께 제거

- restricted : 타 개체가 삭제하는 개체를 참조시 제거 취소

drop table 테이블명 [cascade | restricted];

drop view 뷰명 [cascade | restricted];

drop index 인덱스명 [cascade | restricted];

drop domain 도메인명 [cascade | restricted];

 

300x250

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

DML  (0) 2020.05.16
DCL  (0) 2020.05.16
형상 관리  (0) 2020.05.15
무결성  (0) 2020.05.15
  (0) 2020.05.15

+ Recent posts