일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Express
- 웹소켓연결
- java
- git
- iam사용자
- Database
- javascript
- gitlab
- nvmrc
- aws
- 클라우드
- class
- 패키지설치에러
- Github
- openaiapi
- 호스팅영역
- gpt3.5turbo
- 노드버전
- 웹소켓연결끊김
- GPT3.5
- ChatGPT
- 버킷생성
- db
- chatGPTAPI
- 클래스
- gptapi
- aiapi
- 자바
- 웹소켓재시작
- nodejs
- Today
- Total
목록Study/관계형 데이터 베이스 실전 입문 (9)
IT's Jenna
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bslEnJ/btq8jJRx31x/j9UI286SVG7nAyRQHckub1/img.png)
그래프란? 그래프의 종류 SQL과 그래프 그래프에 대한 쿼리 트리 RDB에서 그래프를 다루기는 매우 어렵습니다. 이전장에서 설명한 이력 데이터와 마찬가지로 그래프는 관계형 모델로 표현하기 굉장히 어려운 구조로 되어있죠. 하지만 늘 그렇듯이 우리는 방법을 찾아야 하고 이번장에서는 그 방법들을 설명해보도록 하겠습니다. 그래프란? 우선 그래프란 무엇인지를 먼저 알아야겠죠? 그래프란 노드와 에지 두 가지 요소를 이용해서 사건의 관련성등을 표현할 수 있는 수학적인 데이터 구조를 의미합니다. 그래프는 여러 개의 노드가 에지로 연결된 구조로 되어 있습니다. 위 그림에서 노드 a와 b를 연결하는 에지를 ab라고 표현합니다. 그래프는 다양한 성질을 가질 수 있는데 각각에 대해서 한번 알아봅시다! 1. 인접 노드와 노드사..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bHZEZb/btq6Vsbytzf/Bc3X06KqQdZiKkm9vprvEk/img.png)
이력 데이터란? 이력 데이터의 문제점 해결방법 미래 가격 설정 이전장까지 우리는 관계형 모델에 대해서 알아보았습니다. 이제 관계형 모델을 벗어나서 데이터를 취급하는 방법을 알아보도록 하겠습니다. 그 첫 번째는 바로 이력 데이터를 이해하는 것입니다. 이력 데이터란? 이력 데이터는 과거부터 현재까지의 데이터가 저장된 것을 의미합니다. 다시 말해 데이터가 변화할 때마다 그 변화 내역을 모아둔 데이터라고 할 수 있습니다. 주로 구매이력, 가격 이력, 프로그램 조작 이력 등이 이력 데이터에 속합니다. 이력 데이터의 문제점 그런데 관계형 모델에서 이력 데이터를 다루기란 상당히 어렵습니다. 우선 이력 데이터는 릴레이션의 요건을 만족하지 않습니다. 릴레이션이란 집합이라고 설명했습니다. 그리고 집합의 요소들 간에는 순서..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c7VDj1/btq6impXgU4/J2rYEEQRnWuP6J08beLYOK/img.png)
SELECT의 역할 다양한 SELECT 활용법 관계형이 아닌 조작 들여 쓰기 1. SELECT의 역할 이 책에서 SELECT는 SQL의 심장부라고 설명한다. 백엔드 엔지니어로 근무하고 있는 나도 이 말에 전적으로 동의하는 바이다! SELECT는 RDB에서 데이터를 가져오는 유일한 수단이다. SELECT의 기본 구조는 다음과 같다. SELECT 칼럼의 목록 FROM 테이블의 목록 WHERE 검색 조건 2. 다양한 SELECT 활용법 SELECT가 단순히 데이터만 불러오는 것이라면 SQL의 심장부라고 할 수 없었을 것이다. SELECT에는 기본형 외에도 다양한 활용법이 존재한다. a. 집계 함수 SELECT문에 집계 함수가 있으면 SELECT의 결과가 데이터 자체가 아니라 집계 결과가 된다. 여러 가지 집계..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/5tfA9/btq6htvpsSg/YoB4SjhpPlH7TwGI7eEuwK/img.png)
NULL이란? NULL을 사용하면 안 되는 이유 NULL의 대책 1. NULL이란? 칼럼의 값을 모를 때 사용하는 표식으로, 값이 존재하지 않거나 분명하지 않음을 나타낸다. 흔히들 NULL값이라고하지만, 이것은 잘못된 표현이다. NULL이 들어있는 속성 값은 존재하지 않는 것이며 NULL은 값이 없다! NULL값이 아니라 단순히 NULL이라고 표현하도록 하자. 2. NULL을 사용하면 안되는 이유 a. 연산 불가 NULL은 연산자로 비교할 수 없다. 예를 들어 table.attribute == NULL 연산은 불가하다. SQL에서 NULL인지 아닌지에 대한 판단은 IS NULL 또는 IS NOT NULL로 가능하다. 일반적으로 쿼리를 이용해서 칼럼의 값을 비교하거나 쿼리 연산으로 값을 가공하는데, NUL..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wjAbQ/btq5ZkNm7Ia/qlFA0oiNLKGOaq41wCbuV0/img.png)
도메인이란? 도메인 설계 전략 SQL로 도메인 표현 1. 도메인이란? 도메인이란 관계형 모델에서 속성의 데이터형을 의미한다. 즉 속성 값이 가질 수 있는 값들의 집합이라고 볼 수 있다. 도메인의 설계는 DB의 설계에 있어 시작이며 가장 큰 기반이 된다. 관계형 모델상에서 도메인의 데이터형에 대한 제한은 없지만 SQL상에서는 제한되어 있다. 2. 도메인 설계 전략 도메인의 설계에는 정규화 이론처럼 정해진 답이 있는것이 아니다. 결국은 DB 설계자의 주관에 따라 결정된다. 주관적인 판단에 기반하더라도 최대한 효율적으로 도메인을 설계하는 전략을 알아보자. a. 어플리케이션에 대한 이해 어떤 데이터가 필요한지 결정하는 것은 애플리케이션이다. 필요한 데이터가 무엇인지 모른다면 도메인 설계는 할 수 없다. 즉, 데..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bj8qkD/btq5SbPzYz9/ywfdnIfP1T0AS5DuD1zFWk/img.png)
직교성이란? 직교화전략 이전까지는 하나의 릴레이션 안에서 발생할 수 있는 중복에 대해 설명하였다. 이번장에서는 여러 개의 릴레이션간에 발생할 수 있는 중복의 경우와 그 해결방법에 대해 알아보자. 1. 직교성이란? 직교란, 두 개 이상의 릴레이션이 같은 값을 갖지 않는 상태를 말한다. 그렇다면 같은 값을 가진 릴레이션의 경우들과 그 해결방법에 대해 알아보자. CASE 1. 두 릴레이션이 모두 동일한 속성을 가지고 있더라도 그 안에 들어가는 튜플의 값이 모두 다르면 해당 릴레이션들은 직교한다. 이때 속성들 간에 같은 값을 가지고 있는지 여부는 JOIN을 이용하면 쉽게 파악이 가능하다. 같은 값이 없다면 공집합이 출력되기 때문이다. CASE 2. 두 릴레이션의 일부 속성이 일치하고 해당 속성의 튜플 값들이 일..