Entity-relation을 사용한 conceptual data modeling

Ch7 entity-relation를 사용한 개념적 데이터 모델링

7.1 DB 설계를 위한 고수준의 개념적 데이터 모델의 사용

1. 요구사항 수집 및 분석 : 요구사항(트랜잭션으로 구성), 검색과 갱신에 대한 연산들도 포함(diagram)
2.
개념적 설계 : 고수준의 개념적 data model을 사용하여 개념 schema(요구사항 간단히 기술)를 만든다.
3.
논리적 설계 : 상용 DBMS를 이용하여 DB를 실제로 구현 고수준 데이터모델을 구현 데이터모델로 변환
맵핑을 하고 정규화 과정을 통해 설계한다.
4.
물리적 설계 : DB file들에 대한 내부 저장 구조, 파일 구성, 인덱스, 파라미터 등을 명시 DB TR로 설계 구현

7.2 간단한 예제 DB응용

7.3 엔티티 타입, 엔티티집합, 에트리뷰트,

7.3.1 엔티티와 attribute
entity :
실세계에서 독립적으로 존재하는 실체(자동차, , 사원), entity를 기술하는 attribute들을 갖는다.
attribute : entity
를 기술하는 속성(이름, 나이, 주소, ) 여러 유형이있다 그유형은 아래로
복합 attribute : 더 작은 구성 요소(자체로 독립적인 의미를 갖음)들로 나눈다. 더 이상 나눌 수 없는 attribute를 단순 attribute라 한다. (복합 attribute를 세분화한게 단순 attribute)
단일값 attribute : 하나만 갖는 것,
다치 attribute : 여러 개의 값을 가질수 있는 attribute (집이 여러 개, 차가 여러 대)
저장 attribute : 유도 attribute가 유도를 받는 attribute
NULL : entity
의 특정 attribute에 적용할 값이 없는 것
복잡한 attribute : ()에 복합 attribute 를 넣고 {} 안에 다치 attribute를 나타냄으로 중첩을 표현

7.3.2 entity type, entity set, key, value set
entity type :
같은 attribute들을 갖는 entity의 집합, 이름과 attribute리스트로 기술
entity set :
임의의 시점에 DB내의 특정 entity type의 모든 entity 모임
entity type
에 속하는 entity들에 대한 중요한 제약조건은 attribute들에 대한 key, 유일함의 제약조건이 있다.
Key attribute : entity set
안에 entity마다 서로 다른 값을 가지는 attribute
weak entity type : key
를 갖지 않는 entity type
값집합(domain) : entity에서 해당 attribute가 가질수 있는 값들의 집합

Entity e에 대한 attribute A의 값을 A(e)로 표현한다.

7.4 관계, 관계 타입, 역할, 구조적 제약조건

7.4.1 관계 타입, 집합, 인스턴스
관계 : attribute끼리의 참조를 관계로 명시
관계타입 : entity type에 속하는 entity들 간의 관계집합, 관계 인스턴스들의 집합

7.4.2 관계 차수, 역할 이름, 순환적 관계
차수 : 관계 타입에 참여하고 있는 entity type들의 개수
Role name : entity type
에 속한 한 entity가 각 관계 인스턴스에서 가지는 역할을 강조
같은 entity type이 어떤 관계 타입에 두번 이상 참여하는 경우에는 각 참여하는 entity가 하는 역할의 의미를 구분하기 위해 역할 이름이 필수적이다 이런 관계타입을 순환적 관계라 한다.

7.4.3 이진 관계 타입에서의 제약조건
cardinality ratio : entity
가 참여할 수 있는 최대 관계 instance
참여 제약조건 : entity의 존재가 관계 타입을 통해 연관되어 있는 다른 entity에 의존하는이 여부를 명시, 이 제약조건은 각 entity가 참여할 수 있는 관계 인스턴스의 최소 수를 명시하며 최소 카디널리티 제약조건이라 함
참여 제약 조건에는 전체참여와 부분참여가 있다.
전체 참여 : entity들의 전체집합에 속하는 모든 entity가 반드시 다른 entity와 연관되어야 한다.(존재 종속성)
부분 참여 : 일부 entity들만 다른 entity들과 연관되어 있는 것
M:N
관계 타입에서는 참여 entity들의 조합에 의해서 결정되는 attribute들을 반드시 관계 attribute로 명시

