목록DB (8)
Today I Learned

테이블에 들어갈 값과 제약조건 연간관계를 정의 하는 것을 모델링 이라고 함 모델링 한 설계 도면을 우리는 ERD 라고 부른다. 설계한 내용에 대한 테스트 및 검증이 필요하다. 설계할 때 무슨테이블이 들어가겠네 테이블에 어떤데이터가 들어가겠네 연결관계 생각하기 설계는 정답이 없고 제대로 돌아가기만 하면 됨 [sns service] 기능 1. 회원가입 2.profile등록 3.회원 profile보기 4.글쓰기 5.reply쓰기 6.글보기 7.유저가 작성한 reply 보기 8.친구목록 보기 9.좋아요 누른 사람들 보기 - 회원가입은 id,비밀번호,email,이름을 입력하여 진행 - 선택적으로 프로필을 등록할 수 있음 - 프로필 등록에는 다니는 학교와 회사를 입력 - 글과 댓글을 작성할 수 있음 - 이 글에는 ..

정규화란? 디비를 설계 할때 데이터 중복을 최소화하는 프로세스? RDBMS 설계에서 중복을 최소화하게 데이터를 구조화 하는 프로세스 자료 중복으로 인해 이상 현상이 발생 할 수 있어 이를 최소화 하는 것이 정규화의 목적 정규화 쉽게 생각하기 : 테이블쪼개기 설계를 할 때 Null 이 있을 수 있을까 중복데이터가 들어갈 수 있을까? 생각이 들면 - 정규화작업하기 총 6과정이 있지만 실제로 3NF까지만 사용 (3NF가 되면 정규화 된 것으로 간주) ex) 전부를 고치고 싶었는데 일부만 고쳐지거나 일부만 고치고 싶었는데 전부가 고쳐지거나 - 이를 방지하기 위해 데이터 중복을 최소화 정규화 과정 : 각 정규형은 이전 단계들을 기본적으로 모두 만족 해야함 1NF : 모든 항목에 값이 있어야 하며(NOT NULL)..

뷰(view)란? 여러 테이블을 모아서 만든 하나의 가상테이블 복잡한 쿼리의 경우 한번만 사용하여 뷰를 만들어두면 이후에는 간단하게 사용 가능하다. 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다. 뷰의 데이터가 어느 테이블에서 왔는지 사용자는 알 수 없어서 보안에 유리 뷰는 자신만의 인덱스를 가질 수 없다. / 실제 테이블이 아니라서. 조각조각데이터를 모아온거라서. 예를 들어 Emp 테이블 과 dept 테이블을 조인하고 또 salary 테이블과 조인하고 두번 조인해야함 그런데 뷰를 만들면 쿼리문으로 간결하게 딱 하나만 만들어서 확인 가능 ! (1) 뷰 생성 create [or replace] view [view name] as [query]; create or replace : 기존 뷰를 ..

인덱스(색인)이란? : 검색을 수월하게 해주는 모음집 (검색을 빠르게 하기 위한 수단) - Primary key 와 Unique key를 걸면 자동으로 인덱스가 생성 - 키가 있고 없고 검색속도가 다름 - 디비마다 인덱스가 다름 장점 검색 속도가 빨라짐 시스템의 부하를 줄여 성능 향상 단점 전체 데이터의 내용을 축약해 놓은 것 이므로 생성시 시간이 걸리고 공간이 필요 삽입/갱신/삭제 가 빈번히 일어날 경우 성능 저하 Index가 필요한 경우 데이터가 많고 검색이 많이해야할 경우 join이 많이 사용된 경우 Index가 불필요한 경우 데이터가 적을 경우 삽입/갱신/삭제가 빈번히 일어나는 경우 - 시간도 오래걸리고 음 인덱스가 무의미한 느낌? 그리고 성능 저하 (1) 고유 (unique) 인덱스 가장많이 사..

in & exists 1. in '=' 비교만 가능(부등호가 들어가는 비교는 안되는듯), or 조건의 검색 결과 내용을 가져온다 괄호안 서브쿼리가 먼저 실행되고 그 결과값을 바탕으로 앞의 쿼리문을 실행 select * from emp where deptno in (select deptno from dept where loc = 'LA' or loc = 'BOSTON'); 2. exists(엑시스트) (기본적으로 IN과 같으나 참/거짓 반환) 이라고 예전에 배움 메인쿼리 비교조건이 서브쿼리의 결과중에 '만족하는 값이 하나라도 있으면 참(1)/거짓(0) 반환 메인쿼리를 먼저 실행하고 그다음 서브쿼리 실행 + exists 를 사용하여 select * from emp where deptno in (select ..

우리는 두 개의 테이블을 집합연산 할 수 있다. 1. UNION 마리아db에서 full outer join 이 없어서 대체해서 사용하는 것 합집합, 중복 제거 성능 저하가 있다 (데이터를 합쳐서 가져와 정렬해서 검색작업? 중복 제거 - 순서가 많아서 오래걸려서 다른거 사용 한대) 쿼리와 쿼리 사이에 union 넣기 join과 마찬가지로 최소한 공통되는 컬럼이 하나는 있어야 한다. full join 효과를 낼 수 있다. select deptno from dept union select deptno from emp; 2. UNION ALL 합집합, 중복 제거 안함 select deptno from dept union all select deptno from emp order by deptno; 3. INTE..

조인이란? 둘 이상의 테이블을 연결하여 검색하는 방법. a 와 b의 내용을 합쳐서 보여준다. 두 테이블을 조인을 하려면 최소 하나의 공통된 컬럼이 있어야 한다. 그래서 일반적으로 pk와 fk를 사용하여 조인에 활용한다. pk fk아닌 공통된 컬럼을 사용할 수도 있다 = 부모자식관계가 아니더라도 조인할 수 있음 - JOIN을 활용하는 이유 - 서브 쿼리문만 사용한다면 괄호가 엄청 많아지고 쿼리가 굉장히 복잡해진다. - JOIN의 방법 - cross join : 거의 안쓴다. *equi join : 제일 많이 사용 non-equi join : 안쓴다 self join : 거의 안쓴다. *outer join : 많이 사용 한다. 1. cross join 두개의 테이블 컬럼의 행과 행을 곱함 / 카다시안 곱을 ..

서브쿼리란? 쿼리 안의 쿼리가 들어있는 것! 서브쿼리는 사전에 추출된 내용에서 재검색하거나, 검색된 내용을 가상 컬럼을 만들어 추가할 수 있다. 즉 서브쿼리를 사용하는 이유는 가져온 데이터를 재 정제하기 위해서 최종적으로 찾아야 하는거 먼저 배치 괄호 먼저 실행하고 나온 결과값과 함께 앞의 쿼리문을 처리! - 또다른 서브쿼리문 - select ename,job from emp where deptno in (select deptno from dept where loc ='LA' or loc ='BOSTON' ); : 먼저 실행되는 괄호안 쿼리문의 값이 여러개일 경우 or조건문대신 쓸 수 있었던 in 쓰기 - + - ALL : 서브쿼리의 결과 중에서 모든 값이 일치 하면 참 : 이거 조건 다 맞아? 확인할..