SQL 과 관계형 모델
2021. 6. 14. 14:20ㆍ프로그래밍/DataBase
728x90
※ 관계형 데이터 베이스 실전 입문 (오쿠노 미키야 (지은이),성창규 (옮긴이), 위키북스) 을 참조해 공부한 내용입니다. ※
SQL 릴레이션 조작
SQL과 관계형모델은 차이도, 대응하는 부분도 많다.
- SELECT
-> RDB의 핵심이라고 할 수 있다. SQL에서의 유일한 데이터 조회 명령어로, '질의'기능을 전부 포함한다.
-> 강력하고 유연하며 다양하게 응용된다
- INSERT (삽입, 갱신처리)
-> 릴레이션 갱신은 불가능 왜냐하면 릴레이션은 '값'이기 때문이다.
-> 아무리 많은 '요소'가 있어도 하나의 '값'이기 때문에 의미는 갱신될 수 없다.
-> INSERT는 행을 추가한다.
관계형 모델 : 릴레이션을 저장하는 변수인 Relvar(Relation Variable) 존재
SQL의 테이블 갱신처리 = RelVar의 역할 = 테이블에 할당된 릴레이션 값 변경
-> 즉, INSERT는 RelVar의 값인 릴레이션에 새롭게 INSERT할 튜플을 추가해 기존 릴레이션과 바꾸는 작업
= 변수에 담는 '값' 을 변경하는 작업.
※ RelVar은 SQL에는 존재하지 않는 개념이다. 왜냐하면 거대한 table에서 읽어온 데이터를 변수에 대입하려면 엄청난 copy를 수행해야하기 때문이다. 따라서 SQL의 테이블 = 릴레이션에 해당함 + RelVar의 역할도 함께 수행 - 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 |