7.5 weak entity type : 자신의 key attribute가 없는 entity type(key가 있으면 정규 attribute)
weak entity type
entity들은 그들의 attribute값들 중 하나를 통해 다른 entity type과 연계하여 식별하는데 그러한 다른 entity type을 식별 entity type이라 한다.이 두 type의 관계를 식별 관계라 한다. 항상 weak entity type은 식별 entity type에 전체 참여 제약조건(존재 종속성)을 가진다. 역은 성립하지 않는다.
일반적으로 부분키(점선)를 가지는데 부분키는 동일한 식별 entity에 연관되는 weak entity들을 서로 구분할 수 있는 attribute들이다.

'SW > Database MySQL' 카테고리의 다른 글

sql의 데이터 정의와 타입  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

sql의 데이터 정의와 타입

4.1 SQL의 데이터 정의와 데이터 타입

4.1.1
SQL
환경 : SQL을 사용할 수 있는 어떠한 프레임워크를 설치한 것
클러스터 : catalog의 집합
catalog :
어떤 SQL 환경에 있는 스키마들의 모임
SQL schema : schema
의 이름으로 식별, schema의 각 원소(테이블, 제약조건, , 도메인 등)에 대한 기술자 뿐 아니라 소유계정을 가리키는 권한부여 식별자도 포함

4.1.2 SQLCREATETABLE 명령
relation
의 이름과 함께 attribute의 초기 제약조건들으 명시하여 새로운 relation을 만드는데 사용
attribute마다 이름, 값의 도메인을 명시하는 데이터 타입, NOT NULL과 같은 제약조건을 포함 그 외의 제약조건은 attribute들이 선언된 후 CREATE TABLE 구문 안에서 표현되거나 나중에 ALTER TABLE로 표현됨
base relation : CREATE TABLE
로 정의된 relation
virtual relation : CREATE VIEW
로 정의된 것
외래키들이 순환 참조하도록 선언하거나 아직 생성되지 않은 테이블을참조하면 외래키에 오류가 발생

4.1.3 SQL에서 attribute data type & domain
DATE data type : YYYY-MM-DD
TIME data type : HH:MM:SS
TIMESTAMP data type : YYYY-MM-DD HH:MMM:SS.SSSSSS
INTERVAL data type :
세기의 시간을 저장

4.2 SQL에서 기본 제약조건 명시

4.2.1 attribute 제약조건과 default값 명시 : SQLattribute값으로 NULL을 허용하기에 아니면 NOT NULL
또한 DEFAULT <value> 를 이용하여 default value를 명시할 수 있다.

4.2.2 키와 참조 무결성 제약조건의 명시
CREATE TABLE
구문에 키와 참조 무결성을 위한 특별한 절을 가진다.
UNIQUE
절은 대체키를 명시한다.
FOREIGN KEY
절은 참조무결성을 명시(tuple들을 삽입, 삭제, 수정할때 위배할 수 있다.)

4.2.3 CONSTRAINT 다음에 제약조건의 이름을 부여
4.2.4 CHECK
를 사용하여 테이블제약조건을 명시 (CREATE TABLE의 끝에 사용)

4.3 SQL에서의 기본 검색 질의(SELECT FROM WHERE)
SQL
과 관계모델의 차이점으로는 SQL table tuple들의 집합이 아니고 tuple들의 다중집합이다.
SELECT
DINTINCT를 함께 사용하면 SQL relation에 집합의 성질을 갖도록 함

SELECT <attribute list> ,FROM <table list>, WHERE<조건>
JOIN :
두개 이상의 table을 합치는데 사용

4.3.2 모호한 attribute 이름,별명, 재명명, 투플 변수

Relation name.attribute name, AS를 사용하여 재명명, 별명을 만들수도 있다.
4.3.3 where
절을 생략하면 Relation의 모든tuple검색되고 만약 FROM에 두개 이상의 relation이 명시되고, where절이 없다면 크로스프로덕트(모든 가능한 tuple의 조합)이 검색된다.
선택된 tuple들의 모든 atrribute값을 검색하려면 SELECT절에 attribute명 대신 *을 입력한다.

