데이터베이스(4)
-
[MongoDB University] 정리
파이프라인 : $match(일치모양골라내기) -> $project(형태변형) -> $group(단일파일로만들어전체에대한비율계산) Stages cannot be configured to produce our desired output. This is definitely not correct. Stages can be configured in almost any way we desire. Pipelines must consist of at least two stages. This is not correct. Pipelines must consist of at least one stage, and can have many stages. Documents flow through the pipeline, pass..
2021.02.01 -
[npm] Sequelize X MySQL 에서 헷갈리거나 어려울만한 것 정리
👍 기본 개념 1. Sequelize는 ORM이다. 2. ORM이란, Object-Relational Mapping의 약자로 JavaScript의 자료형인 "Object"와 실제 DB에 저장된 "Relation"을 "대응(Mapping)"시켜주는 도구를 말한다. 3. Sequelize와 연결될 수 있는 DB는 관계형 DB면 상관없다. 만약 MySQL DB와 연결하려면 npm mysql2를 설치해야 한다. 4. MySQL은 오픈소스 관계형 DBMS이다. 5. 우리가 하려는 것은 다음과 같다. 웹 서비스의 데이터들 간에 관계가 명확하므로 관계형 데이터베이스를 사용할 것임 그리고 그 관계형 데이터베이스를 조작하기 위해 오픈소스 DBMS인 MySQL을 사용할 것임 그리고 그 DBMS를 Node.js & Expr..
2020.10.26 -
[반정규화] 테이블 분할의 단점 (Feat. 정규화vs반정규화)
👍 테이블 분할이란? 정규화 != 테이블분할(반정규화의 방법 중 하나) 데이터의 무결성을 확보하기 위해서는 정규화를 실시하는 것이 일반적이지만, 오히려 정규화 때문에 쪼개진 테이블이 서로 연산하기 위해 트랜잭션이 증가하여 비용이 높게 청구된다면, 무결성을 포기하는 대신 반정규화를 실시하게 된다. 그런데 여기서 혼동의 우려가 있는데, 정규화도 테이블을 쪼개는 과정이지만, 반정규화에도 "테이블 분할"이라는 방식이 존재한다는 것이다. 그래서 차이점을 정확히 알아야 한다. "정규화"로서의 테이블 쪼개기와 "반정규화의 테이블 분할"로서의 테이블 쪼개기는 각각 유형이 따로 정해져 있다. 정규화로서의 테이블 쪼개기는 테이블이 원자성을 보유하거나, 부분함수종속성/이행함수종속성을 탈피하도록 각각의 단계에 맞추어 테이블을..
2020.08.03 -
논리데이터 모델 -> 물리데이터 모델 변환
데이터베이스의 논리적 설계 단계에서는, 개념적 설계에서 등장한 ER다이어그램을 "데이터 모델링"을 통해 관계형 릴레이션으로 변환하는 Mapping 과정을 거친다. 그리고 이렇게 등장한 관계형 릴레이션을 실제로 DBMS를 통해 컴퓨터 디스크에 저장시킬 때는 각각 다음과 같은 물리적 형태로 대응된다. 논리적 설계(데이터 모델링) 물리적 설계 데이터베이스 엔티티(Entity) 테이블 테이블 속성(Attribute) 칼럼 칼럼 주 식별자(Primary Identifier), UID 기본 키(Primary Key) 기본키 외래 식별자(Foreign Identifier) 외래 키(Foreign Key) 외래 키 관계(Relationship) 외래 키 -
2020.08.02