데이터 모델과 SQL정규화모델링 시 최대한 중복 데이터를 허용하지 않아야 저장공간의 효율적 사용과 업무 프로세스의 성능을 기대할 수 있다. 이러한 중복 데이터를 허용하지 않는 방식으로 테이블을 설계하는 방식을 정규화라고 한다. 정규화(DB Normalization)의 개념하나의 엔터티에 많은 속성을 넣게 되면, 해당 엔터티를 조회할 때마다 많은 양의 데이터가 조회될 것이므로 최소한의 데이터만을 하나의 엔터티에 넣는 식으로 데이터를 분해하는 과정을 정규화라고 한다. 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 과정. 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보한다. 데이터 이상현상을 줄이기 위한 데이터 베이스 설계 기법. 엔터티를 상세화하는 과정으로 논리 데이터 모델링 ..
SQLD 기본 및 활용SQL 기본데이터베이스(DataBase, DB): 데이터를 일정한 형태로 저장해 놓은 것. ex. 엑셀도 하나의 데이터베이스데이터베이스관리시스템(DataBaseManagementSystem, DBMS): 기존 데이터베이스 기능에 추가로 데이터 손상을 방지 및 복구(백업), 인증된 사용자만 접근 등 추가 기능을 지원하는 관리 시스템관계형 DBMS (Relational DBMS, RDBMS): 테이블로 데이터를 관리하고 테이블 간 관계를 이용해 데이터를 정의하는 방식으로 대부분의 기업이 사용하며 지금 공부하는 Oracle도 RDBMS 중 하나.테이블(Table): RDBMS에서 실제 데이터가 저장되고 조회되는 2차원 배열 형태의 저장소 공간. 엔터티, 속성, 인스턴스가 각각 DB가 이해..
데이터 모델과 SQL트랜잭션이란?데이터베이스의 논리적인 연산 단위 혹은 논리적인 업무단위.ex. 쇼핑몰은 고객이 주문을 하면 주문정보를 저장한다. 하나의 주문정보에는 여러 상품이 있어서 주문상세정보로 저장을 한다. 주문 - 트랜잭션주문 정보 저장주문 상세 정보 저장주문 완료! 이를 ERD로 표현해보면, 다음과 같은 결과를 얻을 수 있다. 주문 상세에서는 무조건 주문 정보가 필요하므로 O는 제거해준다.트랜잭션을 ERD를 보고 이해할 수 있느냐가 KEY-POINT! 식별관계 VS 비식별관계식별자관계 : 외래키(빌려온 키-FK)가 PK(식별자)의 일부분인가? - 강한연결관계비식별자관계 : 외래키(빌려온 키-FK)가 PK(식별자)의 일부분이 아닌가? - 약한연결관계IE표기법에서는 식별자관계를 실선, 비식별자관계..
데이터 모델과 SQL정규화란?데이터에 대한 중복을 제거하고 데이터가 관심사별로 처리되도록 엔터티를 나눠서 성능을 향상 시키는 활동. (단, 정규화가 대체적으로 좋은 것이며 경우에 따라서는 반정규화가 더 이득일 수도 있다.)더보기정규화시 입력/삭제/수정(DML)은 성능 향상! 조회는 성능 향상 혹은 저하 될 수 있다! 함수적 종속이란? F(X) = Y정규화를 하기 위해 알아야 하는 개념으로, 어떤 기준 값(컬럼)에 의해 데이터가 종속되는 현상을 의미한다.더보기예시. 결정자(아이디) -> 종속자(이름, 나이, 연봉, 부서, 부서명) : 아이디가 나머지 모든 컬럼을 함수종속한다. 예시. 결정자(부서) -> 종속자(부서명) : 부서가 부서명 컬럼을 함수종속한다. 정규화 과정 상세히 알아보기?차 정규화를 거쳐 ?..
DI(Dependency Injection)객체 간의 의존 관계를 외부에서 설정하고 주입해주는 프로그래밍 패턴으로, 객체가 자신이 의존하는 객체를 스스로 생성하거나 찾는 대신, 외부에서 필요한 의존성을 주입받아 사용한다. 이를 통해 객체 간 결합도를 낮추고 코드의 유연성과 테스트 가능성을 높일 수 있다. DI 컨테이너 의존성 주입을 효율적으로 관리하기 위한 도구(서비스). 객체를 생성하고, 객체 간의 의존 관계를 설정하며, 생명 주기를 관리한다. 내가 지금 프로젝트로 이용하고 있는 .NET에서는 주로 Microsoft.Extensions.DependencyInjection 라이브러리를 사용한다. 장점의존성 관리 용이: 객체 간의 의존 관계를 한 곳에서 관리할 수 있으므로, 코드 유지보수가 쉬워진다.테스..
개요요즘 토이 프로젝트를 진행 중인데, 게임을 만들기 전부터 분산서버로 만들자! 라는 목표가 있었기 때문에 로그인 서버, 로비 서버, 게임 서버를 각각 구축했다. 그런데 로그인 서버에서 로비 서버로의 연결은 순조로웠으나, 로비 서버에서 게임 서버로의 전환은 의문이 들었다. 게임 서버에서는 패킷의 송수신이 로비에 비해 훨씬 많을 거니까 조금 더 욕심을 부려서 로드밸런싱을 거쳐서 여러 게임 서버를 만들면 어떨까...? 하는 생각에... 따라서 로비 서버에서 Nginx를 이용해서 로드 밸런싱을 거친 후 게임 서버로 연결되도록 구현하려 했는데, 분산 서버를 구글링해보면 항상 따라다니는 AWS ECS(Elastic Container Service)가 눈에 밟혔다. 도대체 저건 뭔데 계속 뜨는거야... 그래서 이번..