본문 바로가기

코딩도전기/DB(mariaDB)12

DB - Oracle(효율적인 SQL 작성법) View 사용자에게 접근이 허용된 자료만 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않는 가상 테이블 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도 활용 복잡한 쿼리를 단순화 쿼리 재사용 가능 특징 기본 테이블과 같은 형태의 구조로 기본 테이블 조작법과 비슷함 가상 테이블로 물리적으로 구현되어 있지 않음 데이터의 논리적 독립성 제공 필요한 데이터만 정의해서 처리할 수 있어 관리가 용이하고 명령문이 간단해짐 뷰를 통해서만 데이터에 접근하게 하면 뷰에 표출되지 않는 데이터 보호 가능 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야 삽입, 삭제, 갱신, 연.. 2023. 12. 26.
JNDI / DBCP Connection Pool의 생성배경 웹 어플리케이션 소스단에서 직접 DB를 연결하여 작동하는 어플리케이션의 경우 -> 어플리케이션 구동시 DB와 커넥션을 맺는 부분에서 상당히 많은 시간이 걸리게 됩니다. -> 따라서 어플리케이션에서 DB에 접속하면 할수록, 쿼리를 사용하면 할수록, 어플리케이션은 급격히 느려지게 됩니다. 이러한 속도 저하를 막기 위해서 한번 DB와 맺은 Connection을 제거하지 않고 다른 쿼리들도 사용할 수 있도록 재활용 하도록 도와주는 라이브러리(DBCP)입니다 매번 접속마다 Connection을 열닫는 절차가 줄어듬으로써 속도가 빨라짐 WAS에 DataSource를 설정 하는 이유 그전에 WAS에 Datasource를 설정 하는 이유에 대해서 간략하게 말씀 드리겠습니다. 보통.. 2023. 12. 20.
CODO Day38_DB_JDBC(Board&Join) 게시판(DB 활용) Controller package kr.co.web.controller; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import kr.co.web.service.Model; @WebServlet(urlPatterns = .. 2023. 3. 28.
CODO Day37_DB_JDBC(Java Data Base Connectivity) JDBC(Java Data Base Connectivity) Java & Data Base 연결에 필요한 프로그래밍 JAVA 와 DB 연결 프로그래밍 DB 쿼리 실행 프로그래밍 DB 쿼리 반환 값 추출 프로그래밍 # but 라이브러리를 활용하면 간단하게 가능 아래 파일을 다운받은 후 WEB-INF.lib에 copy 직접 연결 방법 STS 사용 시 더이상 MVC 패턴을 사용하지 않아, Model 대신 Service로 사용하나 비슷한 역할 Service : Controller에서 받은 작업 중 DB와 연결해야하는 작업을 DAO로 넘김 Package : Controller / DAO / Service DAO & DTO DAO DB 연결 및 쿼리문 실행 DTO DAO에서 주고 받는 데이터를 저장하기 위한 데이터.. 2023. 3. 27.
CODO Day36_DB_ERD(논리설계/물리설계) ERD를 활용한 논리설계 SNS Service 설계 Shopping Mall Service 설계 2023. 3. 24.
CODO Day35_DB(정규화&역정규화) 정규화(normalization)와 역정규화(denormalization) RDBMS 설계에서 중복이 최소화 되도록 데이터를 구조화 하는 프로세스 자료 중복으로 인해 이상현상이 발생할 수 있어 이를 최소화하기 위해서 사용 이상 현상을 최소화 하기 위해 테이블을 쪼개는 작업 삭제 이상 원치 않는 데이터도 삭제 member 의 id 를 삭제하려 했는데 모두 삭제 삽입 이상 원치 않는 데이터가 삽입 profile 의 name 을 넣었는데 grade 에도 삽입 갱신 이상 데이터 일부만 갱신 모든 id 를 변경 하려 했는데 grade 의 id 만 변경 정규화(normalization) 과정은 총 여섯 과정이 있음 실제로는 3NF까지만 사용(3NF가 되면 정규화가 된 것으로 간주) 각 정규형은 이전 단계들을 모두 .. 2023. 3. 24.
CODO Day35_DB(Auto_increment/Limit&offset/Function) Auto_increment 자동으로 증가하는 속성 Table 생성 시 속성으로 지정하거나 이미 생성된 Table에 추가 auto increment 속성이 사용되는 컬럼은 key 설정이 되어 있어야 함 무조건 들어가고 절대 중복되지 않기 때문에 PK로 활용 자동증가하는 속성으로 중복값이 있으면 안되기 때문 테이블 생성 시 지정 create table auto_inc( no int(10) auto_increment primary key ,name varchar(10) not null ); desc auto_inc; insert into auto_inc (name) values ('kim'); insert into auto_inc (name) values ('lee'); insert into auto_inc .. 2023. 3. 24.
CODO Day35_DB(In&Exists/Any&All/Index/View) In&Exists IN : '=' 비교만 가능, OR 조건의 검색결과 내용을 가져옴 select ename, job from emp e where deptno in(2,4); -- 서브쿼리가 먼저 동작된 후 메인쿼리가 동작 select ename, job from emp e where deptno in(select deptno from dept where loc = 'LA' or loc = 'boston'); EXISTS : 메인쿼리 실행 후 서브쿼리 조건을 비교 해당 결과가 있는지 1과 0을 반환 결과값 1 = 데이터를 보여줌 / 결과값 0 = 보여주지 않음 / 결과값 0&1 = 1인 데이터만 보여줌 메인쿼리가 먼저 실행된 후 서브쿼리 실행 EXISTS가 IN 보다 사용은 복잡하지만 속도가 빠름 IN은.. 2023. 3. 22.
CODO Day34_DB(Join/Set) JOIN 여러 문장을 서브쿼리로 작업할 경우 복잡해지기 때문에 JOIN을 사용 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 두개 테이블을 select문장으로 조인하려면 적어도 하나의 컬럼이 공통으로 존재해야 함 일반적으로 PK(primary key)와 FK(foreign key)를 활용(묶어주기 위해서 사용,필수x) JOIN 종류 CROSS JOIN(잘 사용X), EQUI JOIN*(등가조인, 내부조인) NON EQUI JOIN(거의 사용X - 교재에만 수록) SELF JOIN, OUTER JOIN* CROSS JOIN(사용X) CROSS JOIN은 카다시안 곱을 수행 후 결과를 반환 카다시안 곱 : 짝을 지어줄 경우 모든 경우의 수를 계산 CROSS JOIN은 양 테이블의 모든 컬럼의 조합을 보.. 2023. 3. 22.