본문 바로가기
데이터베이스

RDBMS 기초, 용어(릴레이션, 스키마, 후보키, 기본키) 무결성 제약조건

by kcj3054 2021. 10. 12.

데이터베이스란?

  • 데이터의 모임
  • 통합된 정보를 저장하여, 운영할 수 있는 데이터의 묶음
  • 데이터 관리를 효율적으로 한다
  • 인터넷, 책에 여러가지 말이 있지만 간단하게 말하면 여러가지 데이터들을 잘 묶고 통합해서 데이터를 효율적으로 관리하기 위해서 사용하는 것이다.

장점, 단점

  • 데이터 공유
  • 중복 최소화 -> 하나의 테이블에 있으면 다른 테이블에서는 JOIN이나 해서 데리고 와서 보면되니..
  • 일관성, 무결성
  • 용이한 데이터 접근 -> 필드명 칼럼 알고 있으면 금방 금방 접근한다

RDBMS (관계형 데이터 베이스)

  • 관계형 데이터베이스는 각 테이블이라고 생각하면된다, 2차원 테이블 형식을 이용하여 데이터를 정의하고 설명하는 것이다
  • 데이터를 구조화하는 것은 속성과 value 값 사이에서 관계를 엮으면서 테이블 모양의 구조로 만들어 내는 것이다.
  • 각 테이블에서 primary key 외래키가 있는데 이것은 각 row들을 유일하게 식별할 수 있는 칼럼인데 보통 id를 primary key로 가지는 것 같다, null 값은 허용 하지 않으면서, 유일한 값이니,..

스키마

  • 회원 번호, 이름, 아이디, 나이 같이 자료의 구조를 정의하는 것을 스키마라고한다.

릴레이션

  • 속성, 튜플, 스키마를 합쳐 릴레이션 또는 테이블이라고한다. (릴레이션 == 테이블)

  • 릴레이션 내에서 튜플을 유일하게 식별할 수 있는 식별자,

슈퍼키

  • 튜플을 유일하게 식별할 수 있는 단일 속성 또는 그룹의 속성
  • 모든 릴레이션에는 적어도 하나 이상의 슈퍼키가 존재한다. 그래야 db내의 회원들을 식별할 수 있기때문이다.

후보키

  • 후보키는 슈퍼키 중에서 치소한의 속성으로 식별 가능한 것이다.

기본키(Primary Key)

  • 후보키 중에서 릴레이션을 대표할 하나의 키로 정한 것이 기본키이다.

대체키, 유니크키

  • 후보키 중에서 기본키를 제외한 나머지 키를 대체키 또는 유니크키라고 부릅니다.

외래키

  • 부모 자식 관계에서 부모 없는 자식은 없다를 생각하자 부모를 master.. 자식들의 fk는 부모의 domain내에서 결정된다.
  • 관계 테이블에서 부모의 도메인을 참조하는 키가 fk키이다.
  • 참조하는 릴레이션이 참조되는 릴레이션을 참조하기 위해서는 외래키를 통해 참조할 수 있습니다.

  • 게시글 테이블에서 작성자 회원번호를 외래키라고 하고, 회원 테이블의 회원번호 기본키를 참조한다
  • 외래키를 통해 다른 테이블을 참조한다.

무결성 제약조건

  • 기본적으로 지켜야 할 조건과 제약을 무결성을 위한 제약조건이라고한다.

엔터티 무결성 제약 조건

  • 어떠한 기본키도 null 값이 될 수 없다 -> 기본키는 튜플을 식별 하는데 사용되기 때문에 null이면 튜플을 식별할 수 없기때문이다.

키 무결성 제약조건

  • not null 무결성 제약조건
  • 튜플을 구성하는데 필수적인 속성이 null이면 안 되는 것을 not null 무결성 제약조건이라고한다.

도메인 무결성 제약조건

  • 도메인은 속성을 가질 수 있는 값의 집합을 나타낸다.
  • 도메인 무결성은 더 이상 분해될 수 없는 값의 집합이 원자값이어야한다는 것이다.
  • ex : 나이는 정수만 허용, 허용되지 않는 값이 존재해서는 안된다.

