목록분류 전체보기 (212)
개발자 끄적끄적
- 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다 - 정규화는 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다 - 정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높인다 - 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소할 수 있다 - 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법이다 - 반정규화는 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아진다 - 정규화에 충실하면 종속성, 활용성은 향상되지만 수행 속도가 느려지는 경우 - 다량의 범위를 자주 처리해야 하는 경우 - 특정 범위의..
- 각 속성이 가질 수 있도록 허용된 값들의 집합 - 속성명과 도에민명이 반드시 동일할 필요는 없다 - 릴레이션에서 모든 속성의 도메인은 원자적(Atom-ic)이어야 한다 - 도메인별로 데이터 타입과 길이를 지정한다 - 각 엔터티 속성에 도메인을 할당한다 - 속성을 명사로 분리한다 - 주식별자에 의해 엔터티 내에 모든 인스턴스가 유일하게 구분되어야 한다 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다 - 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다 - 주식별자가 지정되면 반드시 값이 들어와야 한다 1. 반정규화 대상 확인 - 조인(Join)에 사용되는 테이블 및 대량의 데이터 처리, 통계 처리 등을 확인한다 2. 다른 방법 결정 - 인덱스 조정을 통한 튜닝을 실시..
- 분할 투명성 - 위치 투명성 - 중복(복제) 투명성 - 병행 투명성 - 장애 투명성 - 분산 데이터베이스를 사용하는 고객은 시스템이 네트워크로 분산되어 있는지의 여부를 인식하지 못하면서, 자신만의 데이터베이스를 사용하는 것처럼 사용할 수 있다. 이처럼 데이터베이스는 투명성을 제공해야 한다 - 투명성은 분산 데이터베이스에서 중요한 요소이며 투명성의 종류에는 분할, 위치, 지역사상, 중복, 장애 및 병행 투명성이 있다 1. 분할 투명성 - 고객은 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없다 2. 위치 투명성 - 고객이 사용하려는 데이터의 저장 장소를 명시할 필요가 없다 - 고객은 데이터가 어느 위치에 있더라도 동일한 명령을 사용하여 ..
- SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행한다 - 옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다 - 옵티마이저는 데이터 딕셔너리(Data Diectionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다 - 개발자가 SQL을 실행하면 파싱(Parsing)을 실행해서 SQL의 문법 검사 및 구문 분석을 수행한다 - 구문 분석이 완료되면 옵티마이저가 규칙 기반 혹은 비용 기반으로 실행 계획을 수립한다 - 옵티마이저는 기본적으로 비용 기만 옵티마이저를 사용해서 실행 계획을 수립한다 비용 기반 옵티마이저는 통계정보를 활용해서 최적의 실행 계획을 수립하는 것이다 - 실행 계획 수립이 완료..
- 서브쿼리의 결과가 여러 개의 행을 반환하는 것으로 다중 행 연산자를 사용해야 한다 1. IN(Subquery) - Main query의 비교조건이 Subquery의 결과 중 하나만 동일하면 참이 된다 2. ALL(Subquery) - Main query와 Subquery의 결과가 모두 동일하면 참이 된다 3. ANY(Subquery) - Main query의 비교조건이 Subquery의 결과 중 하나 이상 동일하면 참이 된다 4. EXISTS(Subquery) - Main query와 Subquery의 결과가 하나라도 존재하면 참이 된다 - 즉, 어떤 데이터 존재 여부를 확인하는 것으로 결과는 참과 거짓이 반환된다 - 스칼라 Subquery는 반드시 한 행과 한 칼럼만 반환하는 서브쿼리이다 - 만약 ..
- 해시 조인은 먼저 선행 테이블을 결정하고 선행 테이블에서 주어진 조건(WHERE구)에 해당하는 행을 선택한다 - 해당 행이 선택되면 조인 키(JOIN KEY)를 기준으로 해시 함수를 사용해서 해시 테이블을 메인 메모리(MAIN MEMORY)에 생성하고 후행 테이블에서 주어진 조건에 만족하는 행을 찾는다 - 후행 테이블의 조인 키를 사용해서 해시 함수를 적용하여 해당 버킷을 검색한다 - 해시 조인은 EQUI JOIN만 사용 가능한 방법이다 - 해시 함수는 테이블을 해시 메모리에 적재한 후에 해시 함수로써 연결하는 방법이다 - INTERSECT 연산은 두 개의 테이블에서 교집합을 조회한다 - 즉, 두 개 테이블에서 공통된 값을 조회한다 - Non-EQUI는 두 개의 테이블 간에 조인하는 경우 "="을 사..
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY SELECT ename FROM emp WHERE empno=10 GROUP BY ename HAVING count(*) >= 1 ORDER BY ename; 1. 명시적(Explicit) 형변환 - 형변환 함수를 사용해서 데이터 타입을 일치 1) TO_NUMBER(문자열) : 문자열을 숫자로 변환 2) TO_CHAR(숫자 혹은 날짜, [FORMAT]) : 숫자 혹은 날짜를 지정된 FORMAT의 문자로 변환한다 3) TO_DATE(문자열, FORMAT) : 문자열을 지정된 FORMAT의 날짜형으로 변환한다 2. 암시적(Implicit) 형변환 - 개발자가 형변환을 하지 않은 경우 데이터베이스 관리 시스..
[begin_label:] LOOP statement_list end loop[end_label] [label] : LOOP ... --terminate the loop if condition then leave [label]; - exit iterate [label]; -반복 end if ... end loop; - leave label : 지정된 label의 반복문을 벗어나게 한다 - iterate label : 지정된 label를 반복하게 한다 ex)1~10까지 출력 create procedure loop_test1() begin declare a int default 0; start_a : loop set a =a+1; if a>10 then leave start_a; end if; select ..
use information_schema; show tables; select * from TABLE_CONSTRAINTS tc ; use lecture; desc student; drop table student; #student table 삭제 where create table member( sno int primary key ); #컬럼을 지정하면서 제약 조건 지정 create table student( sno int primary key, mName varchar(20) not null, phone varchar(30) unique, address varchar(50) default 'seoul', gender varchar(2) check(gender in('m','f')), score int ..
[첫 번째 유형] case value when c1 then p1; when c2 then p2; ... else p3; end case; - c1, c2는 value에 대응되는 상수값 - p1, p2, p3는 처리 내용 ex) create procedure case_test1() begin declare score int default 0; declare str varchar(100); set score = 80; case score when 80 then set str = '팔십'; when 70 then set str = '칠십'; end case select score, str; end; [두 번째 유형] case when c1 then p1 when c2 then p2 else p3 end ca..
- dbms별 유사한 문법 구조를 갖고 있으나 호환되지 않느다 - 컴파일 되어서 해당 dbms내부에 저장된다 따라서 저장형 프로시져라고 불린다 - 반복해서 컴파일 하려면 먼저 기본 procedure를 drop procedure로 삭제해야한다 - procedure은 retrun이 없다 대신, call을 한다 create procedure pro_test1() begin declare cnt int default 0; start_rtn : LOOP insert into test(s_name) values('HONG'); if(cnt>100) then leave start_rtn; end if; set cnt = cnt + 1; end loop; end drop procedure[ if exists ] 프로시..
- 데이터 무결성 유지 - relation을 보다 견고하게 1. PRIMARY KEY(PK) - NOT NULL, UNIQUE의 특성을 갖고 있고 테이블당 하나만 존재 - 둘 이상의 컬럼을 묶어 하나의 PK를 선언 할 수 있다->복합키 - 자동으로 INDEX가 만들어진다 2. FOREIGN KEY(FK) - 외래키. 자식테이블의 데이터가 존재했을 때 부모 테이블의 데이터가 삭제되거나 수정되는 것을 예방 - ON CASSE UPDATE나 ON CASCASE DELETE 옵션을 사용하여 부모 테이블의 데이터가 삭제되거나 수정되었을 때 자식 테이블의 데이터를 삭제하거나 수정할 수 있게 할 수는 있다 - 부모 테이블의 컬럼은 PK나 UNIQUE 제약 조건이 설정되어 있어야 한다 3. NOT NULL - NULL..
- CREATE TABLE 테이블명(컬럼명1 타입(크기) 제약조건, ...) ex) 학번(mid), 성명(irum), 연락처(phone)을 갖는 student테이블 생성 CREATE TABLE student( mid varchar(10),-> 최대 문자수 : 10 irum varchar(50), -> 최대 문자수: 20 phone varchar(20) -> 최대 문자수 : 20 ); ex) data가 없을 때 테이블 생성 create table student( id varchar(10), mName varchar(20), pwd varchar(10), address varchar(50), phone varchar(20) ); - DROP TABLE 테이블명; - CREATE TABLE 테이블명 AS SE..
CREATE FUNCTION 함수명(인자값들) RETURNS 반환타입 BEGIN ... RETURN 반환값; END; *함수생성 시 1418오류가 발생하면, SET GLOBAL log_bin_trust_function_creators = 1; 을 한 번 설정해주고 함수를 생성한다 ex) CREATE FUNCTION f1(a int) RETURNS varchar(50) BEGIN declare rvalue varchar(20); return 'kim'; end; ex) CREATE FUNCTION f1(a int) RETURN varchar(50) BEGIN declare rvalue varchar(20); select firstName into rvalue from employees where emplo..
date_format(날짜, 형식) - 날짜를 지정한 형식으로 출력 ex.1)5월에 주문된 제품들의 제품코드, 제품명을 조회(orders) select * from orders o where month(orderdate)=05; select * from products p; select * from orderdetails od; select p.productCode, p.productName -> 내가 확인하고 싶은 정보 from products p join orderdetails od -> products와 orderdetails을 조인 on p.productCode = od.productCode -> 공통점 productCode join orders o on o.orderNumber = od.orde..
from 절 뒤에는 table명이 나온다 cmd창에서 상위디렉토리로 이동 : cd\ 데몬 삭제 방법 : 작업관리자->프로세스->mysql.exe->제거 *데몬(Daemon) - 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 시스템 - 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 'd'를 이름 끝에 달고 있으며 일반적으로 프로세스로 실행된다 use databases명 ex->classicmodels, information_schema, mysql, performance_schema, sys ex)show databases; - database를 보여달라 use classicmodels; - database는 classicmodel show tables; - tab..
TABLE - 테이블 목록 확인 : use 명령을 사용하여 database를 먼저 선택한 후 SHOW TABLES로 확인 - 테이블 구조 확인 : DESC테이블명 - 테이블 변경 : RENAME TABLE 원본 테이블명 TO 변경 테이블명 데이터 유형 1. 숫자형 2. 문자형 - TEXT열에는 INDEX를 사용할 수 없다 - TEXT열에는 DEFAULT속성을 사용할 수 없다 3. 날짜형 - DATETIME : 5BYTE - TIMESTEP : 4BYTE 테이블 생성 - CREATE TABLE 테이블명(컬럼명1 타입(크기)제약조건, ...) ex)학번(mid), 성명(irum), 연락처(phone)을 갖는 student테이블 생성 create table student( mid varchar(10), iru..
SELECT : 저장된 데이터를 선택하는 문장 기본구조 SELECT *| 컬럼명들 - 3 [from 테이블명] - 1 [where 조건] - 2 [group by 컬럼명] [with rollup] [having 조건] [order by 컬럼명 [asc | desc]] [limit 시작위치, 개수] 실행 순서 : 1->2->3 기술 순서 : 3->1->2 [select 절] - select절에 사용되는 컬럼명에는 연산식, 함수 등을 사용할 수 있다 - 컬럼명에 as(Alias) "별칭"과 같이 별칭을 사용할 수 있다 - '*'(All)는 모든 컬럼을 의미하지만 보안이나 성능 저하 등의 이유로 사용을 지양해야한다 - 공백이 있으면 as "성 명" -> 출력 : 성 명 공백이 없으면 as"성명"-> 출력 : ..
- 공간 영역에서의 '점처리, 영역처리, 기하학적처리' 등을 학습 - 학습된 영상처리의 기본 개념을 응용하여 '복원, 분할, 형태적 처리'를 구현하고 '압축'의 기본 개념을 학습 1. 점처리 - 픽셀의 데이터값을 바꾼다(인접한 데이터는 바뀌지 않는다) 2. 영역처리 - Filtering - 일정한 크기의 블록을 친다음, 데이터를 바꿀 때 혼자만 바꾸는게 아니라 인접한 데이터도 바뀐다 3. 기하학처리 - 영상을 확대, 축소, 회전 - 영상의 input에 size가 바뀌는 것 4. 복원 - 노이즈가 많이 들어있는 영상이면 노이즈를 제거하는 것 - 움직이는 사람이 있다면 모션(Motion)을 제거 5. 분할 - 컴퓨터 인식시스템(Computer Vision, Machine Vision) - 영상에서 Objec..
대입연산자(종류) a+=b --> a=a+b a-=b --> a=a-b a*=b --> a=a*b a/=b --> a=a/b a%=b --> a=a%b a>>=b --> a=a>>b 조건 제어문 - 조건문(if) 1) if(조건식) {조건이 참인 경우 실행되는 문장들} 2) if(조건식) {조건이 참인 경우 실행되는 문장들} else {조건이 거짓인 경우 실행되는 문장들} 3) if(조건식) {조건이 참인 경우 실행되는 문장들} else if(조건식2) {조건식2가 참인 경우 실행되는 문장들} [ else if(조건식3) {조건식3이 참인 경우 실행되는 문장들} ... ] ->option else{모든 조건이 거짓이 되는 경우 실행되는 문장} ex) 조건문을 중괄호로 묶지 않았을 때, - 조건이 참 : ..