4.3.4 SQL에서 집합으로의 테이블 : 앞에서 말했듯이, SQL은 집합보다는 다중집합으로 table을 표현한다. 중복 tuple이 테이블의 질의의 결과에서 하나 이상 나타날 수 있다. => SQL은 중복 tuple을 제거하지 않는다.
키를 가진 SQL 테이블은 키값이 각 tuple마다 구별되어야 하므로, 집합으로 표현되도록 제한을 받는다. SQL 결과에서 중복된 tuple을 삭제하려면 SELECT절에 키워드 DISTINCT를 사용한다.
SQL
에서의 관계 대수 : 합집합(UNION), 차집합(EXCEPT), 교집합(INTERSECT)가 있다.
관계대수 다음에 ALL을 붙이면 중복을 허용한다. Ex) UNION ALL

4.3.5 부분 문자열 패턴 비교와 산술 연산자
LIKE
를 통해 문자열의 일부에 대해서 비교 조건을 명시한다 (몇글자, 시작하는 문자)
질의 내에서 산술식을 허용한다(사칙연산), BETWEEN을 사용하여 범위를 지정한다.

4.3.6 질의 결과의 정렬
ORDER BY
를 사용하여 질의결과에 있는 tuple들을 정렬(default는 오름차순, DESC를 사용하면 내림차순)

4.4 SQL에서 삽입, 삭제, 갱신문

4.4.1 INSERT 명령 : relationtuple을 추가
relation
이름과 attribute값들의 리스트를 명시해야 하며 attribute들의 순서는 CREATE TABLE에서 명시한 attribute들의 순서와 일치해야한다.
새로운 tuple에 일부 attribute만 명시할 경우에는 INSERT INTO R (attributes)를 사용하고 다음줄에 VALUES (삽입할 attribute)를 사용한다.

4.4.2 DELETE 명령 : relation에서 tuple을 삭제한다. WHERE절과 같이 사용할 수 있다. 한번에 한 테이블 내의 tuple들만 삭제할 수 있다. 그러나 DDL에서 참조 무결성 제약조건 내에 참조 트리거된 동작이 명시되어있다면 삭제는 다른 relation에 있는 tuple들도 연쇄적으로 삭제할 수 있다. table자체를 삭제하려면 DROP TABLE

4.4.3 UPDATE 명령 : 선택된 하나 이상의 tuple에서 attribute값들을 수정하기 위해 사용
DELETE
명령처럼 UPDATE명령에 있는 WHERE절은 한 relation에서 수정할 tuple들을 선택

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

basic relation model (기본 관계 모델)

3.1 관계모델은 DB relation들의 모임으로 표현


3.1.1 domain, attribute, tuple, relation


Domain :
원자값(더 이상 나눠질수 없는 것)들의 집합, 해당 Domain이 속하는 값들의 datatype을 명시

NULL은 모든 domain의 멤버, 다른 attribute가 같은 domain을 갖을 수 있다. 구성요소 : 데이터타입, 형식, 이름


릴레이션 스키마 : R이라는 릴레이션 이름과, A_1 이라는 에티르뷰트(도메인과 같은 역할)들로 이루어진다.


릴레이션스키마의 릴레이션(relation state) : n-tuple들의 집합, 실세계의 특정상태에서 해당되는 tuple들만 반영


3.1.2 릴레이션의 특성


릴레이션에서 투플들의 순서는 존재하지 않지만 저장 순서는 존재한다.


투플 내에서의 값들과 순서와 릴레이션의 또 다른 정의 : 투플 내에서 값들의 순서는 중요하지 않다.


투플 내의 각 값은 원자값이다 => 1 정규형


NULL :
값을 모를 때, 가능하지 않은 값일 때,  이 투플에 그 attribute를 적용할수 없을 때 사용한다.


3.2 관계 모델 제약조건과 관계 DB 스키마


본질적 모델 기반 제약조건 : data model 자체에 존재하는 제약조건


스키마 기반 제약조건 : data modelschema에서 직접 표현 가능한 제약조건으로 DDL로 명시


응용 기반 제약조건 : schema에서 표현이 불가능한 제약조건으로 응용프로그램에 의해 표현


