ERD 무료 툴 (draw.io)

BACK-END 2023. 2. 28. 19:18

erWin이 가격도 문제이고, 공유기능도 없어서 

초기에 스케치용으로 ERD를 그릴때는 draw.io 가 좋은것 같다. 여러명이서 구글드라이브에 공유해 동시에 그릴 수 있는 장점이 있다.

 

TIP: 

https://drawio-app.com/entity-relationship-diagrams-with-draw-io/ 

 

ERD외에도 다양한 diagram을 그릴 수 있는데,

- 어떤 형태의 Diagram이 좋을까는 여기참고: 

https://velog.io/@yooha9621/UML%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8UML%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8-%EC%A2%85%EB%A5%981

 

 

오라클에서 테이블목록, 엔터티정의서, 테이블정의서 추출 SQL: https://seodaeya.tistory.com/105 

 

# 테이블 목록 조회
SELECT A.TABLE_NAME AS 테이블명 , 
       B.COMMENTS AS 코멘트
  FROM USER_TABLES A
 INNER JOIN USER_TAB_COMMENTS B
    ON A.TABLE_NAME = B.TABLE_NAME
   -- AND A.TABLE_NAME LIKE 'TB_%' -- 네이밍룰 있을경우
   AND INSTR(A.TABLE_NAME,'TEST') = 0  -- TEST 테이블 있으면 제외
 ORDER BY A.TABLE_NAME
 

    
--  테이블 정의서

SELECT
    a.table_name     AS 테이블명,
    --a.tab_cmt        AS 테이블설명,
    a.column_name    AS 컬럼명,
    b.pos            AS PK,
    a.data_type      AS 데이터유형,
    a.DATA_LENGTH    AS 데이터길이,
    a.nullable       AS null여부,
    --,a.column_id      AS 컬럼순서,
    a.data_default   AS 기본값,
    a.col_cmt        AS 컬럼설명
FROM
    (
        SELECT
            s1.table_name,
            s3.comments   AS tab_cmt,
            s1.column_name,
            s2.comments   AS col_cmt,
            s1.data_type,
            CASE
                WHEN s1.data_precision IS NOT NULL THEN
                    data_precision
                    || ','
                    || data_scale
                ELSE
                    to_char(s1.data_length)
            END AS DATA_LENGTH,
            nullable,
            column_id,
            data_default
        FROM
            user_tab_columns    s1,
            user_col_comments   s2,
            user_tab_comments   s3
        WHERE
            s1.table_name = s2.table_name
            AND s1.column_name = s2.column_name
            AND s2.table_name = s3.table_name
            AND S1.TABLE_NAME in (
				SELECT TABLE_NAME from USER_TABLES
    )
    ) a,
    (
        SELECT
            t1.table_name,
            t2.column_name,
            'PK' || position AS pos
        FROM
            (
                SELECT
                    table_name,
                    constraint_name
                FROM
                    user_constraints
                WHERE
                    constraint_type = 'P'
            ) t1,
            (
                SELECT
                    table_name,
                    constraint_name,
                    column_name,
                    position
                FROM
                    user_cons_columns
            ) t2
        WHERE
            t1.table_name = t2.table_name
            AND t1.constraint_name = t2.constraint_name
    ) b
WHERE
    a.table_name = b.table_name (+)
    AND a.column_name = b.column_name (+)
ORDER BY
    a.table_name,
    a.column_id
Posted by yongary
,