SQL 과 관계형 모델

2021. 6. 14. 14:20프로그래밍/DataBase

728x90

※ 관계형 데이터 베이스 실전 입문  (오쿠노 미키야 (지은이),성창규 (옮긴이), 위키북스) 을 참조해 공부한 내용입니다. ※


SQL 릴레이션 조작

SQL과 관계형모델은 차이도, 대응하는 부분도 많다. 

 

  1. SELECT
    -> RDB의 핵심이라고 할 수 있다. SQL에서의 유일한 데이터 조회 명령어로, '질의'기능을 전부 포함한다.
    -> 강력하고 유연하며 다양하게 응용된다
     
  2. INSERT (삽입, 갱신처리)
    -> 릴레이션 갱신은 불가능 왜냐하면 릴레이션은 '값'이기 때문이다.
    -> 아무리 많은 '요소'가 있어도 하나의 '값'이기 때문에 의미는 갱신될 수 없다.
    -> INSERT는 행을 추가한다. 
    관계형 모델 : 릴레이션을 저장하는 변수인 Relvar(Relation Variable) 존재
    SQL의 테이블 갱신처리 = RelVar의 역할 = 테이블에 할당된 릴레이션 값 변경
    -> 즉, INSERT는 RelVar의 값인 릴레이션에 새롭게 INSERT할 튜플을 추가해 기존 릴레이션과 바꾸는 작업
    = 변수에 담는 '값' 을 변경하는 작업.


    ※ RelVar은 SQL에는 존재하지 않는 개념이다. 왜냐하면 거대한 table에서 읽어온 데이터를 변수에 대입하려면 엄청난 copy를 수행해야하기 때문이다. 따라서 SQL의 테이블 = 릴레이션에 해당함 + RelVar의 역할도 함께 수행
  3. DELETE = 차집합

4. UPDATE

 

SQL에는 있고, 관계형 모델에는 없는 것

목록 설명
요소의 중복 릴레이션 =  구조가 같은 튜플의 집합 -> 집합이라는 것은 중복이 허용되지 않는 다는 것
하지만 SQL은 같은 행 존재를 허용한다.( 유일성 제약같은 제약 사항이 없을 때 ) 
즉, 테이블은 집합이 아니다! 정확히는 테이블은 다중집합(Multiset)이다
요소 사이의 순서 집합은 순서가 없다. 즉 릴레이션, 튜플, 제목에 포함된 요소는 순서가 없다.
하지만
SQL은 순서가 있다. 칼럼은 정의된 순서대로 나열되고, 행 정렬도 된다.
쿼리 실행 결과도 지정 순서대로 나열된다.
-> 관계형 모델을 따라 SQL을 사용하려면 행이나 칼럼 위치를 고려하여 쿼리를 작성하면 안된다

ex) ROWNUM, ORDER BY 1 등 또는 칼럼 위치를 지정해 데이터를 가져오는 API등의 사용은 자제해야 한다.
릴레이션 갱신 릴레이션 = 값 = 갱신불가
갱신 가능한 것은 '변수' 뿐.
테이블은 값 + 변수의 기능
구분을 명확히 해야한다.
트랜잭션 트랜잭션은 SQL에서만 의미가 있다.
트랜잭션이란 여러개가 병렬로 실행된 갱신을 모순 없이 수행하기 위한 이론인데, 릴레이션은 원래 갱신이 불가하기 때문에 트랜잭션의 ACID 특성이 관계가 없다.

하지만 RDB에서 빠질 수 없는 개념이자 SQL사양의 일부이다.

그렇지만 관계형 모/델과는 다른 독립적인 개념이므로 RDB를 잘 사용하기 위해서는 양쪽(관계형 모델과 트랜잭션)을 다 이해하는 것이 필요하다.
스토어드 프로시저 관계형 모델은 프로시저가 존재하지 않는다.
커서를 루프로 처리하는 작업은 관계형 모델에 적합하지 않다.
테이블을 루프로 처리하면 집합연산을 정면으로 부정하는 것이다.
NULL 집합엔 NULL이라는 개념이 없다.
NULL = 값이 아닌 값이 존재하지 않거나 알 수 없다는 '특별한 기호'

NULL처리가 매우 중요하다

 

728x90

'프로그래밍 > DataBase' 카테고리의 다른 글

NULL값의 존재 / 관계형 모델의 성질  (0) 2021.06.14
릴레이션의 연산  (0) 2021.06.14
관계형 모델  (0) 2021.06.14