3.2.1 도메인 제약조건 : 각각의 투플 내에서 각각의 attribute의 값이 반드시 도메인에 속하는 원자값이여야 함


3.2.2 키 제약조건과 널 제약조건


형식 관계 모델에서 relation tuple들의 집합으로 정의


releation
의 모든 tuple도 중복되지 않아햐 한다. tuple마다 갖는 uniqueattributesuperkey라 한다.


유일성 제약조건 : super key가 같은 tuple은 존재하지 않는다.


모든 relation은 적어도 하나의 superkey를 갖는다.


KEY :
최소의 superkey


3.2.3 관계 DB, 관계 DB schema


관계DB는 서로 연관된 다수의 relation을 갖는다.


관계DB schema : relation schema들의 집합과 무결성 제약조건들의 집합이다.


관계DB state : relation state들의 집합


무결성 제약조건을 준수하면 유효한 상태 아니면 유효하지 않은 상태


무결성 제약조건은 DB schema에 명시되어있다


3.2.4 엔티티 무결성 제약조건, 참조 무결성 제약조건, 외래키


엔티티 무결성 제약조건 : 기본키는 null값이 될 수 없다. (기본키는 tuple들을 구별하는데 사용하기 때문)


참조 무결성 제약조건 : 두 릴레이션 사이에 명시되는 제약조건, relation에 있는 tuple이 다른 relation의 

tuple을 참조하려면 반드시 참조되는 tuple이 그 relation안에 존재 해야한다.


foreign key :
외래키가 되기 위해서는 참조 무결성 제약조건이 만족되어야 한다. 동일한 relation을 참조할 수 없다. 외래키는 자신의 relation을 참조할 수 있다.


외래키의 attribute는 기본키의 attribute와 동일한 doamin을 갖는다. -> 외래키는 참조한다.


현재 상태의 한 tuple 내의 외래키의 값은 현재상태의 어떤 tuple 내의 기본키와 일치하거나 null값을 가져아한다.


3.3 갱신 연산과 트랜잭션 그리고 제약조건 위반의 처리


관계 모델의 연산은 추출과 갱신(삽입, 삭제, 갱신 또는 수정)으로 나누어진다.


3.3.1      


삽입 연산은 relation R에 삽입한 tuple t에 대한 attribute값들의 리스트를 제공한다.


도메인 제약조건, 키 제약조건, 엔티티제약조건, 참조 제약조건 4가지를 위반할 수 있다. 기본은 거부


3.3.2 삭제 연산


참조무결성 제약조건 1개만 위반할 수 있다. 기본은 거부


3.3.3 갱신 연산


relation R
에 있는 tuple들 중에서 하나 이상의 attribute값을 변경하는데 사용



기본키나 외래키가 아닌 attribute의 갱신에는 아무런 문제가 없다, 데이터타입과 도메인이 정확한지 확인


3.3.4 트랜잭션 개념 : DB로부터 읽기, 삽입, 삭제, 갱신 같은 DB 연산을 수행하는 program

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
sql의 데이터 정의와 타입  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

Data model, schema, instance

데이터 모델, 스키마, 인스턴스

2.1 데이터 모델, 스키마, 인스턴스
데이터 모델 : 필수적인 특징만을 강조하는 추상화를 위한 도구데이터 구조를 명시하기 위해 사용할 수 있는 개념들의 집합으로 대부분 검색과 갱신을하는 기본연산들을 포함한다.
DB
구조 : 데이터 타입, 관계, 제약조건을 의미

2.1.1 데이터 모델의 분류
저수준(물리적)데이터 모델 : 어떻게 데이터가 저장되는지를 제공
표현(구현)데이터 모델 : 사용자들이 쉽게 이해할 수 있는 개념을 제공
고수준(개념적)데이터 모델 : 많은 사용자들이 데이터를 인식하는 방식에 대한 개념 제공
고수준(개념적)데이터모델 : entity(사원이나 프로젝트 같은 실세계의 객체나 개념을 나타냄), attribute(사원이 이름이나 급여 같은 entity의 특성), relationship(사원과 프로젝트 사이의 관계처럼 entitiy들 사이의 연관성)

