본문 바로가기

전체 글62

도메인 주도 설계(Domain Driven Design)란? 정의 비즈니스 도메인(Business Domain)을 중심으로 소프트웨어를 설계하고 개발하는 개발 방법론 비즈니스 도메인이란? 회사가 고객에게 제공하는 서비스를 의미합니다. (예: 아마존 - 클라우드 서비스) 왜 도메인 주도 설계가 나왔을까? 과거부터 현재까지 효과적인 소프트웨어 엔지니어링을 위해 다양한 설계 방법들이 등장했습니다. 하지만 다양한 개발 방법들이 등장함에도 불구하고 프로젝트는 여전히 종종 실패를 합니다. 프로젝트가 실패하는 이유를 찾아보면 여러 가지 이유가 있겠지만 주로 공통적으로 말하는 실패 요인은 커뮤니케이션입니다. 이러한 커뮤니케이션 문제를 해결하기 위해 등장하지 않았나 생각합니다. 어떻게 설계를 할까? 도메인 주도 설계 방식은 크게 전략적 설계와 전술적 설계로 나뉩니다. 1. 전략적.. 2022. 9. 22.
[DB] 정규화란? 정규화란? 데이터의 중복을 줄이고 무결성 (정확성, 일관성)을 지키기 위해 데이터를 구조화하는 과정 정규화를 왜 사용할까? 한 테이블에 관련이 없는 속성들을 혼합하게 되면 테이블 내에 불필요하게 중복된 데이터가 쌓이게 됩니다. 이로 인하여 테이블에 이상 현상들이 발생하게 되는데, 이 현상을 해결하기 위해 정규화를 사용합니다. 정규화는 함수 종속성을 기준으로 데이터를 구조화하기 때문에 먼저 함수 종속성에 대해서 알아보겠습니다. 함수 종속성(Functional Dependency)이란? 테이블 안의 특정 속성 값에 의해 다른 속성 값을 결정하는 종속 관계 예시 테이블을 구성하는 두 개의 속성 X, Y가 있을 경우 속성 X의 값을 통해 속성 Y의 값을 바로 식별할 수 있거나, 속성 X값에 따라 속성 Y값이 달.. 2022. 7. 28.
[DB] 관계(Relationship)란? 관계(Relationship)란? 두 개 이상의 엔터티(Entity)가 서로 연관이 있는 상태 엔터티(Entity)란? 사람, 장소 등 관리하고자 하는 데이터들(Instance)의 논리적 집합 관계 패어링(Relationship Paring) 관계의 정의를 통해 고려해볼 때, 엔터티 안의 인스턴스가 모두 동일한 관계를 가지고 있다고 생각할 수 있지만 엔터티 안의 인스턴스는 개별적으로 관계를 가지게 됩니다. 예시 위 그림과 같이 학생 엔터티와 수업 엔터티가 있다고 가정하겠습니다. 학생 엔터티의 인스턴스인 김철수와 김길동은 각각 수업 엔터티의 인스턴스인 수학과 영어에 대해 서로 다른 관계를 가지고 있습니다. 김철수 인스턴스는 수학과 영어 인스턴스 모두와 관계를 가지고 있으며, 김길동 인스턴스는 영어 인스턴스.. 2022. 6. 26.
[DB] DBMS의 키(key)의 개념과 종류 개요 DBMS는 데이터를 일관성 있게 관리할 수 있도록 데이터를 입력받을 때, 다양한 제약조건(Constraint)을 제공하고 있습니다. 오늘은 다양한 제약 조건 중 데이터를 식별하는 기준인 키(Key)에 대하여 알아보겠습니다. 키의 종류 키는 여러 가지 종류가 존재하나 크게 슈퍼키, 후보키, 기본키, 대체키, 외래키 5가지로 분류합니다. 슈퍼 키(Super Key) 테이블에서 각 행을 유일하게 식별할 수 있는 속성들의 집합 예시 고객의 정보가 있는 테이블을 예시로 들어보겠습니다. 고객 아이디 속성은 모든 고객 행마다 값이 달라야 하고 이를 통해 다른 행과 유일하게 구별이 가능하므로 슈퍼 키가 될 수 있습니다. 그러나 나이·직업·등급·적립금 속성은 값이 같은 고객이 있을 수 있으므로 유일성을 만족시키지 .. 2022. 6. 6.