일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TypeScript
- Javascript
- network
- LeetCode
- Database
- Python
- CS
- DP
- 안드로이드
- 프로그래머스
- Data Structure
- 동적 계획법
- 리트코드
- Algorithm
- react
- java
- Redux
- BFS
- VIM
- vscode
- 그레이들
- 알고리즘
- 백준
- Graph
- frontend
- 다이나믹 프로그래밍
- DFS
- 자바
- git
- db
- Today
- Total
목록CS (40)
늘 겸손하게
정규화 (Normalization) 릴레이션 간 잘못된 종속 관계를 없애 이상 현상을 해결하고 데이터 중복을 줄여 메모리를 효율적으로 사용하기 위해 릴레이션을 분리하는 과정을 정규화라고 한다. 데이터의 중복을 줄이고, 무결성을 향상시키는 방법 가장 큰 목표는 테이블 간 중복된 데이터를 허용하지 않는 것이다. 중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있다. 정규화에는 여러가지 단계가 있지만, 대체적으로 1~3단계 정규화까지의 과정을 거친다. 정규형 원칙 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 하고, 자료의 중복성은 감소해야 하고, 독립적인 관계는 별개의 릴레이션으로 표현해야 하며, 각각의 릴레이션은 독립적인 표현이 가능해..
데이터베이스를 선택할 때 SQL 혹은 NOSQL을 사용할지 고민하게 된다. 보통 Spring은 MySQL와 같은 SQL, Node.js는 MongoDB와 같은 NOSQL을 주로 사용했을 것이다. 하지만 프레임워크에 따라 결정하기보다는 프로젝트에 적합한 데이터베이스를 선택해야한다. 차이점을 알아보자. SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. 데이터는 관계를 통해 여러 테이블에 분산된다. 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서 스..
SQL Injection 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 공격 방법 1) 인증 우회 보통 로그인을 할 때, 아이디와 비밀번호를 Input창에 입력하게 되는데, 비밀번호를 입력함과 동시에 다른 쿼리문을 함께 입력하는 것. 보안이 완벽하지 않은 경우, 같이 입력(주입)된 쿼리문이 데이터베이스에 영향을 줄 수도 있다. 2) 데이터 노출 시스템에서 발생하는 에러 메시지를 이용해 공격하는 방법. 보통 에러는 개발자가 버그를 수정하는 면에서 도움을 받을 수 있는 존재. 해커들은 이를 역이용해 악의적인 구문을 삽입하여 에러를 유발시킨다. 방어 방법 1) input 값을 받을 때, 특수문자 여부 검사하기 로그인 전, 검증 로직을 추가하여 미리 설정..
JOIN 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법 테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 하므로 이를 이용하여 데이터 검색에 활용한다. JOIN 종류 INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN SELF JOIN INNER JOIN : 교집합으로, 기준 테이블과 join 테이블의 중복된 값을 보여준다. LEFT OUTER JOIN : 기준테이블값과 조인테이블과 중복된 값을 보여준다. 왼쪽테이블 기준으로 JOIN을 한다고 생각하면 편하다. RIGHT OUTER JOIN : LEFT OUTER JOIN과는 반대로 오른쪽 테이블 기준으로 JOIN하는 것이다. FULL OUT..