2.1.2 스키마, 인스턴스, 데이터베이스 상태
DB schema : DB
기술(description)으로 자주 변경되지 않는다. 대부분은 도식적으로 스키마를 표현하는 표기법을 갖는데 이를 스키마 다이어그램이라 한다.(실제 인스턴스는 표현하지 않고 레코드 타입의 구조를 나타냄)
DB
상태 : 어떤 특정 시점에 DB에 들어있는 data(레코드를 변경할 때 DB는 다른 상태로 바뀜)
새로운 DB를 정의할 때 DB schemaDBMS에 명시, DBdata가 처음으로 적재될 때 초기상태로 됨

2.2 3단계-스키마 아키텍처와 데이터 독립성
2.2.1 3
단계-스키마 아키텍처
내부단계(internal level) : 내부 스키마를 가지며 이 스키마는 DB의 물리적 저장 구조 기술
개념단계(conceptual level) : 개념 스키마를 가지며 이 스키마는 모든 사용자를 위한 DB구조 기술(제약조건 등)
외부단계(external level) : 외부 스키마와 사용자 view를 가지며 이 스키마는 특정 user group이 관심을 갖는 DB 기술(나머지은폐)
사상(mapping) : 단계들 간 요구와 접근 결과를 변환하는 과정

2.2.2 데이터 독립성 : 고수준의 스키마를 변경할 필요없이, DBS의 어떤 단계에서 스키마를 변경할 수 있는 능력
논리적 데이터 독립성 : 외부스키마나 응용 프로그램들을 변경하지 않으면서 개념 스키마를 변경
물리적 데이터 독립성 : 개념스키마를 변경하지 않으면서 내부스키마를 변경
DBMS
catalog는 여러 단계 사이에서 요구와 데이터를 mapping하는 방법에 대한 정보 포함

2.3 DB언어와 interface
2.3.1 DBMS
언어
DDL(data definition language) :
스키마들을 명시
SDL(storage Defintion Language) :
내부스키마를 나타냄 (오늘날의 DBMS SDL이 거의 없다)
VDL(View Defintion Language) : 3
단계-스키마 아키텍처를 이용하여 사용자 뷰를 명시, 개념스키마들 사이의 맵핑
대부분의 DBMS DDL이 개념 스키마와 외부 스키마를 정의하는데 사용

DML(data manipulation language) : 데이터의 검색 삽입 삭제 수정 조작하는 언어
고수준(비절차적) DML : 복잡한 DB 연산을 간단하게 나타냄, 한번에 레코드 집합(선언적)
저수준(절차적) DML : 범용 프로그래밍 언어에 삽입하여 나타냄, 한번에 한 레코드
DML모두 범용 프로그래밍 언어 내에 DML이 삽입된 경우 프로그래밍 언어는 호스터언어, DML은 데이터 부속어라 하며 고수준 데이터 조작어가 대화식으로 진행되면 질의어라고 부른다

SQL(Structure Query Language) : DB와의 소통 수단으로 DDL DML의 융합, 제약조건 명시 외에 많은 기능

2.4 데이터베이스 시스템 환경

2.4.1 DBMS 구성 모듈
DB
DBMS catalog는 디스크에 저장되어 있으며 OS로 디스크에 접근
buffer
관리 모듈 : 많은 DBMS는 성능에 영향을 미치기 때문에 디스크 입출력을 스케쥴
저장 데이터 관리자 모듈 : 디스크에 저장되어 있는 DBMS의 정보(DB, catalog)에 대한 접근 제어
DDL compiler : DDL
로 명시된 스키마 정의들을 처리, 스키마들에 대한 정보(meta-data)DBMS catalog에 저장
catalog : DBMS
모듈들이 필요로 하는 파일의 정보, 제약조건을 포함(DBMS가 정보가 필요할 때 접근하는곳)
대화식질의 interface : 질의 컴파일러(질의들을 파싱하고 데이터원소들이 정확한가 입증하고 내부 형태로 컴파일 + 질의 최적화기(연산들을 재배치하고 중복제거, 적절할 알고리즘과 인덱스를 선택)
precomiler :
호스트 언어로 작성된 응용프로그램에서 DML 명령들을 추출하여 DB접근을 위한 목적코드(object code)로 컴파일 하기 위해서 DML compiler로 보내고 프로그램에서 DML 명령을 제외한 나머지 부분은 호스트언어 compiler로 보낸다.
Runtime DB processor :
특권 명령, 실행가능 질의 계획, 미리 작성된 트랜잭션등을 수행, system catalog, 저장데이터 관리자와 함께 작동)
동시성 제어 모듈 : 제약조건을 침해하지 않으면서 트랜잭션이 잘 수행되도록 한다.
회복 모듈 : DB의 일관성, 트랜잭션의 원자성, 지속성을 유지
동시성 제어 모듈과 회복 모듈은 TR관리를 위해서 runtrim DB processor와 통합하여 동작한다.

