Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

AI가 번역한 다른 언어 보기

제이의 블로그

개념적 데이터 모델링

  • 작성 언어: 한국어
  • 기준국가: 모든 국가 country-flag

언어 선택

  • 한국어
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

durumis AI가 요약한 글

  • 개념적 데이터 모델링은 엔티티와 속성을 정의하고, 엔티티 간의 관계를 ERD로 표현하여 데이터를 논리적으로 구성하는 과정입니다.
  • 엔티티는 독립적인 데이터 저장 단위이며, 속성은 엔티티가 가진 데이터를 의미하며, 관계는 엔티티 간의 상호작용을 나타냅니다.
  • 데이터베이스 설계에서 사용되는 기본 키, 외래 키, 카디널리티, 옵셔널리티 등의 개념을 통해 데이터 모델링을 체계적으로 수행할 수 있습니다.

개념적 데이터 모델링은 연관된 정보를 엔티티 단위로 분리하고, 엔티티간의 관계를 ERD로 표현 하는 과정이다.

엔티티 분리와 속성 정의

엔티티란, 실재하고 독립적이면서 데이터들을 저장할 수 있는 어떤 것을 의미한다.

또, 속성이란 엔티티가 가지고 있는 데이터를 의미한다.

예를 들어 학교의 선생님과 학생은 위의 조건을 만족한다.

여기서 선생님은 이름, 나이, 과목등의 데이터를 포함 하고 있는 엔티티이고 학생 또한 이름, 학년, 나이, 학번등의 데이터를 포함하고 있는 엔티티다.

여기서 분리된 엔티티는 논리적 데이터 모델링 과정에서 관계형 데이터베이스의 테이블이 되고 속성들은 그 테이블의 컬럼이 된다.

식별자와 키

한국은 주민등록번호 제도를 통해서, 각각의 국민을 고유하게 식별하고 있다.

이 때, 주민의 주민등록번호는 이 사람이 누구인지 식별할 수 있게 하는 식별자다.

주민등록번호는 특정인을 고유하게 식별할 수 있도록 하는 것이므로, 다른 사람과는 중복되지 않는다.

ERD로 엔티티를 표현할 때도, 식별자를 지정하여 고유하게 해당 정보를 확인할 수 있도록 해야한다.

여기서 지정된 식별자는 논리적 데이터 모델링 과정에서 기본 키(Primary Key)가 된다.


만약 자연스럽게 식별자로 지정할만한 고유한 속성이 존재하지 않는다면, 인조 키(Artificial Key)를 사용한다.

하지만 모든 상황에서 인조적으로 생성된 키는 변경될 위험이 없어 보편적으로 사용된다.


엔티티에서 식별자로 사용이 될 수도 있는 속성들을 모두 후보 키(Candidate Key)라고 부르며

기본 키를 제외하고 그 외에 식별자로 사용할 수 있는 속성들을 대체 키(Alternate Key)라고 한다.

그리고 이 대체 키들은, 성능 향상을 위해 인덱스를 걸기에 좋다.


이 외에 부서와 사원간의 소속을 의미하는 엔티티에서는 부서 번호와 사원 번호를 함께 키로 사용하는 경우가 있다. 이는 중복 키(Composite Key)라고 한다.

관계 파악

관계란 엔티티간의 상호 작용을 의미하며, 관계는 존재에 의한 관계와 행위에 의한 관계로 나뉜다.

  • 존재에 의한 관계

회사를 예를 들면, 사원은 부서가 존재하지 않으면 있을 수 없으므로 존재에 의한 관계다.

  • 행위에 의한 관계

사원은 신청을 통해 부서를 옮길 수 있다. 이 때는 행위에 의한 관계다.


이 관계는 논리적 데이터 모델링 과정에서 외래 키(Foreign Key), 결합(Join)등으로 표현 된다.

카디널리티(Cardinality)

하나의 엔티티와 다른 엔티티의 관계를 카디널리티라고 한다. 이는 서로간에 수적 관계를 표현한다.

이는 각 엔티티끼리의 1:1관계(일대일), 1:N관계(일대다), N:M(다대다)관계등으로도 표현 된다.

위 관계중 N:M 관계는 관계형 데이터베이스에서는 표현이 불가능하므로 중간 테이블을 만들어서 표현 한다.

옵셔널리티(Optionality)

댓글 시스템을 예시로, 각 댓글은 반드시 하나의 작성자를 가지고 있지만 작성자의 입장에서는 댓글을 작성하지 않을 수 있다.

위 경우에는 작성자(Mandatory)-댓글(Optional)의 관계를 가진다.

필수는 Mandatory라고 하고, 선택적 옵션은 Optional이라고 한다.


즉 엔티티의 인스턴스가 해당 데이터를 필수적으로 가져야하는지, 선택적으로 가져야하는지를 표현한다.




