4.1 Database Basic
4.1 데이터베이스 기본
4.1.1 엔터티 (Entity)
엔터티(Entity)는 데이터베이스 설계에서 매우 중요한 개념으로, 현실 세계의 객체나 개념을 표현합니다. 예를 들어, 학생 정보 관리 시스템에서는 '학생', '강의', '교수' 등이 각각의 엔터티가 될 수 있습니다. 각 엔터티는 고유한 특성을 가지며, 이 특성들을 통해 다른 엔터티와 구별됩니다.
예시: 자바 스프링부트 애플리케이션에서 Lombok을 사용해 학생 엔터티를 정의하는 예시
이 코드에서
Student
클래스는 '학생' 엔터티를 나타내며,id
,name
,email
은 해당 엔터티의 속성입니다.
4.1.2 릴레이션 (Relation)
릴레이션(Relation)은 데이터베이스에서 엔터티 간의 관계를 표현하는 구조입니다. 흔히 테이블(Table)이라는 용어로도 불리며, 테이블은 행과 열로 구성된 2차원 구조를 가집니다. 각 행은 개별 레코드를 나타내고, 각 열은 속성을 나타냅니다.
예시: '학생' 엔터티와 '강의' 엔터티 간의 릴레이션을 나타내는 테이블:
StudentIDNameEmail1
홍길동
hong@example.com
2
이순신
lee@example.com
이 릴레이션은 '학생' 엔터티의 속성들로 구성된 테이블을 나타냅니다.
4.1.3 속성 (Attribute)
속성(Attribute)은 엔터티의 특성을 나타내는 개별적인 데이터 항목입니다. 각각의 엔터티는 여러 개의 속성을 가질 수 있으며, 이 속성들은 엔터티를 설명하는 중요한 요소입니다.
예시: 앞서 소개한
Student
엔터티에서name
,email
은 속성입니다. 이 속성들은 학생의 이름과 이메일 주소를 나타냅니다.
4.1.4 도메인 (Domain)
도메인(Domain)은 특정 속성이 가질 수 있는 값의 범위를 정의합니다. 즉, 데이터베이스에서 각 속성에 입력될 수 있는 값의 유형과 범위를 제한하는 역할을 합니다. 도메인을 정의함으로써 데이터의 일관성을 유지하고 데이터 입력 시 발생할 수 있는 오류를 방지할 수 있습니다.
예시: '학생' 엔터티에서
email
속성의 도메인은 유효한 이메일 주소의 형식으로 제한될 수 있습니다. 이를 통해 데이터베이스에 올바르지 않은 이메일 주소가 입력되는 것을 방지할 수 있습니다.
4.1.5 필드와 레코드 (Field and Record)
필드(Field)와 레코드(Record)는 데이터베이스의 테이블에서 사용되는 기본 단위입니다. 필드는 테이블의 열을, 레코드는 행을 나타냅니다.
필드(Field): 테이블에서 각 열이 하나의 필드를 나타내며, 특정 속성을 의미합니다. 예를 들어, '학생' 테이블에서
name
열은 '이름' 필드입니다.레코드(Record): 테이블에서 각 행이 하나의 레코드를 나타내며, 각 레코드는 엔터티의 인스턴스(즉, 객체)를 의미합니다. 예를 들어, '학생' 테이블에서 한 행은 특정 학생의 데이터를 나타내는 하나의 레코드입니다.
4.1.6 관계 (Relationship)
관계(Relationship)는 데이터베이스에서 서로 다른 엔터티 간의 연결을 표현하는 개념입니다. 관계는 엔터티 간의 상호작용을 모델링하는 데 사용되며, 크게 세 가지 유형이 있습니다: 일대일(1:1), 일대다(1), 다대다(N).
일대일 관계 (1:1): 하나의 엔터티가 다른 하나의 엔터티와만 관계를 맺는 경우입니다. 예를 들어, '학생'과 '학생증' 사이의 관계가 이에 해당할 수 있습니다.
일대다 관계 (1): 하나의 엔터티가 여러 개의 다른 엔터티와 관계를 맺는 경우입니다. 예를 들어, '교수'와 '강의' 사이의 관계가 이에 해당할 수 있습니다. 한 명의 교수가 여러 강의를 가르칠 수 있습니다.
다대다 관계 (N): 여러 엔터티가 여러 개의 다른 엔터티와 관계를 맺는 경우입니다. 예를 들어, '학생'과 '강의' 사이의 관계가 이에 해당할 수 있습니다. 여러 학생이 여러 강의를 들을 수 있습니다.
4.1.7 키 (Key)
키(Key)는 데이터베이스에서 특정 레코드를 고유하게 식별하는 데 사용되는 속성 또는 속성들의 집합입니다. 키는 데이터의 무결성을 유지하고 검색 작업을 효율적으로 수행하는 데 필수적입니다.
기본 키 (Primary Key): 각 레코드를 고유하게 식별하는 키입니다. 기본 키는 중복 값을 가질 수 없으며, NULL 값을 허용하지 않습니다.
외래 키 (Foreign Key): 다른 테이블의 기본 키를 참조하는 키입니다. 외래 키는 두 테이블 간의 관계를 정의하는 데 사용됩니다.
후보 키 (Candidate Key): 기본 키로 선택될 수 있는 후보 중 하나입니다. 기본 키와 마찬가지로 중복 값을 가질 수 없으며, NULL 값을 허용하지 않습니다.
대체 키 (Alternate Key): 후보 키 중 기본 키로 선택되지 않은 키입니다.
슈퍼 키 (Super Key): 하나 이상의 속성으로 구성되어 테이블의 각 레코드를 고유하게 식별할 수 있는 키입니다. 슈퍼 키는 기본 키를 포함할 수 있습니다.
예시: 스프링부트와 Lombok을 활용해 기본 키와 외래 키를 사용하는 예시:
이 코드에서
Student
클래스의id
속성은 기본 키로 정의되었으며,Enrollment
클래스에서는student_id
와lecture_id
가 외래 키로 사용되어Student
와Lecture
테이블 간의 관계를 나타냅니다.
Last updated