2.4.2 DBS utilities : DBA DBS를 관리하는 것을 도와줌
적재(loading) : 기존의 data file DB에 적재
백업(backup) : 저장매체에 DBcopy를 만듦
파일 재조직(file reorganization) : DB의 파일 구조를 다른 파일 구조로 재조직, 새로운 접근경로 형성(성능향상)
성능 모니터링(performance monitoring) : 사용통계를 DBA에게 전달

2.4.3 도구, 응용, 환경, 통신 장비
케이스 도구 : DBS를 설계하는 과정에 사용
데이터 사전(저장소) 시스템 :
응용개발환경, 통신 소프트웨어가 있다.

2.5 DBMS를 위한 중앙집중식과 클라이언트/서버 아키텍처

2.5.1 중앙집중식 DBMS 아키텍처

2.5.2 기본적인 client/server 아키텍처
client :
사용자 인터페이스와, 자체 처리 능력을 제공
server :
클라이언트 컴퓨터에게 서비스들을 제공할 수 있는 hw, SW

2.5.3 DBMS를 위한 2- client/server architecture : client handles, server handles, API 제공

2.5.4 웹 응용들을 위한 3-client/server architecture

2.6 DBMS의 분류 (DBMS를 분류하기 위해 여러 기준이 사용)
1. data model :
가장 많이 사용하는건 관계 데이터모델,
2.
사용자 수
3.
사이트 수
4.
비용
5.
범용, 특수목적 DBMS 

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
sql의 데이터 정의와 타입  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
database 기초상식  (0) 2017.09.05
JOIN  (0) 2017.09.05

database 기초상식

1

1.1

DATA = 알려진 사실로부터 의미를 가지고 기록될 수 있다, 가공되기 전의 정보


INFORMAITION = DATA
를 가공한것


DB = 서로 연관된 데이터들의 모임, 특정한 의미를 가짐, 실세계의 일부분


DBS = DB + DBMS + USER&APLLICATION PROGRAM


DBMS = DB를 정의 구축 조작 공유


정의 : DB에 저장되는 DATA에 필요한 데이터 타입, 구조, 제약조건들을 명시
->DB
의 정의, 설명하는 정보는 DBMS에 의해 meta-data(카탈로그 형태)로 저장


구축 : DBMS가 관리하는 저장소에 데이터를 저장하는 과정


조작 : 데이터를 검색하기 위한 질의, 갱신, 리포트 생성 기능 포함


공유 : 여러 userprogram data에 동시 접근



1.2 DB 설계 단계


요구사항 분석 -> 개념설계 -> 논리적 설계 -> 물리적 설계 -> 수행 


(
개념설계에서 논리적설계로 가는데에는 정규화가 필요)


DB는 여러 개의 파일로 구성되며, 각 파일은 동일한 유형의 data record들을 저장


DB
를 정의 하기 위해서는 각 파일의 레코드 구조를 명시 각 레코드에 저장되는 데이터 항목의 타입을 지정



1.3 DB의 특징


파일처리방식 : 중복이 있다(memory낭비, 중복된 항목을 고칠땐 일일히 고쳐하기에 overhead발생)


DB : data를 한번만 저장, DBS의 자기기술성, program-data 격리, 추상화, data의 다중 view, 공유, 다수트랜잭션


1.3.1 DBS의 자기 기술성


DBS
DB뿐 아니라, DB에 대한 구조와 제약조건에 대한 완전한 정의를 가짐


