엔티티 타입의 종류


- 강한 엔티티 타입  

우리가 사용하는 95%이상 
독자적으로 존재
실선 직사각형으로 표현 
독자적인 키 애트리뷰트를 가짐


- 약한 엔티티 타입 

독자적인 키 애트리뷰트가 없음
특정 강한 엔티티타입에 속함
두줄 실선 직사각형으로 표현
회사 데이터 베이스를 구축 하는 예
직원들의 자녀학비지원, 데이터베이스에서
부양가족을 관리를 해야됨
그렇게 중요한 정보는 아니지만 확실한 정보
를 관리해야됨


관계와 관계타입


관계 :  

두 개 이상의 엔티티들을 특정한 의미로  
연관 짓는 것 


관계 타입 : 


동일한 의미를 가진 관계들의 틀  
고용자들과 프로젝트들이 참여하는 works_on
관계 타입
마름모로 표현 한다.

 

관계타입에 대한 제약조건 



카디날리티 제약조건 


1:1
1:n
n:1
n:M


참여 제약조건 


의무적으로 참여해야하는지
선택적으로 참여해야하는것인지 여부


ER모델 -> 관계형데이터 모델로 변환하기 위해 배운다.

 

관계제약조건 4가지 



도메인 제약조건, 키제약조건, 참조무결성 제약조건, 엔티티무결성 제약조건


1. 도메인 제약조건 : 도메인 값을 넘어가는 값이 들어가면 안된다.
                                  

2. 키 제약조건 :  키 애트리뷰트에는 중복 된 값이 들어가면 안된다.
                       핵심 애트리뷰트(candidate)를 찾는 것이 중요 하나씩 지워나간다. 
                       

3. 참조무결성 제약조건 : 참조 받는 릴레이션에 참조하는 값을 가진 튜플이 존재 해야 한다.

4.  엔티티무결성 제약조건 : 기본 키 애트리뷰트에 null 값이 들어가면 해당 데이터를 찾을 수가 없다.
                                     

 

 



DBMS에서 일어나는 효율적으로 일어나는 연산
Search, Insert, Delete, Update

위의 4가지 관계조건은 
사용자 만족을 위한것이 아니라, 사용자가 잘못되거나, 깨지는 작업을 하더라도
DBMS가 원천적 봉쇄를 하거나 그런 일이 일어나지 않도록 하는 작업이다.
 


관계형데이터 모델의 가장 큰 장점 : 
                                    포인터 없이 값만을 갖고 포인터의 역할을 할 수 있는 매커니즘

null은 특수마크라고 알면 된다. 값이 아님.

엔티티 무결성 제약조건 : 
                              기본 키 애트리뷰트에 null 값이 들어가면 해당 데이터를 찾을 수가 없다.


하나의 릴레이션에 두개의 애트리뷰트 키가 들어가고 하나가 캔디데이트 키면 
CANDIDATE 키는 NULL이 들어갈수 있다. 


참조라고 하는 것은 하나의 릴레이션 R에 있는 속성 F의 값으로 다른 릴레이션 S의 기본 키 P값을
참조 하는 것.
-> 한쪽에선 기본키 다른쪽에선 기본키가 아닌 애트리뷰트에 있을떄
     이때 기본키가 아닌 것이 기본키를 참조한다. 얘는 외래키라고 한다.
부서번호 5 -----------------------> research 5를 참조하여 5만써도 research부서
라는 것을 알 수 있음.


1. 외래키가 만족 시켜야 할 조건이 있을까?
-> 
부서번호 6 --------------------> X 6 예를들어 6번 부서가 없다면 큰 문제가 된다.
소개팅에서 산기대 의대다녀요! -> 산기대 의대가 없다. 이런일이 발생되면 안된다!
라는 것이 참조 무결성 제약 조건이다.
참조 되는 릴레이션에 반드시 참조 되는 튜플이 있어야 한다. 

2. 외래키인 애트리뷰트는 null값이 들어 갈 수 있을까?
-> 게임공학과 의 창설 예
     학과 입장에선 학생이 없을 수도 있다.
     학과와 학생은 선택적 참여를 하는 관계다.
     이 부서엔 반드시 존재 해야만 한다면 의무적 참여 관계로 표현
     이 때에는 null값이 들어 갈 수 없다.
     참조 관계는 두개의 엔티티 타입을 외래키 관계를 통해서 표현을 한다.
     있느냐 없느냐는 이 참조 관계가 선택적참여이냐, 의무적 참여이냐에 따라서 달라 질 수 있다.

3. DBMS가 어떻게하면 무결성 제약조건을 보장할 수 있을까?
-> 

1. 검색 -> 도메인 제약조건이 위반되는 내용이 있을까? 읽기 연산으로는 도메인 제약조건이 위반되는 X
                키 제약조건에 위반되는 내용은? 갑자기 중복이 되는 경우는 X
                엔티티 제약조건은? 없다.
                참조 무결성 제약조건은? 없다. 읽기는 없다 읽기는!!
               = 검색은 없다.

2. 삽입 -> 도메인 제약조건 위반 ? -> 생길수 있다. 내가 도메인 값을 넘어가는 값을 집어 넣는 경우
                키 제약조건 위반? -> 키 애트리뷰트 중복 값을 넣으면 위반 할 수 있다. 
                엔티티 제약조건은? 내가 null을 넣음으로
                참조 무결성 제약 조건은? 있다. 
               = 4가지 모두 발생 시킬 수 있다.
                 사용자가 이런 값을 넣게 하려고 하면 해당 값을 Insert 할 수 없다고 팝업창을 띄워준다.
3. 삭제 -> 도메인 제약조건 위반? 없음.
                키 제약 조건 위반? 내가 삭제한다고 중복이 생기진 않는다. 따라서 없음
                엔티티 제약 조건 위반? 발생 하지 않는다.
                참조 무결성 제약 조건 위반? 생길 수 있다.  -> 게임공학과가 없어진다. 그럼 학생들은 
                                                                              소속 학과가 없다.

                = 참조 무결성 제약조건만 일으 킬 수 있다.
                   1. 게임공학과 폐과 -> 컴공으로 학생들을 옮긴다. 또는 원하는 과로 보낸다.
                   2. 삭제를 거부.
                   3. 삭제되는 투플을 참조하는 투플들까지 삭제 = 줄줄이 삭제되는 경우가 생긴다.
                                                                                  참조에 참조에 참조가 연쇄삭제 되는 경우
                 
4. 갱신 -> 기존에 있는 내용의 값을 바꾸는 연산  
                Insert Delete를 한다.
                삽입, 삭제를 생각하면 되므로 따로 생각 할 필요가 없다.


 

+ Recent posts