DataBase

SQL 5주차

해변 2023. 4. 9. 00:26
Chapter 1 ER Model Design Consideration

 

Person이 n개 Product는 1개
여러명이 똑같은 제품을 살 수 있다
한 사람이 물건 하나만 살 수 있다
 
아래 관계는 여러 사람이 한 나라의 대통령이 될 수 있는 것처럼 표현했기에 잘못됨

 어떤 가게에서 어떤 물건을 어떤 날에어디에 주소를 가지고 있는 어떤 사람이 구매했다.
단 attributes들을 릴레이션에 포함시켰기에 잘못된 표현이다.

  이 경우는 date 자체가 attributes이기 때문에 Dates가 엔티티로 있기 보단 릴레이션에 바로 date가 연결되는 것이 바람직함

(A) = addr1과 addr2를 같이 표현
(B) = 주소와 우편번호를 같이 적는 경우를 표현
 
모든 Employee가 정확히 두개의 주소를 갖고있음을 표현한 A 릴레이션
또한 주소가 2개 이상인 경우가 있을 수 있으므로 이와 같은 제약은 좋지 못하다
 
그에 반해 B와 같이 하나의 독립된 엔티티처럼 관리하면 어떨까?
한 사람이 여러개의 주소를 가질 수 있다. 고 표현했기 때문에 타당하다.
 
 

Chapter 2 Constraints and Weak Entity Set

 

제약 조건 
  • 몇가지 제약 조건을 표시할 수 있어야 한다.
    • Keys : 엔티티의 밑줄을 그어 표시하는 기본키
    • Single-Value constraints : 어떤 사람은 아버지가 한명이다와 같이 1대 N의 관계 혹은 유일한 값을 가져야하는 제약조건
    • Referential integrity constraints  : 참조 무결성 
      • 기본키를 참조하는 엔티티 셋과 기본키가 있는데 양쪽에 항상 같은 정보가 있어야한다는 것
      • 단 기본키에는 있는데 외래키에는 없는 경우는 상관없으나 외래키에는 있는데 기본키에 있는 경우는 문제 됨(삽입, 삭제 시에 고려)
      • 외래키 값은 참조하는 테이블의 기본키 값과 동일해야한다.
      • 참조하는 테이블의 기본키 값이 변경되면 이를 참조하는 모든 테이블의 외래키 값도 함께 변경되어야 한다
    • 이를 통해 테이블간 일관성 있는 데이터를 유지

 
 
 

strong relationship & weak relationship

 

ER Model을 보면 위의 선은 얇고 아래 선은 굵다
 

  • 강한 연결 고리
    • 관계형 데이터베이스에서는 외래키를 사용해 테이블간 관계를 맺는다
    • 이 때 강한 연결고리는 두 개체 사이에 한 개체가 다른 개체의 기본키를 참조하는 경우를 의미
    • EX) 모든 제품은 반드시 만든 회사가 있어야 한다
  • 약한 연결고리
    • 관계를 맺는 개체중 하나가 다른 개체의 기본키를 참조하지 않는 경우를 의미
    • EX) 특정 컴퍼니가 존재하지만 제품이 없는 경우도 존재한다는 것을 의미

 

Referential integrity constraints (참조 무결성)

얇은 선은 어떤 회사가 만들었는지 확인이 안되는 제품들이있을 수 있다.
그렇기에 모든 제품이 오른쪽에 있는 테이블 어떤 값과 항상 연결되어 있다를 표현한다.
만약 Product->makes 일 경우 만든 회사가 꼭 하나 존재한다는 의미이다.