의미적 무결성 제약조건 (값의 범위를 지정하는 것)

  • 도메인 무결성으로 무결성이 안될 수도 있다
  • ex : 속성 중에서 나이가 -1이 될 수도있지만 의미적으로는 허용이 되지않는다.

참조 무결성 제약조건

  • 외래키의 속성은 기본키의 속성과 동일한 도메인을 가진다
  • 참조하는 테이블의 외래키는 참조된 테이블의 기본키에 존재하는 값이거나 null 값이어야한다.
  • 만약 참조하는 테이블에 존재하지 않은 이상한 회원번호를 저장한다면, 참조된 테이블에서 원하는 값을 찾을 수없다. 그래서 참조하는 테이블 값과 참조된 테이블의 값은 일치되어야한다.

엔터티

  • 하나의 엔터티는 여러 속성을 가질 수 있다.
  • 엔터티는 속성에 의해 어떤 데이터원소를 가질지 나타낼 수 있다.
  • 엔터티에는 기본키가 존재해야한다

수정하기

update 구문은 통상적으로 where구문과 같이 쓴다
왜? -> 만약 데이터가 100만건이면 그것을 모두 update하지 않을 거라고 생각하기에 경고문이
나온다

ex : update mytable set 수정하고 싶은 칼럼 명 = '값' where 특정 칼럼 = '값'   

update mytabel set name ='i3', model\_num = 'value' ...  where id = 3;  

삭제하기

delete from mytable 조건

delete from mytable

delete from mytable where id = 1;

product 테이블과

ranking 테이블을 만든다

두개의 테이블은 code테이블로 연결시키면 중복성, 유일성을 지킬 수 있다

prodcut 설계
code, title, ori_price, discount_price, discound_percent, delivry

ranking 설계
id, category, subcategory, ranking, product_code

DCL -> 테이블과 테이블의 관계를 연결할때 외래키를 사용할 수 있다..

  • 사용 하는 이유 : 두 테이블 사이에 관계를 선언해서, 데이터의 무결성을 보장하기 위해서
  • 외래키로 지정하면 : 해당 키가 외래키로 지정이 되어있으면 references(연관) 테이블의 키에 해당 값들이 무조건 있어야지 에러가 발생하지 않는다
  • 데이터 무결성 (두 테이블간 관계에 있어서, 데이터의 정확성을 보장하는 제약 조건을 넣는것)

데이터베이스 테이블끼리 관계 (관계 테이블)

  • 밑의 그림에서 자동차 구매고객은 customer테이블과, car테이블에 종속된다.

  • customer 테이블과, car테이블은 독립적으로 존재할 수 있다 master 테이블,

  • customer테이블과 자동차 구매고객테이블은 1 : n이다 왜냐? 고객한명이 여러대의 자동차를 구매할 수 있어서 '자동차구매고객 테이블'에 여러곳에서 기록 될 수 있으니 1 : n관계이다.

  • 'Car테이블'과 '자동차구매고객 테이블'은 또한 1 : n관계이다 자동차한대가 '자동차구매고객테이블' 여러곳에서 기록될 수 있기 때문이다.

  • 그럼 customer 테이블과 car 테이블의 관계는 어떻게되나? n : m관계이다. -> 한 고객에 여러대의 차를 살 수도 있고, 하나의 차를 여러고객이 살 수도 있기때문이다.

  • n : m관계의 테이블이 있을 때는 반드시 Relation 테이블이 하나 만들어져야한다..

  • 위에서 1 : n에서 1은 부모이고 n은 자식역할이다 부모는 자식의 domain역할을 하면서 범위를 제한 할 수 있다.

  • 밑의 관계도를 Entity Relationship Diagram(ERD)라고한다.

'데이터베이스' 카테고리의 다른 글

옵티마이저와 실행계획  (0) 2021.12.30
join  (0) 2021.12.29
인덱스, 정규화, AUTO INCREMENT  (0) 2021.12.27
db 압축  (0) 2021.11.11
기본적인 CRUD, 외래키  (0) 2021.10.13