목록TIL(Today I Learned) (64)
개발자공부일기
개발 하는중에 데이터의 n중참조할일이 생겼는데 뭔가 은근히 헷갈리는게 확실히 하고 싶어서 알아봤다. N중 참조는 데이터베이스에서 하나의 테이블이 다른 테이블을 참조하고, 그 참조된 테이블이 다시 다른 테이블을 참조하는 관계를 의미합니다. 이런 관계는 특히 데이터가 여러 단계로 연결되어 있을 때 유용하게 사용됩니다.이제 각 단계를 좀 더 자세히 설명하고, 이를 JavaScript와 Prisma를 활용해 어떻게 구현하는지 하나씩 살펴보겠습니다.1. 외래 키 관계 기본 개념외래 키 (Foreign Key)외래 키는 한 테이블의 필드가 다른 테이블의 기본 키를 참조하는 관계입니다. 예를 들어, User 테이블에 departmentId라는 필드가 있다고 할 때, 이 필드는 Department 테이블의 id를 참조..
오늘은 데이터스키마를 작성하는 도중 팀원분이 들고오시기도 했고 예전에 정보처리기사 준비할때 배웠던 것들인데 오래돼서 기억도 잘 안나고 정확히 잘 모르는거 같아서 정규화라는 것에 대해서 조사하게 되었습니다. 정규화의 목적중복 제거: 동일한 데이터가 여러 테이블에 반복되지 않도록 설계.데이터 무결성: 데이터가 정확하고 일관되게 유지되도록 설계.이상 현상 방지:삽입 이상: 데이터를 추가할 때 불필요하거나 누락된 정보를 요구하지 않도록 설계.삭제 이상: 데이터를 삭제할 때 다른 관련 데이터가 함께 사라지지 않도록 설계.갱신 이상: 데이터를 수정할 때 여러 곳에서 수정하지 않도록 설계. 데이터베이스 정규화의 단계(1NF ~ 6NF)정규화는 데이터 중복을 최소화하고, 데이터 무결성을 유지하며, 효율적인 데이터베이스..
오늘 팀프로젝트를 위해 API명세서를 작성했는데 올바르지 않은 명세서라고 반려당했다. 그래서 확실하게 아는것같지않아서 더 자세히 알아보려 한다. RESTful API란 무엇이며, 왜 탄생했는가?RESTful API는 Representational State Transfer(REST) 원칙을 기반으로 설계된 API입니다. REST는 2000년 Roy Fielding의 박사 논문에서 처음 정의된 개념으로, 웹 아키텍처의 일관성과 효율성을 극대화하기 위해 제안되었습니다. RESTful API는 이 원칙을 구현한 API를 말하며, 단순히 HTTP를 사용하는 것만으로는 RESTful하다고 할 수 없습니다.RESTful API는 리소스를 중심으로 설계된 구조와 HTTP의 표준 사용을 통해 클라이언트와 서버 간의 통..
예전에 DOM의 개념에 대해서는 글을 썼던거 같은데 자세히 메서드까진 다룬적이 없는거 같아서 복습겸 알아봤다. DOM(Document Object Model)은 HTML과 XML 문서의 구조를 나타내는 객체 모델입니다. DOM을 통해 JavaScript는 HTML 문서와 상호작용하고, 문서의 요소를 변경하거나 조작할 수 있습니다. DOM은 웹 페이지를 동적으로 수정할 수 있도록 만들어져 있으며, 페이지 로드 후에도 JavaScript로 실시간으로 페이지를 업데이트할 수 있게 해줍니다.1. DOM의 기본 개념DOM은 문서의 구조를 트리 형태로 표현하며, 각 HTML 태그나 요소는 DOM 트리의 노드로 나타냅니다. DOM 트리에서 루트는 태그이고, 그 아래에 여러 자식 노드가 있습니다. 예를 들어: ..
아이템 구매 API를 만드는데 만만치가 않다. 아이템을 구매하면 어떤 아이템을 구매할건지, 어떤 캐릭터가 구매하는지 조회하고아이템의 가격과 갯수만큼 캐릭터의 잔액을 차감시키고 아이템이 인벤토리에 속하도록 구현하고 있는데 아이템의 칼럼안에 어떤 인벤토리에 들어가있는지 인벤토리ID를 넣어서 표현했는다. 근데 생각해보니 그렇게 하면 다른 캐릭터로 동일한 아이템을 구매하면 그 아이탬의 인벤토리ID가 바뀌어서 존재하는 모든 아이템을(다른캐릭터의 인벤토리에 들어있는거 포함)가져오게 되더라. 그래서 스키마를 갈아 엎어야겠다.model CharInventory { charInvenId Int @id @default(autoincrement()) @map("charInvenId") charId I..
Prisma에서 트랜잭션을 사용하는 방법과 작동 방식을 더 자세히 설명하겠습니다. 트랜잭션의 개념, Prisma에서의 구현 방식, 코드 동작 원리, 유용한 기능, 그리고 실제 사용 사례까지 구체적으로 다룹니다. 트랜잭션의 기본 개념트랜잭션은 데이터베이스에서 여러 작업을 하나의 단위로 묶어서 실행하는 것입니다.모든 작업이 성공하면 커밋(Commit)되고, 하나라도 실패하면 롤백(Rollback)되어 데이터베이스가 원래 상태로 돌아갑니다.트랜잭션은 데이터베이스의 ACID 속성을 보장합니다:Atomicity(원자성): 작업은 모두 성공하거나 모두 실패해야 합니다.Consistency(일관성): 트랜잭션 후에도 데이터는 유효한 상태를 유지해야 합니다.Isolation(격리성): 한 트랜잭션의 작업이 다른 트랜잭..
OSI 7계층(Open Systems Interconnection 7-Layer Model)은 네트워크 통신을 이해하고 설계하는 데 중요한 이론적 모델로, 각 계층이 맡는 기능을 명확하게 구분하여 복잡한 네트워크 시스템을 관리하기 쉽게 만듭니다. OSI 모델은 국제 표준화 기구인 ISO(International Organization for Standardization)에서 정의하였으며, 네트워크 통신을 7개의 계층으로 나누어 설명합니다. 이 모델은 각 계층이 명확한 역할을 가지며, 각 계층에서 발생하는 기능을 잘 이해하고 디버깅할 수 있도록 돕습니다.각 계층의 기능과 동작 방식에 대해 더 자세히 설명하겠습니다.1. 물리 계층 (Physical Layer)기능:물리 계층은 네트워크 장비 간의 실제 전송 ..
express-session은 Express.js 애플리케이션에서 세션을 관리하기 위한 미들웨어입니다. 세션은 사용자가 웹사이트에 접속한 후, 서버와 사용자 간에 상태 정보를 유지할 수 있게 해줍니다. 예를 들어, 로그인 상태나 장바구니 정보를 저장하는 데 유용합니다.주요 개념세션 (Session): 서버 측에서 클라이언트와 관련된 정보를 저장합니다. 각 클라이언트는 고유한 세션 ID를 가지고 있으며, 이 ID는 쿠키로 클라이언트 측에 저장됩니다.세션 ID: 클라이언트와 서버 간의 세션을 식별하는 고유한 값입니다.세션 데이터: 사용자의 세션에 저장되는 실제 데이터입니다. 예를 들어, 로그인한 사용자 정보나 사용자의 활동 기록이 포함될 수 있습니다.기본 사용법설치 먼저 express-session을 설치합..