현재 참여하고 있는 프로젝트에서 샌드버드 같은 채팅 SDK를 만들고 있다. 프론트로 참여하고있지만 우연한 기회로 API 설계와 ERD 설계에 모두 관여하게 되어 ERD설계중 고려했던 사항을 포스트로 남겨두려고 한다. 먼저 설계한 API는 이 주소에서 확인할 수 있다.https://rakuraku.gitbook.io/rakuraku-docs/api-docs/authentication1대1 채팅과 그룹 채팅을 모두 지원하고 싶었고 실시간성을 유지하며 파일 공유가 가능하게끔 해야했다. 처음에는 사용자 정보, 채팅방 정보, 메시지 정보를 저장하기 위해 단순히 가장 기본적인 테이블인 users, chat_rooms, messages 테이블을 만들었다. 각각 사용자의 고유 정보를 관리하고, 채팅방을 정의하며, 메..
Database
https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-db-%EC%84%A4%EA%B3%84-%EC%9E%85%EB%AC%B8/dashboard이 글은 인프런 박재성님의 DB설계 강좌를 수강하고 정리한 포스트입니다.정형적인 질문과 답변QuestionRDBMS 에서 데이터 모델링을 할 때는 어떤 점을 유의해야할까요? Answer관계형 DB모델링에 있어서는 정규화를 통해 데이터 중복을 최소화해야합니다. 그래야 삽입 이상, 수정 이상, 삭제 이상과 같은 이상현상을 방지하고 데이터 무결성을 지킬 수 있습니다..! 이렇게 이론적으로 제 1정규화, 2정규화, 3정규화, 무결성 등등의 이론을 숙지하고 원론적인 답변을 할 수 있더라도 막상 실제 프로..
요약ORM 이란 Object Relational Mapping 의 약자로 OOP 프로그래밍으로 작성되어있는 클라와 SQL방식의 테이블 형태로 저장되어있는 데이터를 맵핑하는 역할을 수행합니다.부가 설명 DB에 저장된 데이터는 테이블로 이루어진 다소 1차원적인 반면 클라쪽에서는 OOP 프로그래밍이 자리잡으면서 DB와 클라간 간극이 생겼다. 데이터를 저장하고 가져옴에 있어 둘 사이의 브릿징 역할을 해주는 것이 바로 ORM이다. DB에 있는 테이블을 객체로 보고, 테이블의 각 칼럼을 멤버 변수로, 꼬리에 있는 칼럼을 또다른 테이블(객체)의 컴포지셔닝으로 맵핑하는 역할을 수행한다. ORM은 크게 Schema Object, Query Builder, Migration Tool 3가지로 구성되어있다. Schema ..