반응형

데이터베이스 개인공부 13

데이터베이스 - 이상현상과 정규화, 함수종속성

★이상현상★정규화★트랜젝션★함수종속성 이상현상잘못된 설계로 테이블이 생성되면 데이터 조작 작업시 이상현상이 발생할 수 있다.이상현상은 데이터의 일관성을 손상시켜 데이터의 무결성을 깨뜨린다.이 문제를 해결하려면, 속성간의 함수 종속성 파악해서 테이블 규칙에 의해서 분화 -> 정규화 정규화란 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복하는 프로세스(중복성과 종속성을 제거(최소화).. 데이터베이스의 효율성과 유지보수의 구조를 개선하고 데이터베이스의 성능 향상을 최적화하는데 의미가 있다.   삭제이상삽입이상수정이상  주요 정규화 형식(제1정규형 - 제3정규형)제1정규형(1NF)모든 컬럼이 원자값을 가져아하며, 각각의 키에 대한 값이 하나여야 한다.제2정규형(2NF)제 1 정규형을 만족하면서, ..

MySQL - Group by 이해하기

GROUP BY 가 너무 헷갈린다. 개념이야 이해했지만 어떻게 써야할지, 그 안에 뭐가 들어가야 기가막히게 문제를 풀어낼 수 있을지가 꽤 헷갈린다. GROUP BY를 사용하면 주로 집계 함수와 함께 사용되며, 데이터를 요약하고 통계를 얻는 데 유용하다고 한다. GROUP BY 는 특정 컬럼의 값을 기준으로 데이터를 그룹화 할 때 사용하는데, 이를테면 문제에서 ~별로, 요런식으로 문제가 주어질 때 말이지. GROUP BY에서 집계 함수를 사용하여 그룹 내에서 집계(통계, 계산 등등)를 할 수 있다. GROUP BY를 사용할 때 주의할 점은 SELECT 구문에 나열되지 않은 컬럼들에 대해서는 집계 함수를 사용해야 한다는 것이다. SUM 이라던가. 예제코드를 많이 써보면서 익혀보기로 하였다. 1. 각 도시별로..

데이터 모델링 - Starbucks 데이터모델링

스타벅스 웹페이지의 메뉴와 음료(상품)들을 모델링을 해보는 과제를 부여받았다. 사실 과제는 아니고 그냥 쉬운(...?)거니까 연습삼아 한 번 만들어보라고 하셨다. 데이터모델링이 처음인 내게는 entity를 뽑아내고 서로 relationship을 설정하는 일이 난해했다. 하나를 하면 왠지 이것도 해야할것 같고, 하다보면 또 이것도 해야할것 같고, 또 잘못한것은 아닌지 이게 맞는건지 많이 헷갈렸다. 아직 피드백을 받지 못한 상태이기 때문에 아마도 개판일 것이다ㅎㅎ 그래도 그냥 한 번 해보았다. 1. 스타벅스 웹페이지 분석 상단에 메뉴바가 있다. COFFEE MENU STORE RESPONSIBIILITY CORPORATE SALES WHAT'S NEW 이 메뉴들을 MAIN_MENU라는 테이블로 하나 만들 수..

데이터베이스 - 데이터 모델링의 개념

데이터 모델링의 개념 업무의 핵심개념을 구분하고 전체적인 레이아웃을 만드는 과정 핵심개념 개체 추출 개체들 사이의 관계 정의 데이터 모델링 과정 요구사항 수집 및 분석 설계 개념적 모델링 - 중요개념을 구분(핵심Entity 도출, ERD 작성) 논리적 모델링 - 각 개념을 구체화(ERD-RDB 모델 사상, 상세 속성 정의, 정규화) 물리적 모델링 - 데이터베이스 생성 계획에 따라 개체, 인덱스 등을 생성(DB개체정의, 테이블 및 인덱스 설계) 데이터 베이스 구현 ER 모델 ER(Entity Relationship) 모델 : 세상의 사물을 개체(Entity)와 개체 간의 관계(Relationship)로 표현함 개체 : 독립적인 의미를 지니고 있는 유/무형의 사람 또는 사물. 개체의 특성을 나타내는 속성(a..

MySQL - Stored Procedure(프로시저, 커서, 트리거)

제어문 delimiter 구문 종료 기호를 설정 begin - end 프로그램 문을 블록으로 묶음. { } , 중첩 가능 if - else 조건의 검사 결과에 따라 문장을 선택적으로 수행 loop leave 문을 만나기 전까지 반복. -> loop sql문 (leave) end loop; while 조건이 참일 경우 while문의 블록을 수행 -> while(조건) do sql문 end while; repeat 조건이 참일 경우 repeat의 블록을 수행 -> repeat sql문 until(조건) end repeat; return 프로시저를 종료 또는 상태값을 반환 -> return [식] # 실습 1.sinsaegebookdb.Book 테이블에 한개의 투플을 삽입하는 프로시저 : insertbook...

MySQL - Prepare(변수설정느낌)

prepare myQuery from 'select * from usertbl where userid = "EJW"'; execute myQuery; deallocate prepare myquery; -- mytable 생성 (id auto_increment, pk, mdate datetime); create table mytable(id int primary key auto_increment, mdate datetime); -- curdate 변수에 날짜함수를 이용하여 현재 날짜와 시간을 시스템으로 부터 받아서 할당 set @curdate = current_timestamp(); select @curdate; -- myquery 동적 쿼리 작성, mytable에 값을 파라메터 값으로 입력한다. prep..

MySQL - 함수들2

while / iterate(continue 역할) / leave(break 역할) 형식 : while do sql 명령문들.... end while; --> 부울 식이 참일동안 sql 명령문들을 실행해라. 예제) 1부터 100까지 값을 모두 더하는 기능 drop procedure if exists whilePrc; delimiter $$ create procedure whilePrc() begin declare i INT; declare hap INT; set i = 1; set hap = 0; while(i loop sql문 (leave) end loop; while 조건이 참일 경우 while문의 블록을 수행 -> while(조건) do sql문 end while; repeat 조건이 참일 경우 r..

MySQL - (임시)심화 저장 프로그램, 함수들

Stored Procedure(저장 프로시저) Srored Function(저장 함수) Cursor(커서) Trigger(트리거) SQL 변수 사용SET @ 변수이름 = 값; -- 변수의 선언 및 값 대입 SELECT @변수이름 buit-in function 제어 흐름 함수 : 프로그램의 흐름 제어 1-1 : if (수식, 참, 거짓) -> 삼항연산자 스타일 -- 1-1. if(수식, 참, 거짓) select if(100>200, '참', '거짓'); 거짓 출력. ifnull (수식1, 수식2) : 수식1이 null이 아니면 수식1이 반환, 수식1이 null이면 수식2가 반환 select ifnull(null, 'nul이구나!'), ifnull(100, 'null이 아니네'); 결과 : null이구나!,..

MySQL - 데이터조작어들

SELECT 문 ( 검색 ) SELECT bookname (속성이름) FROM book (테이블이름) WHERE price>=10000 (조건) DISTINCT : 중복제거 WHERE 조건식의 연산자들 ORDER BY : 검색 결과 정렬(기본 오름차순) ASC : 오름차순 정렬 DESC : 내림차순 정렬 집계함수 GROUP BY : 그룹별 검색 HAVING : GROUP BY로 그룹화된 결과에 대한 조건을 적용 JOIN 두 개 이상의 테이블을 결합하여 하나의 결과 집합으로 만드는 데 사용 SELECT columns FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; table1, table2: 결합할 두 테이블의 이름 col..

데이터베이스 - 관계대수

관계대수 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어(질의어) 관계대수 : 수학적인 형식으로 데이터베이스의 관계형 모델에서 연산을 정의하는 언어... 데이터를 어떻게 찾는지에 대한 처리절차를 명시하는 절차적인 언어 간단한 연산들을 결합하여 복잡한 질의를 표현할 수 있다 관계대수 연산자에는 선택(σ), 프로젝션(π), 결합(⨝), 합집합(∪), 차집합(-) 등 σ: 선택 연산자. 특정 조건을 만족하는 튜플을 선택 π: 프로젝션 연산자. 특정 속성(열)만 선택 ⨝: 결합 연산자. 두 테이블을 결합 관계해석 : 기술적이고 표현적인 방식으로 데이터베이스 질의를 정의하는 언어 어떤 데이터를 찾는지 명시하는 선언적인 언어 튜플 관계해석 (Tuple Rela..

반응형