![[알고리즘] 그래프 위상 정렬(Topological sorting)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr4M3a%2FbtsB17QpJRA%2FJJkjZ6lnZBx6msEPpADFw1%2Fimg.png)
이 글은 이것이 자료구조+알고리즘이다 with C 언어(저자:박상현) 책 내용을 개인적으로 정리하는 글임을 알립니다. 위상 정렬 위상 : 어떤 정점이 다른 정점과의 관계 속에서 가지는 위치 이 말은 그래프 내 서로 인접한 정점 사이의 관계에 위치라는 속성이 존재한다는 뜻이다. 이 위치는 앞/뒤일 수도 있고, 위/아래일 수도 있다. 이 글에서는 앞/뒤 관계라고 가정한다. 앞:간선을 뻗어내는 정점 뒤: 간선을 받아들이는 정점 이 앞/뒤를 차근차근 정렬하는 작업이 위상 정렬이다. 위상 정렬은 순서가 정해져 있는 작업을 차례로 수행해야 할 때, 그 순서를 결정해 주기 위해 사용한다. 위상 정렬은 여러 개의 답이 존재할 수 있다. 위상 정렬의 시간복잡도 V = 정점의 개수, E = 간선의 개수 O(V + E) 위..
![[자료구조] 그래프(Graph)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGQ50Y%2FbtsB6O28n3o%2FsTHpEAMHPP4aNvATflssY1%2Fimg.png)
그래프의 정의 그래프는 트리를 포함하는 개념이고, 트리는 사이클을 포함하지 않는 그래프라고 볼 수 있다. 그래서 모든 트리는 그래프이지만, 모든 그래프는 트리가 아니다. 그래프는 정점의 모음과 간선의 모임이 결합한 것이다. 정점 자체는 아무것도 아니지만 이들이 간선을 통해 서로 연결되면 관계가 형성되고 이로 인해 그래프가 만들어진다. 인접 (adjacent) : 간선으로 연결된 두 정점을 가리켜 서로 인접 또는 이웃 관계에 있다고 말한다. (A, B), (A, D), (A, E), (B, C), (B, E), (C, D)가 서로 이웃 관계 경로(Path) : 정점 A에서 정점 C까지는 A, B, C와 A, D, C가 각각 하나의 경로 경로의 길이 : 정점과 정점 사이에 있는 간선의 수 경로 A, B, C..
![[DB 이론] 데이터베이스 정규화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpi8q4%2FbtsBGDAF9Tm%2FsoQOFS2fuUOyTqzfiI77ZK%2Fimg.png)
이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다. 정규화의 개념과 이상 현상 정규화(Normalization)의 개념 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 부작용이 발생할 수 있다. 이러한 현상을 이상(anomaly) 현상이라 한다. 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정이 정규화다. 정규화는 데이터베이스를 설계 결과물을 검증하기 위해 사용하기도 한다. 이상 현상의 종류 이상 현상에는 갱신 이상(Modification Anomaly), 삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly)이 있다. 위 릴레이션은 고객들이 이..
![[DB 이론] 데이터베이스 설계](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG0TYm%2FbtsBCaZWCds%2FMOz8xfgkXtvfKXdwkd0BR0%2Fimg.png)
이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다. 데이터데이스 설계 단계 데이터베이스 설계는 사용자들의 요구 사항을 고려하여 데이터베이스를 생성하는 과정이다. 사용자가 데이터베이스를 실제로 사용하면 구조를 변경하기 어렵기 때문에 설계 과정에서부터 품질 좋은 데이터베이스를 생성해야 한다. 품질 좋은 데이터베이스를 평가하는 기준은 실제로 사용하는 구성원들의 요구사항을 만족하는지가 대표적인 기준이 된다. 관계 데이터 모델을 기반으로 두고 데이터베이스를 설계할 때는 두 가지 방법을 주로 사용한다. E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계 정규화를 이용한 데이터베이스 설계 이 글에서는 E-R 모델과 릴레이션 변환 규칙을 이용한 데이터베이스 설계를 다룬다...
![[DB 이론] 관계 데이터 모델](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfroxE%2FbtsBzyfQ19M%2F0GVQJVBnTEaKxodm3FCQ21%2Fimg.png)
이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다. 관계 데이터 모델의 개념 관계 데이터 모델의 기본 용어 Entiti, Table, Relation 엔터티 = 테이블 = 릴레이션으로 통칭해서 사용되기도 한다. DB의 설계 단계에서는 엔터티(Entity), DBMS로 구현되는 단계에서는 테이블(Table), 개념 단계에서 엔터티 간 연관관계를 릴레이션(Relation)이라고 한다. 엔티티 > 테이블 > 릴레이션 순으로 보면된다. 모든 릴레이션은 테이블이지만, 모든 테이블이 릴레이션인 것은 아니다. 모든 테이블은 엔티티이지만, 모든 엔티티가 테이블인것은 아니다. 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션(relation) 하나에 담아 데이터 베이스에 ..
![[DB 이론] 데이터베이스 모델링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBLYfL%2FbtsByy0zicd%2FGAgb0qw6zKr08KHM7nIvz0%2Fimg.png)
이 글은 데이터베이스 개론 (저자 김연희)의 내용을 개인적으로 정리하는 글임을 알립니다. 데이터 모델링과 데이터 모델의 개념 데이터 모델링 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정을 데이터 모델링이라 한다. 현실 세계의 데이터를 컴퓨터 세계의 데이터베이스로 한 번에 옮기기는 쉽지 않다. 추상화 : 현실 세계의 데이터 중에서 중요한 데이터를 선별하는 작업 사람의 머릿속에 있는 현실 세계의 데이터 중에 중요한 데이터를 찾아 개념 세계로 옮기는 단계와 이를 컴퓨터 세계에 저장하는 구조를 결정해서 표현하는 단계로 나누어 진행한다. 개념적 모델링 : 현실 세계의 데이터 중에 중요한 데이터를 찾아 개념 세계로 옮기는 단계 논리적 모델링 : 개념 세계의 데이터를 데이터베이스에 저장..
![[MySQL] 인덱스(Index)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCLZmA%2FbtsBjPhhDTy%2FbkMHkuwNK7rIYyBs2HxjK0%2Fimg.jpg)
이 글은 혼자 공부하는 SQL(저자 : 우재남)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 인덱스(index)는 데이터를 빠르게 찾을 수 있도록 도와주는 도구로, 실무에서는 현실적으로 인덱스 없이 데이터베이스 운영이 불가능하다. 인덱스에는 두 가지 종류가 있다. 클러스터형 인덱스(Clustered Index) 보조 인덱스(Secondary Index) 인덱스의 개념 책을 예로 들어보면 책의 내용 중 'UNIQUE'에 대해서 찾아보고 싶다면 제일 뒤에 수록되어 있는 찾아보기를 찾아보는 것이다. 찾아보기는 ABC 또는 가나다 순으로 이미 정렬되어 있어 'U' 부분을 살펴보면 쉽게 'UNIQUE' 단어를 찾을 수 있고, 단어 옆에 본문의 페이지 번호가 적혀 있어서 원하는 내용으로 빨리..
![[MySQL] 뷰(View)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5nihl%2FbtsBgyA3HSy%2F6FwkBH5vIGkXgJGSkyKlY0%2Fimg.jpg)
이 글은 혼자 공부하는 SQL(저자 : 우재남)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 뷰는 데이터베이스 개체 중에 하나이다. 모든 데이터베이스 개체는 테이블과 관련이 있지만, 특히 뷰는 테이블과 아주 밀접하게 연관되어 있다. 뷰는 한 번 생성해 놓으면 테이블이라고 생각해도 될 정도로 사용자들의 입장에서는 테이블과 거의 동일한 개체로 취급한다. 뷰는 테이블처럼 데이터를 가지고 있지 않다. 뷰의 실체는 SELECT 문으로 만들어져 있기 때문에 뷰에 접근하는 순간 SELECT가 실행되고 그 결과가 화면에 출력되는 방식이다. 뷰와 테이블의 관계는 바로 가기 아이콘과 실제 프로그램의 관계와 유사하다. 뷰는 단순 뷰와 복합 뷰로 나뉜다. 단순 뷰 : 하나의 테이블과 연관된 뷰 복합 뷰..