데이터베이스 22

[인턴 일지] 내 프로젝트의 문제점과 나아가야할 방향

프로젝트를 하면서 드는 생각들... 제일 무서운 생각은 무너지진 않을까... 점점 건물이 높아짐에 따라 가끔씩 휘청거린다. 그럴 때마다 매우 조심스럽게 행동한다. 당연히 기본 뼈대가 튼튼해야 건물이 견고해진다. 이 사실을 인지함에도 뭔가 급한 마음에 막 빨리 쌓으려고 했다. 한 눈에 보이지 않는 코드... 정리가 되어 있지 않은 문맥들... 그래 쌓을 수는 있다. 하지만 수리할 때 문제가 생긴다. 어떤 기능이 어디에 있고 어느 부분을 고쳐야 하는지 바로 보이지가 않는다. 어제의 나와 오늘의 나는 다른 사람인 것을 예전부터 알고 있었다. 어제 분명히 어떤 feel을 받아서 정신없이 코드를 치고 돌아가는 것을 확인했다. 다음날 내가 와서 보면 그건 전혀 내가 한것처럼 느껴지지 않는다. Structure가 중..

[인턴 일지] 회사에서의 첫 프로젝트

미국에 온지 벌써 3달이 다 되어간다. 그 간 많은 일들이 있었고 힘든 일도 많았다. 생활 면부터 회사 문제까지도... 무엇보다 주위에 내 사람들이 없다는 것이 가장 힘들었다. 하소연하고 들어줄 사람이 없다는 것이 느껴본 경험이 없어서 그런지 더욱 서럽기도 하였다. 하지만 이제 괜찮다... 직속상관이 문제가 있어서 회사에 한동안 없어서 일을 시킬 사람이 없었다. 나는 회사 웹사이트 관리로 인턴을 온 것이고 시킬 사람들이 없었다. 처음에는 sns와 마케팅을 했다. 포토샵을 하면서 포스터를 만들고 업로드를 하였다. 그런데 마케팅과 경영 지식이 없어서 잘 하는지는 몰랐지만 그냥 그렇게 있었다. 직속상관이 오고 나서부터 일이 생겼다. 하지만 그는 전공자가 아니다. 나는 사장이 전공자가 아닌 회사에서 단기로 개발..

[데이터베이스] 트랜잭션에 대해서

트랜잭션이란 하나의 논리적인 작업 단위를 이루는 여러 연산들의 집합을 말한다. 예를들어, 한 계좌의 돈을 다른 계좌로 이체하는 계좌 이체 작업은 각 계좌의 잔고를 변경하는 두 개의 갱신 연산으로 구성되어있는 하나의 트랜잭션이다. 트랜잭션이 지녀야할 기본 속성 (ACID 성질) Atomicity (원자성) 어떤 오류가 발생했을 경우에는 미완료된 트랜잭션이 부분적인 영향까지 모두 되돌려야 한다. 즉 트랜잭션의 작업들이 모두 수행되거나 전혀 수행되지 않아야 한다. 일부만 수행된 상태가 되어서는 안됨 -> all or nothing 원자성을 보장하기 위한 아이디어는 데이터베이스 시스템이 트랜잭션이 갱신하는 데이터의 예전 값을 기록하는데 이 정보는 로그(log)라고 불리는 파일에 기록된다. Consistency ..

[오라클] DDL & DML

DDL 예제를 돌려보자. 기본 생성된 베이스테이블과 데이터는 http://pjh3749.tistory.com/156 여기서 sql파일을 받아서 developer에 때려넣자. create table history1 as select * from emp 데이터도 이렇게 똑같이 복사된다. 그렇다면 안의 데이터는 없이 그냥 테이블만 복사하려면 어떻게 해야할까? create table history2 as select * from emp where 1=0 이렇게 칼럼만 있고 데이터는 복사가 되지 않음을 알 수 있다. # 테이블 구조 살펴보기 desc history1 # 제약 조건 Constraint Database에 테이블 레벨에서 특정한 규칙을 설정해둠예상치 못한 데이터의 손실이나 일관성을 어기는 데이터의 추가..

[오라클] Join문과 Aggregation

이전에는 select에 대해 자세히 알아보았다. 그 때에 쓴 테이블들을 똑같이 써서 join문을 공부해보자. Join 조인이란 둘 이상의 테이블을 합쳐서 하나의 큰 테이블로 만드는 방법 필요성 : 관계형 모델에서는 데이터의 일관성이나 효율을 위하여 데이터의 중복을 최소화한다. fk를 이용하여 참조한다. 여기서 테이블부터 만드는 과정이 초반에 있으므로 파일을 다운받고 참조해서 테이블을 셋팅하자. http://pjh3749.tistory.com/156 그럼 시작하기 전에 emp테이블과 dept테이블의 칼럼부터 확인해보자. emp테이블 dept테이블 그리고 어떤 join들이 있는지 살펴보자. Cross Join (Cartesian Product) : 모든 가능한 쌍이 나타남 Inner Join : Join 조..

