DB 7

[Modeling] 식별자를 정의할 때 주의하는 경우 (인조식별자)

엔티티를 설계할 때 명확한 본질식별자가 있음에도 불구하고 본능적으로 인조식별자를 PK로 사용해 왔다. 인조식별자를 정의하는 경우는 이론적으로 알고 있었지만 식별자가 한개일 때도 불구하고 인조식별자를 택했기 때문에 올바른 설계법이 궁금했다. 그래서 이번에는 인조식별자를 쓰더라도 추가로 보완해야 할 점에 대해 정리하고자 한다.1. 식별자 개념원래 존재하는 속성이냐에 따라 본질식별자 / 인조식별자로 구분대표성 여부에 따라 주 식별자 / 대체(보조)식별자로 구분엔티티에 원래 존재하는 속성인 사원번호, 주민등록번호 / 업무처리나 이벤트 성격의 데이터의 경우 회원 ID, 계좌번호처럼 ID나 일련번호 등을 부여하여 식별하는 경우 모두 본질식별자를 활용하는 예시다. 2. 인조식별자를 정의하는 경우엔티티를 통합할 때 통..

DB 2025.10.02

[Modeling] 한 테이블에서 모두 관리 vs 식별자 상속으로 테이블 분리

편지를 주제로 하는 프로젝트를 하고 있는데 ERD를 그리면서 한 가지 궁금증이 생겼다. 편지 당 [공감해요,슬퍼요,힘내요,응원해요]와 같이 감정 이모티콘을 나타낼 수 있도록 엔티티를 설계하고 있는데, 이 감정들을 하나의 엔티티로 분류해서 식별자 상속을 하면 그룹화를 할 수 있으니 더 깔끔하지 않을까 궁금했다. 그래서 이들의 장단점을 비교해 보고자 한다.1. 한 테이블에 표시데이터를 조회할 때 조인을 하지 않고 하나의 테이블에서 조회할 수 있어 쿼리가 단순하다편지 관련 모든 정보가 한곳에서 관리되어 이해하기 쉽다새로운 감정 속성이 추가될 때마다 새로운 컬럼을 추가해야 한다2. 식별자 상속으로 테이블 분리감정 유형들을 네 개로 고정적으로 정해 놓았기 때문에 새로운 감정 추가에 유리한 구조가 아님을 유의한다...

DB 2025.09.19

[SQL 튜닝] 3. 인덱스 튜닝

책 [친절한 SQL 튜닝; 조시형 지음]을 참고하여 작성하였습니다. 1. TABLE ACCESS BY INDEX ROWID 인덱스 ROWID는 사실 논리적 주소에 가깝다. 타고 타고 넘어가는 거기 때문에 빠르지 않다. 메인 메모리 DB는 데이터를 모두 메모리에 로드해 놓고 메모리를 통해서만 I/O를 수행하는 DB다. 디스크를 경유하지 않고 대부분 데이터를 메모리에서 읽는다는 뜻이다. 디스크에 저장된 데이터를 버퍼캐시로 로딩하고 이어서 인덱스를 생성한다. 인덱스는 디스크 상의 주소정보를 갖는 게 아니라, 메모리상의 주소정보를 갖는다. 이에 비해 일반 DBMS는 메모리 주소정보가 아닌, 디스크 주소정보(DBA)를 이용해 해시 알고리즘으로 버퍼 블록을 찾아간다.인덱스로 테이블 블록을 액세스할 때는 액세스..

DB 2025.05.02

[SQL 튜닝] 2. 인덱스 기본

책 [친절한 SQL 튜닝; 조시형 지음]을 참고하여 작성하였습니다. 인덱스 Range Scan은 리프 블록에서 스캔 시작점을 찾아 거기서부터 스캔하다가 중간에 멈추는 것이다. (시작점과 끝점이 있다는 이야기) 애초에 인덱스가 정렬되어 있기 때문에 가능하다. 인덱스 Range Scan 하려면 인덱스 선두 컬럼이 가공되지 않은 상태로 조건절에 있어야 한다.반대로 말하면, 인덱스 선두 컬럼이 가공되지 않은 상태로 조건절에 있으면 인덱스 Range Scan은 무조건 가능하다. 하지만 인덱스를 사용할 수 없는 조건은 다음과 같다. 변형notnulllike orin'인덱스를 탄다'는 표현은 '인덱스 Range Scan 한다'와 같은 의미다. 인덱스를 정말 잘 타는지는 인덱스 리프 블록에서 스캔하는 양을 따져봐..

DB 2025.04.28

[DB] 엔티티, 릴레이션, 튜플, 카디널리티 등 용어 정리

릴레이션이차원 테이블 형태로 데이터를 저장하는 엔티티의 집합엔티티독립적으로 존재할 수 있는 객체로 데이터베이스에서 저장 및 관리되는 데이터 단위도메인엔티티의 속성이 가질 수 있는 값의 범위튜플 (=레코드)릴레이션의 각 행을 레코드라고 하는데 레코드를 더 공식적으로 튜플로 부름카디널리티릴레이션 튜플의 개수스키마데이터베이스에 저장되는 데이터의 구조와 제약 조건을 정의하는 구조데이터베이스를 구성하는 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건등에 관해 전반적으로 정의cf. https://hoyeonkim795.github.io/posts/db-%EC%9A%A9%EC%96%B4/ [Database] 데이터베이스 용어 - 릴레이션, 어트리뷰트, 튜플, 도메인, 차수, 카디널리티, ..

DB 2025.02.04

[DB] 정규화 개념 및 종류별 테이블 비교

이 글은 수제비2024 정보처리기사 실기 책의 이론을 정리하되, 예시 테이블은 다시 재구성하였습니다. 이상 현상(Anomaly)- 데이터의 중복성으로 인해 릴레이션(테이블)을 조작할 때 발생하는 비합리적인 현상삽입 이상: 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우[삽입 이상]이름전화번호차량번호홍길동010-1111-1111가123김철수010-2222-2222NULL인적사항을 등록할 때 본인 소유의 차량번호를 기재해야 한다면 자가용이 없는 김철수는 해당란에 NULL을 입력해야 한다. 삭제 이상: 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우[삭제 이상]이름 학과 기숙사 번호기숙사 이름홍길동영어영문학과 1한얼관김철수 컴퓨터공학과2한빛관김철수의 정보를 삭제하려할 때 기숙사 정..

DB 2024.04.28