DataBase 란?
DataBase(DB): 통합하여 관리하는 데이터의 집합체 중복되는 데이터를 없애고 자료를 구조화하여 효율적인 처리가 가능
DBMS(Database Management System) ->데이터베이스 관리하는 미들웨어 서버
관계형 데이터베이스 VS 비관계형 데이터베이스 ->설계는 관계형 데이터베이스를 기준 (Relational DataBase)
Data: 데이터베이스에 저장한 값 프로세스에 의해 바뀌기 전까지는 같은 상태 유지 > 정적
Information: 데이터를 특정 목적을 위해 특정 방법을 통해 의미있게 가공한 것 지속적으로 데이터 사이의 관계 변경 &데이터 가공 > 동적
⁕데이터를 가공해서 의미있는 결과로 바꾼 것 > 정보
DataBase 용어
Null(널)
Null(널): 없거나 알려지지 않은 값(0을 의미하는 것 X, 공백 문자열 가리키는 것 X)
널값이 등장한 이유
-
누락 값: 실수 등을 통해 데이터가 누락된 값
-
알려지지 않은 값: 필드에 필요한 특정 값이 정의 되지 않은 값 ㅣ 정말 알수 없는 값
-
어떤 레코드에도 적용되지 않을 경우:
Ex) 고정 급여와 시간당 급여가 있을 때 두 급여를 다 받는 것이 아니므로 하나에는 널이 들어간다 널로 인한 문제: 수학적 연산에 부정적 영향 -> Null포함 연산 값은 무조건 NULL
값의 누락, 인식 불가한 값, 수학 연산 & 집계 함수에 사용되는 값인지 판단 후 설계
Table(테이블)
Table(테이블): 관계 = 튜플 + 속성
데이터베이스의 주요 구조, 하나의 특정 주제를 나타냄
테이블은 기본 키를 포함하여 적어도 하나의 필드가 존재해야 함
-
객체 테이블: 유형의 사물을 의미, 모든 객체를 데이터로 저장하며 다양한 방법으로 가공한다
-
이벤트 테이블: 특정 시간대에 발생하는 것 표시(Ex) 실험실의 테스트 결과)
-
데이터 테이블: 데이터를 저장하는 테이블, 끊임없이 가공 → 동적인 테이블
-
룩업 테이블(검증 테이블): 데이터 무결성을 보장할 때 사용, 데이터 변환 X → 정적인 테이블
Field(필드)
Field(필드): 속성, 대상의 특성을 표현, 테이블의 컬럼i
제대로 설계 시 모든 필드는 하나의 값을 갖음
잘못된 설계
- 둘 이상의 서로 다른 항목들을 값으로 갖는 다중 구성 필드
- 같은 종류의 값을 여러 번 갖고 있는 다중값 필드
- 연결된 문자값이나 수식의 결과 내용을 갖고 있는 계산된 필드
Record(레코드)
Record(레코드): 튜플, 테이블 대상에 대한 유일한 값, 테이블의 로우, 필드값들의 집합
테이블의 관계를 이해하기 위한 중요 요소
View(뷰)
View(뷰): 데이터베이스에서 하나 이상의 테이블에서 여러 필드를 혼합하여 만든 가상 테이블
뷰를 구성하는 테이블 → 기반 테이블
뷰의 중요성
-
동시에 여러테이블에 있는 데이터에 대한 작업 수행
-
사용자가 하나 또는 여러 테이블에 있는 특정 필드를 보거나 조작하는 것을 방지 → 보안 측면에서 강점
-
데이터 무결성 구현에 도움 → 검증 뷰(Validation View)
Key(키)와 Index(인덱스)
Key(키): 특별한 역할을 하는 필드(기본키와 외래키)
Primary Key(기본키):
- 기본키의 값은 전체 데이터베이스중 특정 레코드를 식별
- 기본키의 필드는 전체 데이터베이스중 특정 테이블을 식별
- 기본키는 테이블 수준의 무결성을 강제하고 데이터베이스에 있는 다른 테이블과 관계를 설정 데이터베이스의 모든 테이블은 기본키 가져야 함
Foreign Key(외래 키): 테이블 사이 관계를 설정할 때 한 테이블의 기본키를 다른 테이블의 구조에 포함 시킴으로써 설정한다. 이때 다른 테이블에 포함된 키를 외래키라 한다. 테이블간 관계 수준의 무결성 보장(참조하는 기본키와 외래키가 일치해야함)
Index(인덱스): 데이터 처리속도를 향상시키기 위한 구조
테이블: 레코드를 식별할 때 사용하는 논리적 구조 ←→ 인덱스: 처리속도 향상을 위한 물리적 구조
Relation(관계)
Relation(관계): 테이블의 레코드 사이에 몇가지 방법을 통해 연관을 지을 수 있을 때 존재
- 기본키와 외래키의 집합을 통해 관계 설정하는 방법
- 연결 테이블(linking table:연관 테이블이라고도 불림)을 이용하는 방법
관계는 관계형 데이터베이스의 중요한 구성 요소
- 관계는 다중 테이블 뷰를 만들수 있게 함
- 관계는 불필요한 데이터 감소 및 중복 데이터 제거를 통한 데이터 무결성을 보장
모든 관계는 테이블 사이의 존재하는 관계의 종류, 테이블이 참여하는 방법, 테이블이 참여하는 정도 이 3가지로 특성화 가능
Cardinality(기수)
Cardinality(기수): 관계의 유형, 1대1, 1대다, 다대다
- 1대1 관계: 테이블이 서로 한개의 레코드에만 연결되어 있는 경우
->같은 기본키를 공유할 수 있는 유일한 관계
- 1대다 관계: A 테이블은 하나의 레코드가 B 테이블은 여러 레코드가 연결되어있지만
->B 테이블의 하나의 레코드는 A 테이블의 하나의 레코드에 연결되는 경우
->A테이블의 기본키를 복사하여 B테이블 구조에 외래키로 포함
- 다대다 관계: A 테이블과 B 테이블 모두 다수의 레코드에 연결되는 경우
-> 연결테이블 사용
Participation(참여)
Participation(참여)
- 필수적 참여: 두 테이블이 연결되어 있을 시 한 테이블의 레코드를 넣기 전 다른 테이블의 레코드를 넣어야 하는 경우
- 선택적 참여: 두 테이블이 연결되어 있을 시 한 테이블의 레코드를 넣기 전 다른 테이블의 레코드를 넣지 않아도 되는 경우
참여의 정도 : A 테이블과 B 테이블이 연결되어 있을 시 A 테이블의 한개의 레코드와 연결될 수 있는 최대/최소 레코드를 m,n이라고 했을 때 n,m으로 표현한다
Data Integrity(데이터 무결성):
필드 명세: 도메인, 필드의 모든 요소를 표시
- 일반적 요소: 기본적인 정보 기본 정보, 필드 이름, 상세 설명등이 포함
- 물리적 요소: 필드 구성 방법& 필드 사용자에게 표시하는 방법 데이터 유형, 길이, 출력 양식이 포함
- 논리적 요소: 필드에 저장되는 값 요청값, 값의 범위, 기본값이 포함
Data Integrity(데이터 무결성): 데이터베이스의 정확성, 유효성, 일관성과 관련 4가지 유형
- 테이블 수준 무결성(Entity Integrity):
테이블 내 중복된 레코드 X + 테이블 내의 각 레코드를 식별하는 필드가 유일하며 널이 아님을 보장
- 필드 수준 무결성(Domain Integrity):
모든 필드 구조 보장 + 필드의 값의 유효성, 일관성, 정확성 확보 + 같은 유형의 필드들 일관성있게 정의
- 관계 수준 무결성(Relation Integrity): 테이블 사이의 관계 적절성 + 데이터 동기화 여부
——————————–데이터베이스 구조적 측면————————————
- 업무 규칙: 조직이 데이터를 사용하는 방법
——————————–데이터베이스 사용적 측면————————————
DataBase 설계
요구분석 -> 데이터 모델링 -> 정규화
개념적 데이터 모델링
-> E-R 다이어그램 만들기
- 개체(Entity)와 속성(Attribute) 추출
Entity = Table , Attribute = Field
- 개체간의 관계 추출
설계 해보기
교수(Professor)는 아이디(ssn), 이름(name), 나이(age), 직위(rank), 연구 분야(speciality)를 가진다.
학과(Department)에는 학과번호(dno), 학과이름(dname), 학과사무실(office)이 있다.
대학원생(Graduate)은 아이디(ssn), 이름(name), 나이(age), 학위과정(deg_prog, 석사/박사)을 가진다.
과제(Project)는 과제번호(pid), 지원기관(sponsor), 개시일(start_date), 종료일(end_date), 예산액 (budget)이 있다.
학과마다 그 학과를 운영(run)하는 교수(학과장이라고 한다)가 한 명씩 있다.
한 교수가 여러 학과에서 근무(work-dept)할 수 있는데, 이때 각 학과별로 참여백분율(pct_time)이 기록된다.
대학원생에게는 학위 과정을 밟을 전공학과(major)가 하나씩 있다.
대학원생에게는 어떤 과목을 들으면 좋을지 조언(advisor)해주는 선임 대학원생(학생조언자라고 한다)이 있다.
과제는 한 교수(연구책임자라고 한다)에 의해 관리(manage)된다.
과제는 한 사람 이상의 교수(공동연구책임자라고 한다)에 의해 수행(work-in)된다.
한 과제는 한 명 이상의 대학원생(연구조교라고 한다)에 의해 수행(work-prog)된다