DB
에 대한 정의는 DB에 속하는 각 파일들의 구조, 타입, 제약조건 명시


이 정의는 DBMS catalog에 저장되며 저장된 정보를 meta-data라 함 =>DB의 구조 기술


1.3.2 program-data의 격리, 데이터 추상화


데이터 파일의 구조가 응용 프로그램과 분리되어 DBMS catalog에 저장되어있어 DBMS를 접근하는 프

로그램은 고칠 필요가 없다. => program-data의 독립성


객체지향DB, 객체관계DB는 데이터에 대한 연산(함수orMETHOD)까지 DB 정의의 일부로 나타냄


연산 = 인터페이스(연산의 이름, 매개변수의 데이터타입) + 구현(인터페이스와 별도)


프로그램에서는 연산의 구현 내용을 몰라도 연산의 이름과 매개변수들을 사용하여 연산을 수행할 수 있다. =>program-opertaion 독립성


데이터 추상화 : 위의 두개의 독립성을 제공하는 성질을 의미


DBMS
는 사용자에게 데이터에 대한 개념적인 표현을 제공


data model :
추상화의 한 종류(상세정보를 숨김)


1.3.3 데이터에 대한 다중 뷰의 제공


VIEW : DB의 일부이거나, DB로부터 유도되는 가상 데이터이지만 실제로 DB에 저장되진 않는다.


다수사용자용 DBMS는 여러 사용자들이 자신의 뷰를 정의할 수 있도록 하는 기능을 제공


1.3.4 데이터의 공유와 다수 사용자 트랜잭션 처리


다수사용자용 DBMS는 여러 사용자가 동시에 DB에 접근할 수 있는 DB이다.


동시성제어 소프트웨어가 데이터를 동시에 변경할때에도 데이터 일관성을 유지시켜준다.


트랜잭션 : 한 번 이상의 DB접근을 포함하는 프로그램이나 프로세스를 수행하는 것


DBMS
는 트랜잭션의 몇가지 성질(고립성, 원자성)을 강제로 지킴


고립성 : 트랜잭션끼리 고립되어 수행되는것처럼 보이도록


원자성 : 트랜잭션 내의 모든 DB연산들이 수행완료 아니면 수행되지 않음



1.4 DBMS의 장점


1.4.1 중복성 제어


중복성은 논리적으로는 한번의 변경이지만 중복된 횟수만큼 반복해서 변경해야하므로 메모리의 낭비를 초래한다

또한 데이터의 불일치(실수할가능성) -> data DB에 한번만 저장되어야 한다.(정규화)


1.4.2 권한이 없는 접근의 통제


DBMS
는 이를 위하여 보안과 권한이라는 서브시스템을 가진다.


1.4.3 프로그램 객체를 위한 지속성 기억 공간 제공


지속성 객체란 프로그램의 수행이 끝난 후에도 DB에 영구적으로 남아있는 것.


1.4.4 효율적인 질의 처리를 위한 저장구조와 탐색기법 => 인덱스, 버퍼링, 캐쉬, 질의처리 최적화


1.4.8 무결성 제약조건의 시행


DBMS
는 무결성 제약조건들을 정의하고 검사하는 기능을 갖는다.


참조 무결성 제약조건 : 다른 파일의 레코드끼리 연관성을 갖는다.


키 제약조건 : 데이터 항목의 값들이 유일해야 한다.


이런 제약조건을 비즈니스룰 이라 부른다.


1.4.9 규칙을 사용한 추론과 수행


어떤 DBS에서는 DB에 저장되어 있는 사실로부터 새로운 정보를 추론하는 연역적 규칙을 정의할 수 있

이러한 기능을 가진 DBS를 연역 DBS라 부른다.


트리거 : DB연산이 제약조건을 침해하였을때, 실행되는 SQL


저장된 절차 : 많은 프로그램과 사용자들을 위해 미리 컴파일된 SQL문들


능동 DBS : 어떤 이벤트가 일어났을 때 자동으로 수행되는 능동 규칙


1.4.10 DB사용에 함축된 또 다른 의미


표준강화, 응용 개발 시간의 단축, 융통성, 최신 정보의 가용성, 규모의 경제성

'SW > Database MySQL' 카테고리의 다른 글