Jay
제이의 블로그
1인분이 목표인 초보 개발자
Jay
논리적 데이터 모델링 논리적 데이터 모델링은 개념적 데이터 모델링의 ERD를 관계형 데이터베이스 패러다임에 맞춰 변환하는 기계적인 과정입니다. 맵핑 룰을 기준으로 사각형 엔티티는 테이블로, 원형 속성은 컬럼으로, 관계는 PK 또는 FK로 변환됩니다. 1:1, 1:N, N:M 관계를 처리하는 방법과 제 1, 2, 3 정규화를 통해 테이블을 정제하는 과정을 설명합니다.

2024년 4월 9일

칸반보드 프로젝트 2 논리적 데이터 모델링 논리적 데이터 모델링을 진행하기 위해 개념적 데이터 모델링 ERD를 표 형태로 변환하고 정규화를 수행하는 과정을 설명합니다. 특히, Ticket 테이블의 Tag를 별도 테이블로 생성하여 제 2 정규형을 만족시키는 방법을 다룹니다.

2024년 4월 9일

칸반보드 프로젝트 1 개념적 데이터 모델링 관계형 데이터 모델링 연습을 위해 원티드 백엔드 인턴십 과제였던 칸반보드 프로젝트를 다시 구현하며 개념적 데이터 모델링을 진행했습니다. 엔티티 분리, 식별자 정의, 관계 파악 등의 단계를 거치며 카디널리티와 옵셔널리티를 표현했습니다.

2024년 4월 9일

[이펙티브 자바] 아이템 5. 자원을 명시하지 말고 의존 객체 주입을 사용하라 클래스가 내부적으로 하나 이상의 자원에 의존하는 경우, 싱글턴과 정적 유틸리티 클래스 대신 의존 객체 주입을 사용하는 것이 좋습니다. 의존 객체 주입을 통해 클래스의 유연성, 재사용성, 테스트 용이성을 향상시킬 수 있습니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

[이펙티브 자바] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 매개변수가 많은 클래스를 생성할 때 빌더 패턴을 사용하면 코드 가독성을 높이고, 안정적인 객체 생성을 보장할 수 있습니다. 빌더 패턴은 필수 매개변수를 이용하여 빌더 객체를 생성하고, setter 메서드를 통해 선택 매개변수를 설정하며, build() 메서드를 호출하여 최종 객체를 얻는 방식입니다. 빌더 패턴은 클라이언트 입장에서 코드 작성 및 읽기가 용이하며, 계층적으로 설계된 클래스와 잘 어울립니다.
제이온
제이온
제이온
제이온

2024년 4월 27일

데이터 라벨링이란? 종류, 장점, 단점 데이터 라벨링은 컴퓨터가 데이터를 이해하고 활용할 수 있도록 데이터에 태그를 붙이는 과정입니다. 개와 고양이를 구별하는 작업을 예로 들면, 컴퓨터가 개와 고양이 사진을 구분하도록 각 사진에 "개" 또는 "고양이"라는 태그를 붙여주는 것입니다. 데이터 라벨링은 사물 인식, 텍스트 분류, 감정 분석, 음성 인식 등 다양한 분야에서 활용됩니다.
세상 모든 정보
세상 모든 정보
세상 모든 정보
세상 모든 정보

2024년 3월 29일

[오브젝트] 2장. 객체 지향 프로그래밍 영화 예매 시스템을 객체 지향 프로그래밍으로 구현하는 방법을 설명합니다. 영화, 상영, 사람, 할인 정책, 할인 조건 등의 객체를 정의하고, 객체 간의 협력을 통해 할인 요금을 계산하는 방법을 제시합니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

[이펙티브 자바] 아이템 6. 불필요한 객체 생성을 피하라 자바에서 불필요한 객체 생성을 최소화하여 성능을 향상시키는 방법에 대해 설명합니다. 문자열, 부울, 정규 표현식, 뷰 객체, 오토 박싱 등 다양한 예시와 함께 객체 재사용의 중요성을 강조합니다. 특히 방어적 복사가 필요한 경우 객체 재사용으로 인한 문제점을 주의해야 합니다.
제이온
제이온
제이온
제이온

2024년 4월 28일

[Java] Reflection 개념 및 사용 방법 리플렉션은 자바 프로그램 실행 중에 클래스 정보에 접근하여 클래스를 조작할 수 있도록 지원하는 API입니다. 런타임 시점에서 클래스를 생성하고 필드와 메소드에 접근할 수 있지만, 캡슐화를 저해하고 성능 저하를 유발할 수 있으므로 신중하게 사용해야 합니다. Spring 프레임워크와 같이 런타임 시 객체를 동적으로 생성하고 관리해야 하는 상황에서 유용하게 활용됩니다.
제이온
제이온
제이온
제이온

2024년 4월 25일