CS/Database
[SQL] TestDome Solution - Users And Roles
문제 The following two tables are used to define users and their respective roles: TABLE users id INTEGER NOT NULL PRIMARY KEY, userName VARCHAR(50) NOT NULL TABLE roles id INTEGER NOT NULL PRIMARY KEY, role VARCHAR(20) NOT NULL The users_roles table should contain the mapping between each user and their roles. Each user can have many roles, and each role can have many users. Modify the provided S..
[SQL] TestDome Solution - Workers
문제 The following data definition defines an organization's employee hierarchy. An employee is a manager if any other employee has their managerId set to this employee's id. That means John is a manager if at least one other employee has their managerId set to John's id. TABLE employees id INTEGER NOT NULL PRIMARY KEY managerId INTEGER name VARCHAR(30) NOT NULL FOREIGN KEY (managerId) REFERENCES ..
인스타그램 (Instagram) 스키마 디자인 - 관계형 데이터베이스로 설계
인스타그램은 사진을 업로드하고, 사람들이 서로 댓글을 달며 서로 follow 관계를 만들 수 있는 사진 SNS 서비스이다. 인스타그램의 간단한 기능들을 구현하기 위해 데이터베이스의 스키마를 디자인하는 실습 과정을 거쳤다. 이번 포스팅에서는 그 과정을 기록한 노션 글을 마이그레이션 한다. 인스타그램 주요 기능 정의 1. 게시물(Post) 작성 기능 인스타그램에서는 여러 개의 사진(A)을 올릴 수 있습니다. 사진을 업로드할 때, 사진을 설명하는 간단한 글(C)이 올라갑니다. 2. 게시물에 댓글 달기 및 좋아요 기능 게시물이 업로드되면 다른 사용자는 이 게시물에 댓글(E)을 달 수 있고, 좋아요(B) 를 눌러 관심을 표할 수 있습니다. 3. 해시태그 기능 게시물에 #감성 #맛집 등의 해시태그(D)를 남길 수 ..
트랜잭션의 특성 - ACID
트랜잭션 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 여러 개의 작업을 하나로 묶은 실행 유닛 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업들을 다 완료해야 정상적으로 종료함 만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단 즉, 작업이 하나라도 실패하면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공 성공 또는 실패라는 두 개의 결과만 존재하며 미완료된 작업없이 모든 작업을 성공해야 함 예를 들어, 은행에서의 계좌이체를 트랜잭션이라고 할 수 있는데, 계좌이체 자체의 구현은 내부적으로 여러 단계로 이루어질 수 있지만 전체적으로는 '송신자 계좌의 금액 감소', '수신자 계좌의 ..