Category Archives: 데이터베이스

정말 좋은 무료 모델링 툴 DB Designer

오늘 소개해드릴 프로그램은 정말 괜찮은 GPL라이센스를 가진 모델링 툴을 하나 소개할까 합니다.

바로 DB Designer라는 프로그램인데요. fabFORCE(http://www.fabforce.net/)라는 회사에서 만든 프로그램입니다.

MySQL기반 모델링의 경우 쓸만한 툴이 없는것이 현실이었습니다. ER-Win이라던가 엔코아컨설팅에서 만든 DA#의 경우도 모두 MySQL은 배제되어있습니다.

요즘은 MySQL도 많이 사용하는것으로 알고 있는데요. 아마도 엔터프라이즈급 고객이 아니면 신경쓰지 않겠다라는 생각들을 가지고 있다거나 혹은 아직도 MySQL은 애들 장난할때 쓰는 DB다라고 생각하고 있는것일지도요.

너무 열악한 써드파티의 지원을 받고 있는 MySQL은 슬펐는지 WorkBench라는 프로그램을 내놓았습니다. 현재 알파버젼이고요 크게 좋은것 없어 보이는 프로그램입니다.

그러던중 이렇게 좋은 프로그램을 알게 되었습니다. 인터페이스도 심플하고요, 디자인도 깔끔합니다.

무엇보다 한글 지원이 문제 없이 됩니다.

사용자 삽입 이미지
완벽하진 않지만 DB에 직접 접속하여 테이블 정보를 가져와 ERD를 그리는 리버스엔지니어링까지 지원합니다.

상용라이센스가 아니기때문에 업체측에서 사용해도 전혀 문제될것이 없겠죠.

설치 프로그램과 한글패치 올립니다. 한글패치의 출처는 http://www.yashalog.net/61 입니다.

1277862750.xxx1379791538.zip
하지만 사용시에 문제점을 하나 발견하였습니다. MySQL 4.1이상은 접속이 안되는 문제가 발생하더군요.

4.1이후로 바뀐 패스워드 체계때문인데 ODBC드라이버를 사용하는 방향으로 해도 되지만 근본적인 문제점을 해결하는 방법을 적어보겠습니다.

1. /etc/my.cnf 파일에 Old Password를 사용하겠다는 옵션을 추가합시다. 추가후에 MySQL 재시작을 합니다.
[code][mysqld]
…중략…
old_passwords = 1[/code]

2. mysql에 root로 접속하여 사용하고자 하는 계정의 패스워드를 Old Password체계로 변경합시다.
[code]mysql> UPDATE mysql.user SET Password = OLD_PASSWORD(‘password’) WHERE User = ‘eye’;
mysql> FLUSH PRIVILEGES;[/code]

3. 만약에 localhost에서만 접근가능하도록 설정되어있는 계정이라면 외부의 접근을 허가해 봅시다.
[code]mysql> UPDATE mysql.user SET Host = ‘%’ WHERE User = ‘eye’;
mysql> FLUSH PRIVILEGES;[/code]

%는 외부의 모든 접근을 허가한다는 옵션입니다. 특정 호스트만을 허가하고 싶다면 아이피를 적어주시면 됩니다.

오라클 공부중-_-;

아 정신없다. 한밤중에 포스팅 하는건 무리다. 일단 공부한거 올려만 놓겠다.

[CODE]SELECT A.EMP_ID, A.EMP_NAME,A.DEPT_CODE, B.DEPT_NAME
FROM TEMP A, TDEPT B
WHERE B.DEPT_CODE = A.DEPT_CODE

SELECT A.EMP_ID, A.EMP_NAME, A.SALARY + B.COMM
FROM TEMP A, TCOM B
WHERE A.EMP_ID = B.EMP_ID
  AND B.WORK_YEAR = ‘2001’

SELECT A.EMP_ID, A.EMP_NAME, A.LEV, A.SALARY
FROM TEMP A, EMP_LEVEL B
WHERE A.SALARY BETWEEN B.FROM_SAL AND B.TO_SAL
  AND B.LEV = ‘과장’
 
SELECT A.EMP_ID, B.EMP_ID
FROM TEMP A, TCOM B
WHERE B.WORK_YEAR(+) = ‘2001’
AND B.EMP_ID(+) = A.EMP_ID

SELECT A.EMP_ID, A.EMP_NAME, A.SALARY, B.FROM_SAL, B.TO_SAL
FROM TEMP A, EMP_LEVEL B
WHERE A.LEV = B.LEV(+)

SELECT A.DEPT_CODE “부서코드”,
A.DEPT_NAME “부서명”,
B.DEPT_CODE “상위부서코드”,
B.DEPT_NAME “상위부서명”
FROM TDEPT A, TDEPT B
WHERE B.DEPT_CODE = A.PARENT_DEPT

SELECT A.EMP_ID, A.EMP_NAME, A.BIRTH_DATE, COUNT(A.EMP_ID) “COUNT”
FROM TEMP A, TEMP B
WHERE A.BIRTH_DATE > B.BIRTH_DATE(+)
GROUP BY A.EMP_ID, A.EMP_NAME, A.BIRTH_DATE
ORDER BY COUNT DESC

SELECT AVG(SALARY) FROM TEMP

SELECT EMP_ID, EMP_NAME, SALARY
FROM TEMP
WHERE SALARY > (SELECT AVG(SALARY) FROM TEMP)

SELECT DEPT_CODE, COUNT(*)
FROM TEMP
WHERE EMP_ID IN (SELECT EMP_ID FROM TCOM)
GROUP BY DEPT_CODE

SELECT EMP_ID, EMP_NAME
FROM TEMP
WHERE (DEPT_CODE, EMP_ID) IN (SELECT DEPT_CODE, BOSS_ID FROM TDEPT);

SELECT DEPT_CODE, MAX(SALARY) “MAX_SALARY”
FROM TEMP
GROUP BY DEPT_CODE

SELECT EMP_ID, EMP_NAME, SALARY
FROM TEMP
WHERE (DEPT_CODE, SALARY) IN
  (SELECT DEPT_CODE, MAX(SALARY)
  FROM TEMP
  GROUP BY DEPT_CODE)[/CODE]