해당 포스팅은 자세한 인과관계를 포함한 원리보다는 결과를 위주로 작성된 시험기간 대비 포스팅입니다
1. 데이터베이스
1-1. 무결성/원자성
데이터베이스의 무결성 - 제약조건을 설정해서 일관성을 유지
데이터베이스의 원자성 - 결함이나 충돌이 발생하는 경우, 변경 내용을 모두 반영하거나 모두 반영하지 않아야 함
1-2. 스키마와 설계 과정
스키마 - 데이터베이스 설계의 결과물 - 외부/개념/내부
요구사항 수집과 분석 - 개념적 설계를 위한 개념 스키마 - 논리적 설계를 위한 논리적 개념 스키마 - 물리적 설계를 위한 내부 스키마
2. 개념적 모델링 - ER 모델링
: 엔티티와 관계로 요구사항을 묘사
2-1. atttibute와 attribute domain
enumerated type 열거형
null은 domain과 무관하게 정의
attribute
- 복합 : 더 작은 속성으로 분리 가능
- 다중값 : 여러 값을 가질 수 있는 속성 이중원
- 유도 : 다른 속성 값으로부터 유도되는 속성 점선원
domain은 attribute가 가질 수 있는 값의 종류
2-2. entity
entity type : 여러 속성을 하나의 모임으로 정의
- 키 속성 : 대표 핵심 속성, 중복 없음, 원에 밑줄
- 모든 엔티티는 각 엔티티가 구별 가능해야하므로 최소 한 개의 키 속성을 가져야 한다
- 약한 엔티티 타입 (이중박스)
: 키 속성이 없는 엔티티 타입은 혼자 존재할 수 없고 반드시 키 속성을 가진 강한 엔티티 타입을 통해서만 존재 가능하다
: 소유/식별 엔티티 타입 = 약한 엔티티를 식별하는 데 사용하는 타입 ... 이중 마름모
: 부분키 = 약한 엔티티를 고유 식별할 때 사용하는 속성 ... 점선 밑줄
2-2-예시 . 강한 엔티티와 약한 엔티티, 소유식별엔티티
찾아봐도 명확하게 문장으로 묘사하는 경우가 많지 않아 정리해두었다
강좌 엔티티는 강의명, 개설학과, 영역구분이라는 세 가지 속성을 가짐
분반강좌 엔티티는 분반번호, 강의실, 강의시간이라는 세 가지 속성을 가짐
분반강좌 엔티티는 분반번호라는 부분키로 분반강좌를 고유하게 식별
강좌 엔티티는 강한 엔티티
분반 엔티티는 분반강좌를 약한 엔티티를 식별하는 소유 식별엔티티
분반강좌 엔티티는 분반에 의존하는 약한 엔티티
분반강좌는 독립적으로 존재할 수 없기 때문에 반드시 강좌와의 분반관계를 통해 연결되어 존재
강좌 엔티티와 분반강좌 엔티티는 분반이라는 관계를 맺고 있음
강좌를 분반해서 분반강좌를 만들 수 있을 때 강좌가 없다면 분반강좌도 존재할 수 없으니 분반강좌는 약한 엔티티
강좌의 기본키를 참조하여 분반강좌의 부분키를 만든 것
모든 분반강좌는 반드시 해당되는 특정 분반과에 속해 있어야만 존재할 수 있음 (전체참여 이중실선)
모든 분반이 모든 강좌에 항상 존재하는 것은 아님 (부분참여 단일실선)
유사 예시로는 회사의 직원 엔티티와 부양이라는 관계로 연결된 부양가족 엔티티가 있음
2-3. relation
relation type : 마름모 화살표 없는 직선
- 엔티티가 관계에 참여한다
- 참여하는 엔티티 타입의 개수 = 관계의 차수 degree
relation constraint
- 카디널리티 비율 제약 조건 : 개별 엔티티가 참여하는 관계의 개수 , 마름모와 직선의 연결부에 작성, 방향 동일
(카디날리티 = 투플의 개수)
- 참여 제약 조건
-- 전체 참여 : 모든 과목은 적어도 1명의 수강생이 수강 (학생 - 수강 - 강좌 일 때 수강 - 강좌는 전체 참여 이므로 이중실선)
-- 부분 참여 : 모든 학생이 강좌를 듣는 것은 아님
- 표기 방법
-- min-max 표기법 : (최소, 최대)으로 작성, 방향 반대, 0이면 부분참여
카디널리티 비율 제약 조건을 작성한 그림은 부서 하나에는 여러 명의 직원이 속하기 때문에 방향에 맞게 부서쪽을 1, 직원쪽을 N으로 작성했다
min max 표기법으로 작성한 그림은 부서를 이루기 위해 최소 4명의 직원, 최대 n명의 직원이 필요하고 직원은 소속 관계를 통해 부서에 최소 1번, 최대 1번만 참여할 수 있다.
3. 논리적 모델링 - 릴레이션 데이터 모델링
3-1. 구성
관계형 데이터 모델 = 테이블 형태로 데이터 표현
테이블 = 릴레이션
헤더 = 릴레이션 스키마, 속성 집합 > 대표속성, 슈퍼키
인스턴스 = 실제 속성들이 가지는 값
인스턴스의 각 행 = 튜플
열 = 각 속성들의 값 전체 (도메인과 유사)
다중값 속성 비허용, 중복 튜플 비허용, 튜플 순서 없음
대표 속성 = 튜플 구별하게 하는 속성, 슈퍼키
후보키 = 슈퍼키 중 최소 개수
기본키 = 후보키 중 하나, 개체 무결성 제약 조건 (null 비허용)
외래키 = 자식R의 특정 키가 타 릴레이션(부모R)의 기본키 참조
3-2. 무결성 제약 조건
도메인 무결성 제약 조건 = 정해진 도메인만
개체 무결성 제약 조건 = 기본키 중복이나 널 삽입 금지, 수정 대신 삭제 후 삽입
참조 무결성 제약 조건 = 부모에 없는 기본키는 자식에 외래키로 사용 불가, 자식에 외래키로 있으면 부모의 기본키 삭제 불가
'[ Computer Science ] > Database_sql' 카테고리의 다른 글
[Database/MySQL] subquery 활용 연습 (1) where 조건에 중첩 (0) | 2024.11.06 |
---|---|
[Database/MySQL] 기초 쿼리문 연습 (1) | 2024.10.22 |
[Database/midterm] SQL 문법 기초 (11) | 2024.10.19 |
[Database/MySQL] 실습을 위한 초기 데이터 생성 (4) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 평균 일일 대여 요금 구하기 (SELECT) (7) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 역순 정렬하기 (SELECT) (0) | 2024.10.17 |
[프로그래머스/MySQL] Lv. 1 아픈 동물 찾기 (SELECT) (0) | 2024.10.17 |