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

'키'에 해당되는 글 2건

1 →