Entity-relation을 사용한 conceptual data modeling  (0) 2017.09.05
sql의 데이터 정의와 타입  (0) 2017.09.05
basic relation model (기본 관계 모델)  (0) 2017.09.05
Data model, schema, instance  (0) 2017.09.05
JOIN  (0) 2017.09.05

JOIN

JOIN



기본형식

SELECT ‘열 목록’ FROM ‘테이블1’ ~join ‘테이블2’ ON (join 조건)


의미

각 테이블 간 의미 있는 데이터를 연결하는데 사용하는 메커니즘이며 적어도 하나의 컬럼이 테이블 사이에서 공유되어야 한다.


필요한 이유

RDB를 정규화 하면 데이터 집합으로 테이블이 구성되고, 각 테이블끼리는 관계를 갖는다.


이러한 특징으로 RDB는 저장공간의 효율성과 확장성이 향상된다.


한편, 서로 관계 있는 데이터가 여러 테이블로 나뉘어 저장되므로, 각 테이블에 있는 데이터를 효율적으로 검색하기 위해 조인이 필요하다.


표현 방식

명시적 표현법과 묵시적 표현법이 있으며

명시적 표현법은 ‘SELECT column FROM A_table JOIN B_table ON (A_column = B_column)’이고

묵시적 표현법은 ‘SELECT column FROM A_table, B_table WHERE (A_column = B_column)’와 같이 사용한다.


INNER JOIN OUTER JOIN이 있는데, 이 둘의 차이점은 INNER JOIN은 조인조건에 만족하지 않는 데이터를 출력한다면 OUTER JOIN, 그렇지 않다면 INNER JOIN이 된다.


1.     INNER JOIN : 가장 일반적인 조인 형태로 빈번하게 사용한다. 둘 이상의 테이블에 존재하는 공통 컬럼의 값이 같은 것을 결과로 추출한다. 내부 조인에는 동등 조인’, ‘자연 조인’, ‘교차 조인등이 있다.


A.     동등 조인 : ‘Equi join’이라고도 하며, 조인의 가장 일반적인 형식이다. 둘 이상의 테이블에 존재하는 공통 컬럼의 동등만을 비교하며, 부등호 조인은 동등 조인에 포함 되지 않는다.


B.      자연 조인 : ‘natural join’이라고도 하며, 조인 대상 테이블의 모든 컬럼을 비교하여 같은 컬럼명을 가진 컬럼으로 조인을 수행한다. 이때, 동일한 이름은 갖는 컬럼은 한 번만 추출한다.


C.      교차 조인 : ‘cross join’이라고도 하며, 조인에 들어간 테이블들의 모든 데이터가 추출된다. 조인 조건이 잘못되었거나 정의하지 않았을 때, 테이블의 모든 행이 조인되는 경우에 발생한다. Cartesian Product 값을 얻을 수 있다. 너무 많은 레코드를 생성할 위험이 있기 때문에 드물게 사용하며, 테스트 용도로 대용량의 테이블을 생성시에 사용한다.


D.     셀프 조인 : 자가 조인이라고도 하며, 하나의 컬럼에 있는 값들과 이 컬럼에 들어있는 다른 값을 비교할 때 사용한다. FROM절에 각각 다른 alias를 지정하여 테이블을 대입한다. 테이블의 한 컬럼이 자신의 다른 레코드를 참조할 때 사용한다.


2.     OUTER JOIN : 특정 테이블의 데이터가 모두 필요할 때 사용한다.


A.     LEFT OUTER JOIN : 오른쪽 테이블에 조인할 컬럼의 값이 없는 경우 사용한다. 왼쪽 테이블의 모든 데이터를 포함하는 결과를 만든다.


B.      RIGHT OUTER JOIN : 왼쪽 테이블에 조인할 컬럼의 값이 없는 경우 사용한다. 오른쪽 테이블의 모든 데이터를 포함하는 결과를 만든다.


C.      FULL OUTER JOIN : LEFT OUTER JOINRIGHT OUTER JOIN을 합친 것으로 양쪽 모두 조건이 일치하지 않는 것들까지 모두 결합하여 출력한다.





'SW/Database MySQL'에 해당되는 글 6건

1 →