1. 무결성
- 데이터에 결함이 없다
- 데이터의 정확성, 일관성, 유효성이 유지되는 것
2. 무결성을 판단하는 3가지
1. 정확성 - 데이터베이스에 저장된 데이터는 정확해야 한다. |
2. 일관성 - 같은 데이터라면 다른 테이블에서도 일관되어야 한다. |
3. 유효성 - 데이터는 정의된 규칙과 제약조건에 따라 유효해야 한다. |
3. 무결성의 3가지 종류
1. 개체 무결성 - 각 행은 행을 구분할 수 있는 고유한 식별자를 가져야 한다. - 모든 테이블이 PK로 선택된 컬럼을 가지고 있어야 한다. |
2. 참조 무결성 - 두 테이블간의 관계를 유지하는 제약(FK)을 나타낸다. - 관계형 데이터베이스에서 다른 테이블의 데이터를 참조할 때 데이터의 일관성을 보장해야 한다. |
3. 도메인 무결성 - 칼럼의 자료형, 제약조건에 대한 사항을 정확하게 정의하고 올바른 데이터가 들어왔는지 확인하는 것 |
4. 모델링(기획)
1. 요구사항 분석 단계 - 클라이언트의 요구사항을 분석하는 단계 - 예시: 클라이언트의 요청 (회원, 주문, 상품 정보를 관리하고자 한다. ) |
2. 개념적 설계 단계 - 요구사항 분석 단계에서 나온 결과물을 토대로 ERD를 통한 개념적 설계만 진행하는 단계 (테이블 간의 관계를 개념적으로 나눠놓는다. ) 예시 |=============|=============|=============| 회원 상품 주문 |=============|=============|=============| 회원번호 상품번호 주문번호 아이디 상품명 주문날짜 비밀번호 가격 이름 재고량 주소 이메일 생일 |=============|=============|=============| |
3. 논리적 설계 단계 - KEY, 제약조건 설정 등 개념적 설계에서 나온 결과물을 토대로 테이블화 한다. 예시 |=============|=============|=============| 회원 상품 주문 |=============|=============|=============| 회원번호(PK) 상품번호 주문번호 아이디(UK) 상품명 주문날짜 비밀번호 가격 이름 재고량 주소 이메일(UK) 생일 |=============|=============|=============| |
4. 물리적 설계 단계 - 시퀀스, 조인 등 데이터베이스의 성능을 향상시키는 것들에 대해 정의하고 물리적 설계에서 나온 결과물을 토대로 바로 테이블을 구현할 수 있도록 만들어 준다. (타입, 용량, 컬럼명 정의 등등 실행된다.) 예시 |=======================================================| TBL_USER |==================|==================|==================| USER_NUMBER NUMBER PRIMARY KEY USER_PASSWORD VARCHAR2(500) USER_ID VARCHAR2(500) UNIQUE USER_NAME VARCHAR2(500) USER_ADDRESS VARCHAR2(500) USER_EMIAL VARCHAR2(500) UNIQUE USER_BIRTH DATE |==================|==================|==================| |
5. 구현 단계 - 디비버같은 데이터베이스 환경에서 구현한다. |
실습
1. 요구사항 분석 단계 [ 클라이언트 요청 ] 도서관에서 회원의 정보와 책의 정보가 필요하다. 회원의 정보는 회원번호, 이름, 나이, 핸드폰 번호, 주소가 필요하고 책의 정보는 도서번호, 책 이름, 카테고리가 필요하다. 단, 카테고리는 인문학, 추리, IT, 로맨스만 가능하다. 테이블 명:TBL_MEMBER, TBL_BOOK |
2. 개념적 설계 단계 |=============|=============| 회원 도서 |=============|=============| 회원번호 도서번호 이름 도서이름 나이 카테고리 핸드폰 번호 회원번호 주소 |=============|=============| |
3. 논리적 설계 단계 |===============|===============| 회원 도서 |===============|===============| 회원번호(PK) 도서번호(PK) 이름 도서이름 나이 카테고리(CHECK) 핸드폰 번호(UK) 회원번호(FK) 주소 |===============|===============| |
4. 물리적 설계 단계 |=======================================================| TBL_MEMBER |==================|==================|==================| MEMEBR_NUMBER NUMBER PRIMARY KEY MEMBER_NAME VARCHAR2(500) MEMBER_ AGE NUMBER MEMBER_ PHONE VARCHAR2(500) UNIQUE USER_ADDRESS VARCHAR2(500) |==================|==================|==================| |======================================================================| TBL_BOOK |==================|==================|=================================| BOOK_NUMBER NUMBER PRIMARY KEY BOOK_ NAME VARCHAR2(500) BOOK_ CATEGORY VARCHAR2(500) CHECK('인문학', '추리', 'IT','로맨스') MEMBER_ NUMBER VARCHAR2(500) FOREIGN KEY |==================|==================|=================================| |
01012341234
0101 이진수로 착각할수있다. -> VARCHAR2
book number 가 pk일경우
1번 책 | 홍길동 |
2번책 | 홍길동 |
3번책 | 김철수 |
MEMBER number 가 pk일경우
홍길동 | 1번책 2번책 |
김철수 | 3번책 |
-- TO_DATE('2000-01-01'): 소괄호 안에 문자열값을 날짜타입으로 변환시켜준다.
DATE타입 컬럼에 문자타입 값('YYYY-MM-DD')을 넣으면 자동으로 DATE 타입으로 변환된다.
따지고 보면 TO_DATE()함수를 쓰는것이 맞지만 자동변환이 가능하므로 문자열처럼 값을 넣는다.
자식테이블에 값 추가 시 부모 테이블에 있는 값을 넣어야한다.
728x90
'DBMS > Oracle SQL' 카테고리의 다른 글
DBMS 산술 연산자 (0) | 2024.02.23 |
---|---|
DBMS 연결 연산자 (0) | 2024.02.23 |
PK, FK, ERD (0) | 2024.02.21 |
DDL (Data Definition Langauge) : 데이터 정의어 (0) | 2024.02.21 |
DML (Data Manipulation Langauge) : 데이터 조작어 (0) | 2024.02.21 |