본문 바로가기

코딩 공부204

[SQL] 반정규화 반정규화 (De-Normalization) 반정규화란 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로, 의도적으로 정규화 원칙을 위배하는 행위이다. → 조회속도를 향상시키지만, 데이터 모델의 유연성은 낮아진다. 반정규화를 수행하는 이유 정규화에 충실하여 종속성, 활용성은 향상 되었지만 수행속도가 느려진 경우 다량의 범위를 자주 처리해야하는 경우 특정 범위의 데이터만 자주 처리하는 경우 요약/집계 정보가 자주 요구되는 경우 반정규화 기법 1. 테이블 통합 테이블 통합은 두 개의 테이블이 조인되는 경우가 많아 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행한다. 2. 테이블 분할 테이블 분할은 테이블을 수직 또는 수평으로 분.. 2022. 9. 14.
[SQL] 정규형 정규형 (Normal Form) -릴레이션이 정규화된 정도 -각 정규형마다 제약조건이 존재 (릴레이션 특성을 고려 적합한 정규형 선택) : 정규형의 차수가 높아질수록 요구되는 제약조건이 많아지고 엄격해짐 1. 제 1 정규형 (1NF) 릴레이션의 모든 속성이 더는 분해되지 않는 원자 값만 가지면 제 1 정규형을 만족함 제 1 정규형을 만족해야 관계 데이터베이스 릴레이션 예시 ※ 1NF 이상 현상의 발생 이유 기본키인 {고객아이디, 이벤트번호}에 완전 함수 종속되지 못하고 일부분인 고객아이디에 종속되는 등급과 할인율 속성이 존재하기 때문 → 부분 함수 종속이 제거되도록 이벤트참여 릴레이션을 분해해서 해결 : 분해된 릴레이션은 제 2 정규형에 속하게 됨 2. 제 2 정규형 (2NF) 릴레이션이 제 1 정규형에.. 2022. 9. 14.
[SQL] 정규화 정규화 (Normalization) 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정. 즉 이상현상이 발생하는 릴레이션을 분해하는 과정. ※ 정규화를 통한 릴레이션은 무손실 분해이어야 한다. 릴레이션은 의미적으로 동등한 릴레이션들로 분해되어야 하고 분해로 인한 정보의 손실이 발생하지 않아야함 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능 이상현상 (Anomaly) 불필요한 데이터 중복으로 인해 릴레이션에 대한 데이터 삽입 수정 삭제 연산을 수행할 때 발생할 수 있는 부작용 1. 삽입이상 (Insertion anomaly) 릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야 하는 문제 2. 갱신 이상 (Update a.. 2022. 9. 14.
[SQL] SUBSTRING, SUBSTRING_INDEX SUBSTRING 문자열을 특정위치부터 원하는 만큼 가져오는 함수로, 시작위치와 가져올 문자수를 지정해줘야 한다. SUBSTRING_INDEX(string, start, cnt); // 1번 인수는 문자열, 2번 인수는 시작할 문자 위치, 3번 인수는 시작할 위치에서 표시할 문자 개수 SUBSTRING_INDEX 구분자를 기준으로 문자열을 잘라오는 기능으로, 구분자를 제거하여 가져오는 함수는 아니니 주의해야 한다. SUBSTRING_INDEX(string, '구분자', position); // 2번 인수는 구분자 3번 인수는 구분자를 기준으로 위치 2022. 9. 14.
[JAVA] 추상 클래스와 인터페이스 추상 클래스 (Abstract Class) 일반 클래스와 별 다를 것이 없지만, 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이며 미완성 설계도에 비유할 수 있습니다. (메소드의 바디가 없다.) abstract class ClassName { ... public abstract void methodName(); } 인터페이스 (Interface) 다른 클래스를 작성하는데 도움을 주는 목적으로 작성하고 클래스와 다르게 다중상속(구현)이 가능하며 기본 설계도라고 표현할 수 있습니다. interface InterfaceName { public static final constName = value; public abstract void methodName(); } 추상 클래스.. 2022. 9. 13.
[JAVA] 오버로딩과 오버라이딩 오버로딩 (Overloading) 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 조건 메소드의 이름이 같아하한다. 매개변수의 개수나 타입이 달라야 한다. 리턴 값만다른 것은 오버로딩을 할 수 없다. public class Total { public static void main(String[] args) { uInsert("홍길동", '남', 30); uInsert("id001", "pw001"); } private static void uInsert(String id, String pw) { System.out.println("아이디 : " + id); System.out.print.. 2022. 9. 13.