본문 바로가기

전체 글

(97)
4.3 트랜잭션과 무결성 4.3.1 트랜잭션 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며 데이터베이스에 접근하는 방법은 쿼리이므로 여러 개의 쿼리들을 하나로 묶는 단위를 말함 원자성, 일관성, 독립성, 지속성이 있으며 한꺼번에 ACID 특징이라 한다. 원자성 원자성은 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징 트랜잭션을 커밋하는데 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것 ex) 1000만원을 가진 홍철이 0원인 규영이에게 500만원을 보내면 홍철 잔고 조회 홍철에게서 500만원 뺀다. 규영에게 500만원 넣는다. 1~3의 poeration 중 데이터베이스 사용자는 이 세가지의 과정을 볼수도 참여할 수도 없다. 이 과정이 모두 끝..
4.2 ERD와 정규화 과정 ERD는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며 릴레이션 간의 관계들을 정의한 것이다. 서비스를 구축한다면 가장 먼저 신경써야 하는 부분이다. 1) ERD의 중요성 ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다. DB를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다. 그러나 ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 있다. 2) 정규화 과정 정규화 과정은 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 ..
[프로그래머스 JavaScript] 올바른 괄호 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(s){ const stack = new Array(); for(let i of s){ if(stack.length === 0){ if(i==='('){ stack.push('('); }else return false } else{ if(i==='('){ stack.push('('); } else{ let check = stack.pop(); if(check===')..
[프로그래머스 파이썬] 올바른 괄호 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): stack = [] for i in s: if not stack: if i == ')': return False else: stack.append('(') else: if i == '(': stack.append('(') else: if stack.pop() == ')': return False if stack: return False else: return True..
[백준 JavaScript] 2606번 바이러스 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net dfs로 풀면 됩니다! dfs함수 만들어서 dfs 재귀로 풀어도 되는데 파이썬에서 항상 push, pop으로 풀어서 이렇게 풀었습니다. const inputs = require("fs").readFileSync("/dev/stdin").toString().split("\n"); const node = Number(inputs[0]); const num = Number(inputs[1]); const a..
4.1 데이터베이스의 기본 데이터베이스는 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음이다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 데이터베이스는 실시간 접근과 동시 공유가 가능하다. 데이터베이스 위에 DBMS, 그 위에 응용 프로그램이 있으며 이러한 구조를 기반으로 데이터를 주고 받는다. MySQL이라는 DBMS가 있고 그 위에 응용프로그램에 속하는 Node.js나 php에서 해당 데이터베이스 안에 있는 데이터를 끄집어내 관련 로직을 구축한다. 4.1.1 엔터티 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미 ex) 회원이라는 엔터티가..
[백준 JavaScript] 11726번 2×n 타일링 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 2->2 3->3 4->5 5->8 solve(n) = solve(n-1) + solve(n-2) const input = require("fs").readFileSync("/dev/stdin").toString(); const num = Number(input); const solve = (N) => { if (N === 1) { return 0; } else if (N === 2) { return 2; } else..
[백준 JavaScript] 9095번 1,2,3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net const inputs = require("fs").readFileSync("/dev/stdin").toString().split('\n').map(v => Number(v)); const solve = (N) => { if (N === 1) { return 1; } else if (N === 2) { return 2; } else if (N === 3) { return 4; } return solve(N - 1) + solve(N - 2) + solve(N - 3); }; for (let i ..