[ERD] eXERD 설치와 회원가입 모델링 하는 법

eXERD 는 경력자 뿐만 아니라 초보자도 데이터베이스 설계를 직관적이고, 쉽고, 빠르게 하도록 개발된 이클립스 기반 지능형 모델링 도구이다. 여러 DBMS를 지원한다. Oracle, MS SQL, IBM DB2, PostgreSQL, MySQL을 대상으로 포워드/리버스 엔지니어링을 지원한다. ui도 깔끔하고 직관적이고 매우 좋은 툴이다. 그리고 공부용으로는 무료이다. 당연히 기업유저는 돈을 내야한다. 홈페이지에 들어가서 개인 사용자 무료다운로드를 클릭하여 다운로드를 받자. http://ko.exerd.com/ 다운로드를 클릭하여 개인 사용자를 받아서 설치를 진행한다. 여기서 팁은 저기 설치경로를 C던 D던 편한곳에 exerd폴더를 하나 만들어서 설치를 한다. 그리고 나중에 밑에 처럼 workspace를..

데이터베이스 모델링과 회원가입 설계

■ 모델링의 정의 모형, 축소형의 의미 사람이 살아가면서 나타날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 포현해 놓은 모형 사람,사물,개념 등 -> 모델을 만들어가는 일 추상화(모형과,가설적) : 현실시계를 일정한 형식에 맞추어 표현 단순화 : 복잡한 현실세계 -> 약속된 규약에 의해 제한된 표기법이나 언어로 표현 명확화 : 누구나 이해하기 쉽게 대상에 대한 애매모호함을 제거하고 정확하게 현상 기술 ■ 데이터 모델링이란? 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 데이터베이스를 구축하기 위한 분석/설계의 과정 개념 데이터 모델링 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행 논리적 데이터 모델링 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성 관계 등..

Oracle 데이터베이스 Select문 완전정복 -(3)

지난 포스팅에 이어 select를 마저 부셔보자. ## ORDER BY SELECT ename, comm FROM emp ORDER BY comm; comm을 오름차순으로 정렬한다. 여기서 null값은 후방에 나온다. SELECT ename, comm FROM emp ORDER BY comm DESC; comm을 내림차순으로 정렬한다. 여기서는 null이 먼저 튀어나온다. # 급여가 제일 많은 사원부터 출력해보자. SELECT ename, sal FROM emp ORDER BY sal DESC; 자 그런데 저기 노란부분이 좀 거슬린다. 급여가 같아서 모여있는건 맞는데 알파벳 순이 안 맞네. 이것도 이름순으로 정렬하고 싶다. SELECT ename, sal FROM emp ORDER BY sal DESC ..

Oracle 데이터베이스 Select문 완전정복 -(2)

저번 시간에 이어 나머지 select문을 다 부셔보자. Oracle 데이터베이스 Select문 완전정복 - (1) http://pjh3749.tistory.com/156 중요한 내용들만 썼으니 모두 숙지해야 하는 부분이다. SELECT job FROM emp;이거는 결과를 보여주지 않아도 알 것이다. 하지만 여러 job들이 중복해서 나타난다. 중복을 제거하고싶다. select distinct job from emp; 각 직업들이 하나씩만 표시되게 나온다.select distinct deptno,job from emp; select distinct job,deptno from emp; 이렇게 하면 어떻게 될까? 둘이 깉은 결과가 나온다. distinct가 앞의 것에 걸리는게 아니라 전체에 걸린다. 즉, 2..

Oracle 데이터베이스 Select문 완전정복 -(1)

오라클에서 데이터베이스에서 select문을 다 부셔버리자. 먼저 쿼리문을 등록해야한다. 다운받아서 sql developer에 로그인하여 복사 붙여넣기하자. 로그인방법을 모른다면 검색하면 바로 나온다. 이것을 쿼리문 쓰는 곳에다가 붙여넣고 저 두 번째 버튼을 누르면 왼쪽 상단처럼 테이블이 만들어진다. 데이터는 임의로 삽입하였다. 왼쪽상단에 테이블이 만들어진것이 보일 것이다. 이제 select문을 활용하여 보자. EMP 테이블의 내용이다. select ename from emp; emp테이블에서 ename을 뽑아내는 것이다. 이건 쉽다. 하지만 이렇다면? Select Ename From Emp; // 대소문자가 엉켜있다. SELECT ename FROM emp; // 엔터가 쳐져있다. 결과는 같다. 결론은 ..

반응형