식별자는 엔터티를 대표할 수 있는 유일성을 만족하는 속성이다. 일반적으로 회원 ID, 계좌번호, 주민번호 등이있다. 1. 주식별자(기본키 PK) - 최소성, 대표성, 유일성, 불변성을 모두 만족한다. 2. 키의 종류 데이터베이스 키 설명 기본키(PK) - 후보키 중 엔터티를 대표할 수 있는 키 - 최소성/대표성/유일성/불변성 만족 후보키(Candidate Key) - 유일성과 최소성을 만족하는 키 슈퍼키(Super Key) - 유일성은 만족하지만 최소성은 만족하지 않음 대체키(Alternate Key) - 여러 개의 후보키 중에서 기본키를 선정하고 남은 키 외래키(FK) - 하나 혹은 다수의 다른 테이블의 기본 키 필드를 가리키는 것으로 참조 무결성을 확인하기 위해 사용하는 키 - 허용된 데이터 값만 데..
2. 반정규화(De-Normalizatioin) - 데이터베이스의 성능 향상을 위하여 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법 - 반정규화는 조회(select) 속도를 높이지만 데이터 모델의 유연성은 낮아진다. 1) 반정규화를 수행하는 경우 - 정규화에 충실하면 종속성 활용성은 향상되지만 수행 속도가 느려지는 경우 - 다량의 범위를 자주 처리해야하는 경우 - 특정 범위의 데이터만 자주 처리하는 경우 - 요약/집계 정보가 자주 요구되는 경우 2) 반정규화 절차 절차 설명 대상 조사 및 검토 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상 조사 다른 방법 검토 - 수행 전 다른 방법이 있는지 검토 - *클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 등 검토 반정규화 수..
1. 정규화 - 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며, 데이터를 분해하는 과정 - 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법 - 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다. - 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화 할 수 있다. - 정규화는 제 1정규화 부터 제 5정규화 까지 있지만 실질적으로는 제 3 정규화까지만 수행한다. - 테이블을 분해하기 때문에 join을 수행하여 하나의 합집합으로 만들 수 있다. - 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거된다. - *이상현상이 발생하는 문제를 해결할 수 있다. * 이상현상(Anoomaly)..
어떤 컬럼의 값들을 대상으로 원하는 특징값을 구해주는 함수를 Aggregate Function, 우리말로는 집계 함수라고 한다. 1. SUM() 함수 - 합계 2. STD() 함수 - 표준편차 그런데 SQL에는 집계 함수 말고도, 단순한 산술 연산을 해주는 Mathematical Function들도 있다. 우리 말로 '산술 함수'라고 할 수 있는데. ABS() 함수 - 절대값을 구하는 함수 SQRT() 함수 - 제곱근을 구하는 함수 CEIL() 함수 - 올림 함수 이런 함수들이 있다. 3. FLOOR() 함수 - 내림 함수 4. ROUND() 함수 - 반올림 함수 이것 말고도 또 다양한 산술 함수들이 있는데, 더 많은 산술 함수는 SQL 매뉴얼을 참고하면된다. 집계 함수와 산술 함수의 차이점은 집계 함수..
1. IS NULL 과 = NULL은 다르다. select * from table where column is null이라고 쓰면 컬럼 값이 null인 것을 고를 수 있다. 하지만 =null이라고 쓴다면 결과는 다르게나온다. =null이라고 쓰면 아무런 row도 출력되지 않는다. NULL은 어떤 값이 아니기 때문에 애초에 등호(=)를 사용해서 어떤 값과 비교할 수 있는 대상이 아니다. 그래서 = NULL은 절대 TRUE일 수가 없다. 그래서 IN NULL이라고 쓰는 것이다. 앞으로 NULL인지를 확인할 때는 = NULL을 쓰면 안 되고, 반드시 IS NULL을 써야한다 당연히 != NULL, NULL 같은 것도 쓸 수 없다. 이는 IS NOT NULL이라고 써야한다. 2. NULL에는 어떤 연산을 해도 ..
대소문자 구분 문제 예를들어 소문자 g가 포함된 값들을 찾는다고 할 때, 조건식에 소문자 g를 썼는데 대문자 G가 포함되어 있는 row도 함께 조회가 되어버린다. 이것은 mySQL의 기본 설정 때문이다. 테이블에 적용된 기본 설정을 보는 방법은. 위 그림의 i 표시를 클릭하면된다. 여러 항목들 중에서 Table collation 항목을 보면된다. 이 항목은 문자열이 서로 동일한지를 비교할 때 적용되는 설정이다. 그 뒤에 utf8mb4_0900_ai_ci 라는 값이 써있습니다. 여기서 ci는 case-insensitive의 약자로 문자열이 동일한지 확인할 때, 대소문자를 구별하지 않겠다는 뜻이다. 바로 이 설정 때문에 아까 대소문자가 달라도 알파벳만 같으면 같다고 판단하는 것이다. 만약 이 설정을 다른 걸..