본문 바로가기

데이터베이스10

역정규화(반정규화) □ 효율을 위해서 정규화된 결과의 일부를 수정하여 중복허용 ○ 정규화되지 않은 상태에서 중복을 허용하는 것과는 다름 ○ 대부분 JOIN 시 발생되는 엄청난 계산량을 해결하기 위해서 사용 □ 역정규화(반정규화)진행시 고려사항 ○ 무결성 저하 주의 ○ 조회 속도는 향상되나, 입력/수정/삭제는 속도 저하됨 ○ DB저장공간 효율 저하 ○ 유지보수가 어려워지며 테이블 등 확장성이 매우 저하됨 * 정규화가 잘되어 있다면 데이터 입력/수정 효율 ↑ but 과도한 조인유발을 야기할 수 있어 조회시 효율 ↓ * 이를 위해 역정규화를 필요시 판단하여 적용해야함. 2023. 10. 27.
3 정규화 □ 3 정규형 ○ 식별자가 아닌 일반 속성간에는 종속성이 존재하지 않음 ○ 3정규형의 대상이 되는 속성을 이행 종속속성이라고함 ○ 즉, 일반 속성간의 종속과계를 분해하는 것 ○ 릴레이션에 존재하는 종속자는 후보 식별자가 아니어야함 TIP ~! 2정규형은 왕족의 반란, 3정규형은 지방호족의 반란이라고 생각하면 쉬움 2023. 10. 27.
2 정규화 □ 2정규화 Whole Key Dependent ○ 두개 이상으로 구성된 PK에서 발생 ○ R의 모든 속성이 후보 식별자 전체에 종속 ○ 일반 속성이 후보 식별자 전체에 종속되지 않고 일부에 종속된다면 2정규형이 아님 ○ 따라서 2정규형이기 위해서 모든 비 식별자 속성은 후보 식별자 속성에 완전 함수 종속돼야함 □ 2정규화 방법 ○ 일반 속성중에서 후보 식별자 전체에 종속적이지 않은 속성을 찾아 기본 엔터티에서 제거 ○ 그 속성의 결정자를 주 식별자로 하는 새로운 상위 엔터티 생성 2023. 10. 26.
정규화 INTRO □ 정규화 진행이유 ○ 테이블 간 중복된 데이터를 방지하여 Anomaly현상 방지 ○ 테이블 간 중복된 데이터를 방지하여 무결성(Integrity)을 유지하여 DB 안정화 및 최적화 도모 □ 예제) 쇼핑리스트 테이블 ○ 해당 테이블은 쇼핑리스트 정보가 적재되었음 ○ 주문상품 필드를 보면 다가속성과 복합속성으로 구성되어 있어 정규화에 위배 ○ 다가속성/복합속성 분리 - 다가속성을 분리하면 행이 증가 - 복합속성을 분리하면 필드가 증가됨 ○ 위 테이블은 다가/복합속성인 필드를 분리하였지만 데이터 중복이 되어 있는 상황으로 1정규화가 필요한 상황임 - 데이터 중복을 제거하기 위해 테이블 분할 진행 - 테이블 분할을 통해 주분번호와 주문상세내역 테이블의 1:M 구조 형성 ○ 위 처럼 1정규화를 진행했으나 두개 .. 2023. 10. 26.
Anomaly : 데이터 이상현상 마스터 테이블과 PK / FK 지정을 바탕으로한 모델링은 결국 하나의 결과로 데이터를 조회하기위한 과정임 ( DB모델링시 조회를 하면 엑셀구조와 비슷한 결과로 조회가능할 뿐 DB구조와 엑셀구조는 엄연히 다름) 이 과정에서 중복, 즉, Anomaly가 발생되지 않도록 중복 최소화에 주력하여 무결성과 정합성 등을 보장해야함 ○ 위와 같은 테이블 모델링을 진행했을 때 Anomaly 현상이 발생될 우려가 있음 ○ Anomaly - 데이터 이상현상 - 데이터 중복으로 인하여 Anomaly 발생 커짐 - DML(Update, Delete, Insert) 과정에서 해당 문제가 발생될 수 있음 * DML : Data Manipulation Language → Update : 홍길동을 2루수로 수정시 일부 홍길동이 바뀌.. 2023. 10. 25.
1:1 관계 ○ 부부관계 ○ 당사자의 입장에서 상대를 보더라도 반드시 단하나씩 관계를 가지는 것을 의미 ○ 일부일처제인 혼인 제도에서, 즉, 한 남자는 한 여자와 한여자는 한남자와 결혼할 수 밖에없음. 부인 또는 남편을 2명이상 둘 수 없음 ○ 이런 관계를 1:1 관계라고 개념 상 하나라도 합쳐도 전혀 관계가 없음 ○ 활용 쿼리문 --데이터 다중삽입 insert into 신랑 values(1,'홍길동', null), (2,'김길동',null), (3,'김두한',null) insert into 신부 values(1,'어우동', null), (2,'황진이',null), (3,'대장금',null) --데이터 수정 update 신랑 set 신부ID = 1 where 신랑ID = 1 update 신랑 set 신부ID = 2 .. 2023. 10. 24.
중학교 성적관리 프로젝트(part 2) 중학교 성적관리 프로젝트(part 1) 이어서.... □ 상황 ○ 과목, 학년별 담당 선생님이 따로있음 ○ 시엄은 중간/기말고사 두가지임 ○ 학생들은 학년, 반에 배정되며 반별로 학생들에게 고유 번호를 부여함 ○ 각 반에는 담임 선생님이 배정되어 있음. 선생님 중에는 담임을 맡지 않는 선생님도 있음 ○ 한 번의 학생은 대략 40명 정도이고 남녀 공학임 ○ 석차는 남녀 공통 1등부터 순서대로 정함 ▼▼▼▼▼▼1단계 : 키워드 추출▼▼▼▼▼ ○ 과목 선생 ○ 담당 선생 ○ 시험 - 중간고사, 기말고사 ○ 학생, 학년, 반, 배정, 고유번호(반별) ○ 담임, 선생님 ○ 한반의 학생 40명 ○ 남녀 공학 ○ 석차(남녀 공통 1등부터 순서대로) ▼▼▼▼▼2단계 : 명사/동사에 따른 테이블 분류▼▼▼▼▼ ○ 마스터.. 2023. 10. 20.
like & update문 1. Like 문 : 검색하고자하는 키워드 또는 값이 포함된 것을 조회할 때 2. Update 문 : 조건문을 활용하여 기존 값을 변경 #like문 SELECT * FROM 테이블명 WHERE 필드명 LIKE '%포함된 글자%'; #update문 update 테이블명 set 필드명 = '변경할 값' + 조건 where문 2023. 10. 19.
중학교 성적관리 프로젝트(part 1) □ 상황 ○ 과목, 학년별 담당 선생님이 따로있음 ○ 시엄은 중간/기말고사 두가지임 ○ 학생들은 학년, 반에 배정되며 반별로 학생들에게 고유 번호를 부여함 ○ 각 반에는 담임 선생님이 배정되어 있음. 선생님 중에는 담임을 맡지 않는 선생님도 있음 ○ 한 번의 학생은 대략 40명 정도이고 남녀 공학임 ○ 석차는 남녀 공통 1등부터 순서대로 정함 ▼▼▼▼▼▼1단계 : 키워드 추출▼▼▼▼▼ ○ 과목 선생 ○ 담당 선생 ○ 시험 - 중간고사, 기말고사 ○ 학생, 학년, 반, 배정, 고유번호(반별) ○ 담임, 선생님 ○ 한반의 학생 40명 ○ 남녀 공학 ○ 석차(남녀 공통 1등부터 순서대로) ▼▼▼▼▼2단계 : 명사/동사에 따른 테이블 분류▼▼▼▼▼ ○ 마스터 테이블(명사) = 기준 테이블 * 한번 선정되어 모델.. 2023. 10. 19.