일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 동적 프로그래밍
- 완전탐색
- 백준
- 그래프
- 코딩테스트준비
- Java
- lower bound
- 우선순위큐
- 프로그래머스
- 개발자취업
- 항해99
- 스프링
- BinarySearch
- 네트워크 계층
- BFS
- DFS
- Til
- 백트래킹
- 자바
- 브루트포스
- 그리디
- 그래프 이론
- 트리
- Spring
- DP
- 정렬
- 스프링 핵심 원리 - 기본편
- 알고리즘
- 데이터베이스
- 99클럽
- Today
- Total
목록DataBase (6)
AtraFelis's Develop Diary
정규화란 이상 현상이 발생하지 않도록, 릴레이션을 분해하는 과정이다. 데이터베이스의 이상현상에 관해서는 이전 글에서 다룬 바 있으므로 궁금하다면 그 글을 참고하길 바란다.정규화는 릴레이션을 분해하는 과정이라고 말했다. 그렇다면 어떤 기준에 의해서 릴레이션을 분해하는 기준도 분명히 있을 것이다. 아무렇게나 릴레이션을 쪼갠다고 이상 현상이 해결되지는 않을 것이니까.이 정규화를 수행하는 기준이 바로 함수적 종속성이다.함수 종속함수 종속(Functional Dependency)란 데이터베이스 릴레이션에서 속성들 간의 관계를 나타내는 제약 조건으로, 특정한 속성이 다른 속성을 고유하게 결정하는 관계를 의미한다.$$X → Y$$X가 Y를 함수적으로 결정한다Y가 X에 함수적으로 종속되어 있다. 여기서 $X$를 결정자..
불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용을 이상 현상이라고 한다. 이런 이상 현상을 제거하기 위해 릴레이션을 분리하는 것을 정규화라고 한다. 정규화에 관한 내용은 다음 포스트에 다룰 예정이다.이상 현상은 각 연산에 대응하여 세 가지가 존재한다.삽입 이상 : 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제다음과 같은 학생-강의 릴레이션이 존재한다고 가정해보자.StudentIDStudentNameLectureIDLectureNameS001홍길동L001데..
관계 데이터베이스의 대표적인 설계 방법은 E-R모델과 릴레이션 변환 규칙을 이용하거나, 정규화를 이용하여 설계하는 방법이 있다. 지금은 전자의 방법을 이용하여 관계 데이터베이스를 설계하는 방법을 알아보려고 한다.E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정은 아래와 같다.요구 사항 분석데이터베이스 용도 파악결과물 : 요구 사항 명세서개념적 설계DBMS에 독립적인 개념적 구조 설계결과물 : 개념적 스키마 (E-R 다이어그램)논리적 설계DBMS에 적합한 논리적 구조 설계결과물 : 논리적 스키마 (릴레이션 스키마)물리적 설계DBMS로 구현 가능한 물리적 구조 설계결과물 : 물리적 스키마구현SQL 문을 작성한 후 이를 DBMS에서 실행해 데이터베이스 생성설계 과정 중 오류를 발견하여 변경이 필요하면 이..
학번이름학년수강과목1홍길동2수학2김진우1수학3오형준2국어4정소화3인공지능이렇게 구성된 학생 테이블이 있다고 가정하자.기본 검색SELECT 속성명 FROM 테이블명SELECT 속성1, 속성2 FROM 테이블명기본 SELECT문의 형식은 이러하며, SELECT와 함께 검색하고 싶은 속성의 이름을 나열하면 된다.SELECT 학번 FROM 학생;학번1234SELECT 학번, 이름 FROM 학생;학번이름1홍길동2김진우3오형준4정소화첫번째 SQL문은 "학생 테이블에서 학번 속성을 출력해주세요"라는 의미이고, 두번째 SQL문은 "학생 테이블에서 학번, 이름 속성을 출력해주세요"라는 의미이다.SELECT * FROM 학생;모든 속성을 검색하고 싶을 때는 즉, 테이블 전체를 보고 싶을 때는 속성명에 *를 넣어주면 된다..
어떤 테이블에서 특정한 값을 검색할 때, '이진 탐색'을 적용하기 위해서 만들어놓는 하나의 속성을 기준으로 정렬된 테이블의 사본을 index라고 한다.예를 들어, 어떤 커뮤니티의 게시글 정보를 저장하는 테이블에 천만 개의 정렬되지 않은 데이터가 들어가 있다고 가정하자. 여기서 *"작성자가 'AtraFelis'인 게시글만 찾아주세요*"라고 쿼리문을 날렸다고 했을 때 어떻게 되겠는가?ID작성자제목내용1AtraFelis 2홍길동 ...이춘향 1,000홍길동 ...AtraFelis 대충 이런 테이블이 있다고 생각해보자. 정렬되어 있지 않으므로 일단 이진탐색을 사용할 수 없을 것이다. 그렇다면 처음부터 일일히 비교를 하던가, 아니면 테이블 전체를 불러와서 정렬한 후에 이진탐색을 하던가... 뭐 여러가지 ..
관계형 데이터베이스 (Relational Database)MySQL, PostgreSQL, Oracle, SQLite, MSSQL엑셀과 비슷한 형식이라고 생각하면 편하다. 테이블(Table)로 이루어져 있으며, 이 테이블은 키(Key)와 값(Value)를 가진다. 테이블의 행은 키, 열은 값을 나타낸다.즉, 데이터 간의 관계를 중요하게 생각하는 방식이 관계형 데이터베이스라고 할 수 있겠다.SQL 문법을 사용해야한다. (즉, 입문에 장벽이 조금 존재한다.)중복된 데이터를 좋아하지 않아, 이를 제거하기 위해 정규화를 한다.정확도가 중요한 서비스에서 자주 사용한다.대용량 데이터 처리에 비효율적이다. 비관계형 데이터베이스 (Non-Relational Database)redis, MongoDB(document d..