본문 바로가기
728x90

DB12

DB 개념 7편 - 함수적 종속성, 정규화(1NF~BCNF) 함수적 종속성함수적 종속성 개념Functional dependency 함수적 종속성어떤 스키마 R의 두 속성 집합 A, B가 존재한다.R의 모든 튜플집합 r로부터 속성 집합 A의 속성 값이 동일한 임의의 두 튜플 t1과 t2를 선택했을 때, t1과 t2의 속성 집합 B의 속성 값도 동일하다면 이와 같은 현상을 함수적 종속성이라고 한다. 즉, A에 의해 B는 유일하게 결정된다. 이때, A가 B를 함수적으로 결정한다고 말하며, A는 결정자, B는 종속자라고 부른다. R = relationA,B = attribute set. A, B ⊆ Rr(R) = tuple set of Rt1, t2 ⊂ rt1[A] = t2[A] → t1[B] = t2[B] 이와같은 함수적 종속성은 R에 여러개가 존재할 수 있고 이들의 .. 2024. 11. 14.
VARCHAR vs CHAR 간단하게 말해 VARCHAR은 가변길이, CHAR은 고정길이로 문자를 저장한다.아니 이미 모델링 할 때 최대 문자 갯수를 지정해줬는데? 라고 생각할 수도 있겠지만 그런 개념이 아니다.예시만약 최대 문자길이를 8byte로 지정한 VARCHAR(8), CHAR(8) 두 column이 있다고 치자.VARCHAR 타입의 column에 3byte 문자를 저장한다면, 8byte를 모두 쓰지 않고 3byte만 사용하게 된다.반면 CHAR 타입의 column에 3byte 문자를 저장한다면, 나머지 5byte를 모두 공백으로 채우고 8byte 전체를 모조리 쓰게 된다.이런 의미에서 VARCHAR은 가변길이이다. VARCHAR 타입으로 지정하게 되는 경우 메모리 상의 이점을 얻을 수가 있다.쓰기쓰기에서 VARCHAR은 길.. 2024. 8. 25.
인덱스 인덱스특정 데이터를 검색하는 쿼리를 실행하면 첫 행부터 마지막 행까지 모든 데이터를 확인하게 된다.대용량 데이터에서는 효율적인 검색을 위해 인덱스를 사용하기도 한다.검색 쿼리를 날릴 때 워크벤치에서 결과창 우측의 탭 중 Execution Plan 탭을 확인하면 해당 쿼리가 인덱스를 사용해서 검색되었는지 확인할 수 있다.장단점검색 성능 향상으로 시스템 전체의 성능을 향상시키는 장점을 가진다.하지만 인덱스를 생성하려면 DB에 추가적인 공간이 필요한데, DB의 약 10% 공간을 차지하게 된다.그러므로 소용량 데이터를 가지는 DB에서는 적합하지 않다.대용량 데이터를 가지는 DB에 검색이 자주 일어나는 컬럼에 대해서 인덱스를 만드는 것이 좋다.인덱스 특징과 생성 고려사항인덱스는 대용량 데이터 테이블에 적합컬럼 단.. 2024. 8. 25.
전체 데이터 삭제 DELETE vs TRUNCATE DELETE vs TRUNCATEDELETE에 조건을 주지 않는 것과 TRUNCATE는 같은 기능을 한다.둘 다 테이블 구조를 남기지만 내부 데이터를 모두 삭제하게 된다.그럼에도 TRUNCATE의 성능이 DELETE보다 좋은 이유는 무엇인지 차이점을 비교해보자.작동 방식의 차이DELETE약 O(N)의 작업 시간 DELETE는 데이터를 한 행씩 삭제한다. 행을 삭제하기 전에 로그를 남기고 해당 행에 대한 트랜잭션 로그를 작성한다.이로 인한 장점은 롤백이 가능하다는 것이다.그러나 로깅 및 트랜잭션 관리를 위한 추가적인 오버헤드가 발생하게 된다.또한 AUTO_INCREMENT 값에 대해 삭제된 행들을 리셋하지 않는다.(이전 값부터 증가)TRUNCATE약 O(1)의 작업 시간 TRUNCATE는 로깅 및 트랜잭션.. 2024. 8. 25.
문자열 인덱스, like문 주의사항 like 사용 시 주의사항을 설명하기 앞서 문자열 인덱스에 대해서 알아보자.문자열 인덱스인덱스는 다양한 데이터 유형에 대해서 만들 수 있지만, 문자열 컬럼에 인덱스를 만드는 경우에 대해서 설명하겠다. 문자열 인덱스는 문자열 비교를 할 때 왼쪽에서 오른쪽으로 문자를 비교하는 방식으로 구현된다. 그렇기 때문에 특정 접두사로 시작하는 문자열을 검색할 때는 효율적인 검색이 가능하다. 문자열 인덱스는 DBMS의 종류에 따라서, 혹은 하나의 DBMS에서도 스토리지 엔진의 종류에 따라서 구현 방식이 달라질 수 있다. 주로 사용되는 구현 방식은 B-Tree, 해시이다. B-Tree해시최선O(1) 루트인 경우O(1)평균O(log N)O(1)최악O(log N)O(1) 결국 인덱스는 O(log N) ~ O(1) 시간 내에 .. 2024. 8. 25.
SQL 정리 프로그래머스 고득점 키트 돌리면서 익혔던 문법들 정리is null과 is not null다른 비교의 경우 =를 사용하여 비교하지만,null과 비교할 때는 is를 사용해 비교한다.alias칼럼명 as c1으로 alias를 줄 수 있다. as는 생략이 가능하다. 또한 select에서 alias를 사용하면 출력에서 alias로 칼럼명이 나온다.DateDate 타입의 경우 여러 가지 관련 함수가 존재한다.format을 지정해주지 않으면 기본적으로 다음과 같은 형식으로 출력된다.2024-03-19 01:29:56 (yyyy-MM-dd hh:mm:ss)Date 함수함수명역할year()년도만 반환함month()월만 반환함day()일만 반환함month와 day에서 첫글자 0이면 떼고 반환함SQL date_format .. 2024. 8. 25.
DB 개념 6편 - ER 모델 Entity-Relationship Model에 대한 더 자세한 내용을 다뤄보겠다.용어Entity Set개체들의 집합ERD에서 직사각형으로 표현된다.Relationship여러 Entity 간의 관계ERD에서 마름모로 표현된다.Attribute어떤 개체의 속성ERD에서 타원으로 표현된다. primary key로 사용되는 attribute의 경우 직선 밑줄이 그어진다.Relationship SetEntity 간의 어떤 관계가 2개 이상 나타나는 경우, 관계에 속한 N-tuple들의 setN-tuple릴레이션의 attribute를 n개 가지고 있는 행Descriptive Attributes of Relationship관계에 대한 부가적 속성ex) 대출 날짜 Relationship 종류Binary Relatio.. 2024. 8. 25.
DB 개념 5편 - View와 MView의 차이 📌View데이터베이스에서의 뷰쿼리문에 의해 테이블을 기반으로 만들어진 가상의 테이블이다. Base Table 일부를 가져온다.View != Table테이블은 데이터베이스에 실제로 저장된다. 하지만 뷰는 데이터베이스에는 저장되지 않고 일시적으로 보여주는 역할만 한다. 뷰는 쿼리문을 실행할 때마다 생성된다.가상의 테이블이기 때문에 삽입, 삭제는 불가능하다.📌Materialized View구체화 뷰 MView뷰의 일종이나, 데이터베이스에 실제로 저장된다.쿼리 수행 속도의 향상 을 위해서 Aggregation 등 자주 사용하는 함수의 수행 결과를 미리 MView로 생성해둔다.Base Table의 Update가 발생하는 경우, Triggering으로 MView도 업데이트된다. 2024. 8. 25.
728x90