일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- SWEA
- 데이터베이스
- BFS
- Python
- SW Expert Academy
- 브루트포스
- 구현
- 백트래킹
- 자바스크립트
- javascript
- 다이나믹 프로그래밍
- 문자열
- 그래프 이론
- 너비 우선 탐색
- 깊이우선탐색
- 백준 알고리즘
- 스택
- 다익스트라
- 백준알고리즘
- 너비우선탐색
- DP
- 오라클
- 그리디 알고리즘
- 완전탐색
- 파이썬
- oracle
- 브루트포스 알고리즘
- DFS
- 그래프 탐색
- Today
- Total
목록데이터베이스 (41)
민규의 흔적
File을 파일 또는 화일이라고 읽는데, 여기서는 파일로 읽겠다. 파일(File) 조직의 유형 히프 파일(Heap File) 순차 파일(Sequential File) 인덱스된 순차 파일(Indexed Sequential File) 직접 파일(Hash File) 히프 파일(비순서 파일) 가장 단순한 파일 조직으로, 레코드들이 삽입된 순서대로 파일에 저장된다. 정렬되어있지 않으며, 맨 마지막에 저장된 레코드는 맨 마지막에 저장되는 방식이다. 삽입 : 새로 삽입되는 레코드는 파일의 가장 끝에 첨부됨(빠름) 검색 : 원하는 레코드를 찾기 위해서는 모든 레코드들을 순차적으로 접근해야 함(모든 레코드를 검색하지 않는다면 느림) 삭제 : 원하는 레코드를 찾은 후에 그 레코드를 삭제하고, 삭제된 레코드가 차지하던 공간..
릴레이션 분해 하나의 릴레이션을 두 개 이상의 릴레이션으로 나누는 것으로, 릴레이션의 분해는 필요한 필요한 경우에는 분해된 릴레이션들로부터 원래의 릴레이션을 다시 구할 수 있음을 보장해야 한다는 원칙을 기반으로 한다. 릴레이션 분해 후의 잠재적인 문제 릴레이션이 분해되기 전에는 조인이 필요 없는 질의가 분해 후에는 조인을 필요로 하는 질의로 바뀔 수 있다. 즉, 분해를 했을 때 성능상에 문제가 있는지(테이블 수 증가에 따른 성능 저하) 체크하고 분해를 결정해야 한다. 분해를 잘못하면 두 개의 릴레이션으로부터 얻을 수 있는 정보가 원래의 릴레이션이 나타내던 정보보다 적을 수도 있다. 즉, 정보의 손실을 의미하며 이런 경우에는 분해된 릴레이션들을 사용하여 원래 릴레이션을 재구성하지 못할 수도 있다. 무손실 ..
릴레이션 정규화(Normalization) 정규화의 정의는 다음과 같다. 원래의 릴레이션을 무손실 분해함으로써 중복과 갱신 이상을 최소화하여 일관성과 정확성을 유지하는 과정으로, 주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석한다. 릴레이션 정규화가 필요한 이유는 다음과 같다. 부주의한 데이터베이스 설계로 인해, 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함. 정규화에 대해 자세히 설명하기 전, 갱신 이상에 대한 개념을 숙지할 필요가 있다. 갱신 이상(Update Anomaly) 데이터베이스의 데이터를 수정, 삽입, 삭제하는 과정에서 발생하는 문제로, 각각 수정 이상, 삽입 이상, 삭제 이상이 존재한다. 수정 이상(modificatio..
(개념적 설계 단계) 데이터베이스 설계 사례에 알고리즘 적용 아래는 개념적 설계 단계의 산출물인 개념 스키마 예시이다. 해당 개념 스키마 예시를 이용해 논리적 설계를 진행하여보자. 1단계 : 정규 엔티티 타입과 단일 값 애트리뷰트 정규(강한) 엔티티 타입과 해당 엔티티 타입의 각 단일 속성들을 릴레이션으로 사상한다. EMPLOYEE 엔티티 타입의 복합 애트리뷰트인 ADDRESS 애트리뷰트 대신, 해당 애트리뷰트를 구성하는 City, Ku, Dong 애트리뷰트 각각을 사상한다. 또한 각 엔티티 타입의 기본 키는 릴레이션의 기본 키로 그대로 사상한다. EMPLOYEE(Empno, Empname, Title, City, Ku, Dong, Salary) PROJECT(Projno, Projname, Budget..
논리적 설계 단계에서는 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상한다. ER 스키마를 관계 모델의 릴레이션으로 사상 ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만, 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않고 릴레이션만 존재한다. ER 모델을 릴레이션들로 사상하는 과정에는 총 7단계로 이루어져 있다. 단계 사상할 대상 알고리즘 구분 1단계 엔티티 타입과 단일 값 애트리뷰트 정규(강한) 엔티티 타입 2단계 약한 엔티티 타입 3단계 관계 타입 2진 1:1 관계 타입 4단계 2진 1:N 관계 타입 5단계 2진 N:M 관계 타입 6단계 N진 관계 타입 7단계 다치 애트리뷰트 다중 값 애트리뷰트 1단계 : 정규 엔티티 타입과 단일 값 애트리뷰트 ER 스키마의 각 정규 엔티티 타입..
IE 표기법 (새발 표기법) Chen 표기법(ER 표기법)은 수십 개 이상의 애트리뷰트가 엔티티 타입에 연결된 다이어그램을 나타내려면 매우 불편하고 공간을 많이 차지하는 단점을 지닌다. 이에, ERWing 등의 많은 CASE 도구들은 새발(crow-feet) 표기법 또는 IE 표기법을 사용한다. ER 표기법과 IE 표기법 ER 표기와 IE 표기의 차이점을 하나씩 알아보자. 1:1 관계 A와 C의 관계 B에 대해서, 1. C 엔티티 타입은 A 엔티티 타입의 각 엔티티와 최소 1, 최대 1의 관계를 가진다. 2. A 엔티티 타입은 C 엔티티 타입의 각 엔티티와 최소 0, 최대 1의 관계를 가진다. 1:N 관계 A와 C의 관계 B에 대해서, 1. C 엔티티 타입은 A 엔티티 타입의 각 엔티티와 최소 0, 최대..
ER 스키마를 작성하기 위한 지침 ER 스키마를 작성하기 위한 지침으로는 다음과 같다. 다치 애트리뷰트는 엔티티로 분류한다. (필수적인 부분은 아님) 엔티티는 키 애트리뷰트 이외에 설명 정보를 갖는다. 애트리뷰트들이 직접 설명하는 엔티티에 애트리뷰트들을 붙인다. 관계는 일반적으로 독자적으로 존재할 수 없지만, 엔티티 타입과 관계 타입을 절대적으로 구분하는 것은 어렵다. 이는 사람마다 관점이 다르기 때문이다. 다음의 관계 타입과 엔티티 타입 모델링 예시를 보자. 애트리뷰트를 그 자체로 표현할 수도 있으며, 애트리뷰트를 엔티티로 표현할 수도 있다. 둘 다 맞는 표현이며 이는 사람의 관점에 따라 다르기 때문에 절대적으로 구분하는 것은 힘들다. ER 표기법 요약
ER 모델 데이터베이스 설계를 용이하게 하기 위해 Peter Chen이 1976년에 제안하였다. 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현한 모델이다. 기본적인 구문으로는 엔티티, 관계, 애트리뷰트가 있고, 기타 구문으로는 카디날리티 비율, 참여 제약조건 등이 있다. 전체 참여 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해서 어떤 엔티티 타입 E2의 어떤 엔테테와 연관되는 것을 의미한다. 약한 엔티티 타입은 항상 관계에 전체 참여이다.(소유 엔티티 타입의 키를 빌려오기 때문에 전체 참여일 수 밖에 없다.) 전체 참여는 ER 다이어그램에서 이중 실선으로 표기한다. 부분 참여 어떤 관계에 엔티티 타입 E1의 일부 엔티티만 참여하는 것을 의미한다. 전체 참여와 부분..