33-- ========================================
44
55-- 1. NodeAtom 테이블 생성
6- CREATE TABLE node_atoms (
6+ CREATE TABLE IF NOT EXISTS node_atoms (
77 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,
88 created_date TIMESTAMP (6 ),
99 content_key VARCHAR (64 )
1010);
1111
1212-- 2. NodeAtomVersion 테이블 생성
13- CREATE TABLE node_atom_versions (
13+ CREATE TABLE IF NOT EXISTS node_atom_versions (
1414 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,
1515 created_date TIMESTAMP (6 ),
1616 age_year INTEGER NOT NULL ,
@@ -21,11 +21,12 @@ CREATE TABLE node_atom_versions (
2121 description TEXT ,
2222 options_json TEXT ,
2323 situation TEXT ,
24- category VARCHAR (20 ) CHECK (category IN (' CAREER' ,' EDUCATION' ,' ETC' ,' FINANCE' ,' HEALTH' ,' LOCATION' ,' RELATIONSHIP' )) NOT NULL
24+ category VARCHAR (20 ) NOT NULL ,
25+ CONSTRAINT check_nav_category CHECK (category IN (' CAREER' ,' EDUCATION' ,' ETC' ,' FINANCE' ,' HEALTH' ,' LOCATION' ,' RELATIONSHIP' ))
2526);
2627
2728-- 3. BaselineBranch 테이블 생성
28- CREATE TABLE baseline_branches (
29+ CREATE TABLE IF NOT EXISTS baseline_branches (
2930 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,
3031 created_date TIMESTAMP (6 ),
3132 base_line_id BIGINT NOT NULL ,
@@ -34,7 +35,7 @@ CREATE TABLE baseline_branches (
3435);
3536
3637-- 4. BaselineCommit 테이블 생성
37- CREATE TABLE baseline_commits (
38+ CREATE TABLE IF NOT EXISTS baseline_commits (
3839 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,
3940 created_date TIMESTAMP (6 ),
4041 author_user_id BIGINT NOT NULL ,
@@ -44,7 +45,7 @@ CREATE TABLE baseline_commits (
4445);
4546
4647-- 5. BaselinePatch 테이블 생성
47- CREATE TABLE baseline_patches (
48+ CREATE TABLE IF NOT EXISTS baseline_patches (
4849 id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,
4950 created_date TIMESTAMP (6 ),
5051 age_year INTEGER NOT NULL ,
@@ -58,68 +59,80 @@ CREATE TABLE baseline_patches (
5859-- ========================================
5960
6061-- 6. base_nodes 테이블에 current_version_id 추가
61- ALTER TABLE base_nodes ADD COLUMN current_version_id BIGINT ;
62+ ALTER TABLE base_nodes ADD COLUMN IF NOT EXISTS current_version_id BIGINT ;
6263
6364-- 7. decision_nodes 테이블에 follow_policy와 override_version_id 추가
64- ALTER TABLE decision_nodes ADD COLUMN follow_policy VARCHAR (10 ) DEFAULT ' FOLLOW' NOT NULL ;
65- ALTER TABLE decision_nodes ADD CONSTRAINT check_follow_policy CHECK (follow_policy IN (' FOLLOW' ,' OVERRIDE' ,' PINNED' ));
66- ALTER TABLE decision_nodes ADD COLUMN override_version_id BIGINT ;
65+ ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS follow_policy VARCHAR (10 ) DEFAULT ' FOLLOW' NOT NULL ;
66+ ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS override_version_id BIGINT ;
6767
6868-- 8. decision_lines 테이블에 base_branch_id와 pinned_commit_id 추가
69- ALTER TABLE decision_lines ADD COLUMN base_branch_id BIGINT ;
70- ALTER TABLE decision_lines ADD COLUMN pinned_commit_id BIGINT ;
69+ ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS base_branch_id BIGINT ;
70+ ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS pinned_commit_id BIGINT ;
7171
7272-- ========================================
7373-- 인덱스 생성
7474-- ========================================
7575
7676-- NodeAtomVersion 인덱스
77- CREATE INDEX idx_navers_atom ON node_atom_versions (atom_id);
78- CREATE INDEX idx_navers_parent ON node_atom_versions (parent_version_id);
79- CREATE INDEX idx_navers_age ON node_atom_versions (age_year);
77+ CREATE INDEX IF NOT EXISTS idx_navers_atom ON node_atom_versions (atom_id);
78+ CREATE INDEX IF NOT EXISTS idx_navers_parent ON node_atom_versions (parent_version_id);
79+ CREATE INDEX IF NOT EXISTS idx_navers_age ON node_atom_versions (age_year);
8080
8181-- BaselineBranch 인덱스
82- CREATE INDEX idx_blbranch_line ON baseline_branches (base_line_id);
82+ CREATE INDEX IF NOT EXISTS idx_blbranch_line ON baseline_branches (base_line_id);
8383
8484-- BaselineCommit 인덱스
85- CREATE INDEX idx_blcommit_branch ON baseline_commits (branch_id);
86- CREATE INDEX idx_blcommit_parent ON baseline_commits (parent_commit_id);
85+ CREATE INDEX IF NOT EXISTS idx_blcommit_branch ON baseline_commits (branch_id);
86+ CREATE INDEX IF NOT EXISTS idx_blcommit_parent ON baseline_commits (parent_commit_id);
8787
8888-- BaselinePatch 인덱스
89- CREATE INDEX idx_blpatch_commit ON baseline_patches (commit_id);
90- CREATE INDEX idx_blpatch_age ON baseline_patches (age_year);
89+ CREATE INDEX IF NOT EXISTS idx_blpatch_commit ON baseline_patches (commit_id);
90+ CREATE INDEX IF NOT EXISTS idx_blpatch_age ON baseline_patches (age_year);
9191
9292-- DecisionLine 인덱스
93- CREATE INDEX idx_dline_branch ON decision_lines (base_branch_id);
94- CREATE INDEX idx_dline_pinned ON decision_lines (pinned_commit_id);
93+ CREATE INDEX IF NOT EXISTS idx_dline_branch ON decision_lines (base_branch_id);
94+ CREATE INDEX IF NOT EXISTS idx_dline_pinned ON decision_lines (pinned_commit_id);
9595
9696-- ========================================
9797-- 외래키 제약조건 추가
9898-- ========================================
9999
100100-- NodeAtomVersion FK
101- ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_atom FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
102- ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_parent FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);
101+ ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_atom
102+ FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
103+ ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_parent
104+ FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);
103105
104106-- BaselineBranch FK
105- ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_base_line FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
106- ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_head_commit FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);
107+ ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_base_line
108+ FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
109+ ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_head_commit
110+ FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);
107111
108112-- BaselineCommit FK
109- ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_branch FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
110- ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_parent FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);
113+ ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_branch
114+ FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
115+ ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_parent
116+ FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);
111117
112118-- BaselinePatch FK
113- ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_commit FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
114- ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_before FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
115- ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_after FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);
119+ ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_commit
120+ FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
121+ ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_before
122+ FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
123+ ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_after
124+ FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);
116125
117126-- BaseNode FK
118- ALTER TABLE base_nodes ADD CONSTRAINT fk_base_nodes_current_version FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);
127+ ALTER TABLE base_nodes ADD CONSTRAINT IF NOT EXISTS fk_base_nodes_current_version
128+ FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);
119129
120130-- DecisionNode FK
121- ALTER TABLE decision_nodes ADD CONSTRAINT fk_decision_nodes_override_version FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);
131+ ALTER TABLE decision_nodes ADD CONSTRAINT IF NOT EXISTS fk_decision_nodes_override_version
132+ FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);
122133
123134-- DecisionLine FK
124- ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_base_branch FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
125- ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_pinned_commit FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);
135+ ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_base_branch
136+ FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
137+ ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_pinned_commit
138+ FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);
0 commit comments