[이 글은 기존 github 블로그에서 작성해 티스토리로 옮긴 글입니다.] 정규화 normalization 이상현상이 발생하는 릴레이션을 분해하여 이를 없애는 과정. 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분할 수 있다. 제 1 정규형 A relation in which the intersection of each row and column contains one and only one value. 릴레이션의 모든 속성 값이 원자값을 가지면 제 1 정규형이라고 한다. 🛠 정규형 변환 제 2 정규형 A relation that is in first normal form and every non-primary key attribute is fully functionally dependent ..
[이 글은 기존 github 블로그에서 작성해 티스토리로 옮긴 글입니다.] 이상현상 Anomaly 💡 잘못 설계된 테이블로 데이터 조작(삽입, 삭제, 수정)을 하면 일어난다. 😈 삭제이상 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 😈 삽입이상 튜플 삽입 시 특정 속성에 해당하는 값이 없어 NULL값을 입력해야하는 현상 😈 수정이상 튜플 수정 시 조건을 잘못 주어서 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 함수 종속성 어떤 속성A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계 A→B: A는 B의 결정자. ⚠️ 결정자는 단일 속성일 수도, 복합 속성일 수도 있다! 표현) x → y : y는 x의 함수 = y는 x에 함수적으로 종속 = y는 ..
데이터베이스 프로젝트에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것 - 데이터베이스 개론 개념 integrated data: 중복을 최소화함으로써 데이터 불일치 현상을 없앤다 stored data: 컴퓨터 저장장치에 저장된 데이터 operationl data: 프로젝트의 목적을 위해 사용되는 데이터 shared data: 여러 사람이 동시에 사용할 수 있다 특징 real time accessibility: 사용자가 요청하는 순간에 실제 데이터를 서비스 continuous change: 삽입, 삭제, 수정등으로 바뀐 데이터값 저장 concurrent sharing: 동시에 여러 사용자가 데이터 요청가능 reference by content 데이터 구조 외부 단계- 외..
[이 글은 기존 github 블로그에서 작성해 티스토리로 옮긴 글입니다.] 😷 올해도 코로나 올해도 코로나는 끝나지 않았다… 이제는 ‘곧 끝나겠지’라는 생각도 들지 않지만 ‘언젠간 끝나겠지’라는 마음이다. 언젠가 끝날 때까지 모두 건강하길! 🖥 Mac mini M1 사용기 10년 동안 쓴 데스크탑을 보내주고 MacOS를 체험해 보고 싶어서 Mac mini M1을 선택했다. 일단 맥북보다 가격이 낮았고(옵션을 추가했더니 원래 가격보다 더 올라갔지만) 발열, 소음이 거의 없었다. 1년 동안 사용하면서 성능도 만족한다. 다만 아직 개발 생태계에서 지원해 주지 않는 곳이 아직 있을 수 있다. 가끔 개발환경 세팅하거나 이전에 썼던 툴이 설치가 안 되거나 실행이 안 된다면 ‘이걸 M1이 또..?‘라고 생각된다. 하..
Floyd Warshall 그래프의 모든 노드 쌍에 대한 최단거리를 구하는 알고리즘 모든 지점끼리의 거리를 구한다. 다이니믹 프로그래밍 기반이다. A->B로 다이렉트로 가는 경로와 A->k->B 경유해서 가는 경로를 비교해서 더 비용이 작은 경로의 값으로 갱신한다. 시간복잡도: O(V^3) 구현 INF = int(1e9) def floyd(graph, n): for k in range(1, n+1): for i in range(1, n+1): for j in range(1, n+1): graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]) n, m = map(int, input().split()) # 노드, 간선 개수 graph = [[INF] * (n+1..
Dijkstra {{}} 특정 시작점에서 다른 모든 정점으로 가는 최단 거리를 각각 구해주는 알고리즘 {{}} A도시에서 D도시로 가는 최단 비용(거리, 시간, 돈)을 구하는 문제에 적합한 알고리즘. ⚠️ 음수 가중치 간선이 있는 그래프에서는 쓸 수 없다. 시간복잡도 우선순위 큐⭕️ O(ElogV) 우선순위 큐❌ O(V^2) 구현 import heapq INF = int(1e9) def dijkstra(start): queue = [] heapq.heappush(queue, (0, start)) distance[start] = 0 while queue: dist, node = heapq.heappop(queue) for v, c in graph[node]: cost = dist + c if cost < ..