@soddong/agentic-domain-methodology 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.tbls.yml +64 -0
- package/CHANGELOG.md +97 -0
- package/README.md +501 -0
- package/dist/database.d.ts +8 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +76 -0
- package/dist/database.js.map +1 -0
- package/dist/fixtures.d.ts +13 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +413 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories.d.ts +54 -0
- package/dist/repositories.d.ts.map +1 -0
- package/dist/repositories.js +652 -0
- package/dist/repositories.js.map +1 -0
- package/dist/seed-apply.d.ts +20 -0
- package/dist/seed-apply.d.ts.map +1 -0
- package/dist/seed-apply.js +728 -0
- package/dist/seed-apply.js.map +1 -0
- package/dist/service.d.ts +107 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +225 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +356 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validators.d.ts +17 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +297 -0
- package/dist/validators.js.map +1 -0
- package/docs/build.md +47 -0
- package/docs/configuration.md +33 -0
- package/docs/delivery.md +52 -0
- package/docs/operations.md +55 -0
- package/docs/publishing.md +84 -0
- package/docs/schema/generated/README.md +39 -0
- package/docs/schema/generated/methodology_activities.md +121 -0
- package/docs/schema/generated/methodology_activities.svg +143 -0
- package/docs/schema/generated/methodology_activity_artifact_requirements.md +129 -0
- package/docs/schema/generated/methodology_activity_artifact_requirements.svg +52 -0
- package/docs/schema/generated/methodology_activity_criteria.md +112 -0
- package/docs/schema/generated/methodology_activity_criteria.svg +52 -0
- package/docs/schema/generated/methodology_baseline_requirements.md +103 -0
- package/docs/schema/generated/methodology_baseline_requirements.svg +27 -0
- package/docs/schema/generated/methodology_code_groups.md +70 -0
- package/docs/schema/generated/methodology_code_groups.svg +49 -0
- package/docs/schema/generated/methodology_codes.md +88 -0
- package/docs/schema/generated/methodology_codes.svg +49 -0
- package/docs/schema/generated/methodology_common_blueprint_policies.md +104 -0
- package/docs/schema/generated/methodology_common_blueprint_policies.svg +72 -0
- package/docs/schema/generated/methodology_common_blueprint_policy_nodes.md +118 -0
- package/docs/schema/generated/methodology_common_blueprint_policy_nodes.svg +59 -0
- package/docs/schema/generated/methodology_handoff_requirements.md +130 -0
- package/docs/schema/generated/methodology_handoff_requirements.svg +27 -0
- package/docs/schema/generated/methodology_lifecycles.md +105 -0
- package/docs/schema/generated/methodology_lifecycles.svg +71 -0
- package/docs/schema/generated/methodology_methodologies.md +92 -0
- package/docs/schema/generated/methodology_methodologies.svg +92 -0
- package/docs/schema/generated/methodology_phase_processes.md +106 -0
- package/docs/schema/generated/methodology_phase_processes.svg +77 -0
- package/docs/schema/generated/methodology_phases.md +107 -0
- package/docs/schema/generated/methodology_phases.svg +77 -0
- package/docs/schema/generated/methodology_processes.md +98 -0
- package/docs/schema/generated/methodology_processes.svg +118 -0
- package/docs/schema/generated/methodology_schema_migrations.md +52 -0
- package/docs/schema/generated/methodology_schema_migrations.svg +27 -0
- package/docs/schema/generated/methodology_stage_activities.md +106 -0
- package/docs/schema/generated/methodology_stage_activities.svg +77 -0
- package/docs/schema/generated/methodology_stage_artifact_requirements.md +109 -0
- package/docs/schema/generated/methodology_stage_artifact_requirements.svg +52 -0
- package/docs/schema/generated/methodology_stage_criteria.md +112 -0
- package/docs/schema/generated/methodology_stage_criteria.svg +52 -0
- package/docs/schema/generated/methodology_stages.md +117 -0
- package/docs/schema/generated/methodology_stages.svg +121 -0
- package/docs/schema/generated/methodology_steps.md +105 -0
- package/docs/schema/generated/methodology_steps.svg +52 -0
- package/docs/schema/generated/methodology_trace_policies.md +121 -0
- package/docs/schema/generated/methodology_trace_policies.svg +27 -0
- package/docs/schema/generated/schema.json +4253 -0
- package/docs/schema/generated/schema.mmd +296 -0
- package/docs/schema/generated/schema.svg +446 -0
- package/docs/schema/migrations.md +24 -0
- package/docs/usage.md +39 -0
- package/package.json +29 -0
- package/src/database/migrations/0001_methodology_base.sql +1190 -0
|
@@ -0,0 +1,4253 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentic-domain-methodology",
|
|
3
|
+
"desc": "Agentic Platform methodology domain database.",
|
|
4
|
+
"tables": [
|
|
5
|
+
{
|
|
6
|
+
"name": "methodology_schema_migrations",
|
|
7
|
+
"type": "table",
|
|
8
|
+
"comment": "methodology 패키지의 migration 적용 이력을 관리한다.",
|
|
9
|
+
"columns": [
|
|
10
|
+
{
|
|
11
|
+
"name": "migration_id",
|
|
12
|
+
"type": "VARCHAR(128)",
|
|
13
|
+
"nullable": true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "migration_name",
|
|
17
|
+
"type": "VARCHAR(256)",
|
|
18
|
+
"nullable": false
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "applied_at",
|
|
22
|
+
"type": "DATETIME",
|
|
23
|
+
"nullable": false,
|
|
24
|
+
"default": "CURRENT_TIMESTAMP"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"indexes": [
|
|
28
|
+
{
|
|
29
|
+
"name": "sqlite_autoindex_methodology_schema_migrations_1",
|
|
30
|
+
"def": "PRIMARY KEY (migration_id)",
|
|
31
|
+
"table": "methodology_schema_migrations",
|
|
32
|
+
"columns": [
|
|
33
|
+
"migration_id"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"constraints": [
|
|
38
|
+
{
|
|
39
|
+
"name": "migration_id",
|
|
40
|
+
"type": "PRIMARY KEY",
|
|
41
|
+
"def": "PRIMARY KEY (migration_id)",
|
|
42
|
+
"table": "methodology_schema_migrations",
|
|
43
|
+
"columns": [
|
|
44
|
+
"migration_id"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "sqlite_autoindex_methodology_schema_migrations_1",
|
|
49
|
+
"type": "PRIMARY KEY",
|
|
50
|
+
"def": "PRIMARY KEY (migration_id)",
|
|
51
|
+
"table": "methodology_schema_migrations",
|
|
52
|
+
"columns": [
|
|
53
|
+
"migration_id"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"def": "CREATE TABLE methodology_schema_migrations (\n -- migration 식별자\n migration_id VARCHAR(128) PRIMARY KEY,\n\n -- migration 이름\n migration_name VARCHAR(256) NOT NULL,\n\n -- 적용 시각\n applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "methodology_code_groups",
|
|
61
|
+
"type": "table",
|
|
62
|
+
"comment": "코드 그룹을 정의한다.",
|
|
63
|
+
"columns": [
|
|
64
|
+
{
|
|
65
|
+
"name": "code_group_code",
|
|
66
|
+
"type": "VARCHAR(64)",
|
|
67
|
+
"nullable": true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "code_group_name",
|
|
71
|
+
"type": "VARCHAR(128)",
|
|
72
|
+
"nullable": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "description",
|
|
76
|
+
"type": "TEXT",
|
|
77
|
+
"nullable": true
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "sort_order",
|
|
81
|
+
"type": "INTEGER",
|
|
82
|
+
"nullable": false,
|
|
83
|
+
"default": "0"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "is_active",
|
|
87
|
+
"type": "INTEGER",
|
|
88
|
+
"nullable": false,
|
|
89
|
+
"default": "1"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "created_at",
|
|
93
|
+
"type": "DATETIME",
|
|
94
|
+
"nullable": false,
|
|
95
|
+
"default": "CURRENT_TIMESTAMP"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "updated_at",
|
|
99
|
+
"type": "DATETIME",
|
|
100
|
+
"nullable": false,
|
|
101
|
+
"default": "CURRENT_TIMESTAMP"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"indexes": [
|
|
105
|
+
{
|
|
106
|
+
"name": "sqlite_autoindex_methodology_code_groups_1",
|
|
107
|
+
"def": "PRIMARY KEY (code_group_code)",
|
|
108
|
+
"table": "methodology_code_groups",
|
|
109
|
+
"columns": [
|
|
110
|
+
"code_group_code"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"constraints": [
|
|
115
|
+
{
|
|
116
|
+
"name": "code_group_code",
|
|
117
|
+
"type": "PRIMARY KEY",
|
|
118
|
+
"def": "PRIMARY KEY (code_group_code)",
|
|
119
|
+
"table": "methodology_code_groups",
|
|
120
|
+
"columns": [
|
|
121
|
+
"code_group_code"
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"name": "sqlite_autoindex_methodology_code_groups_1",
|
|
126
|
+
"type": "PRIMARY KEY",
|
|
127
|
+
"def": "PRIMARY KEY (code_group_code)",
|
|
128
|
+
"table": "methodology_code_groups",
|
|
129
|
+
"columns": [
|
|
130
|
+
"code_group_code"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "-",
|
|
135
|
+
"type": "CHECK",
|
|
136
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
137
|
+
"table": "methodology_code_groups",
|
|
138
|
+
"columns": [
|
|
139
|
+
"is_active"
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"def": "CREATE TABLE methodology_code_groups (\n -- 코드 그룹 식별자\n code_group_code VARCHAR(64) PRIMARY KEY,\n\n -- 코드 그룹 한글명\n code_group_name VARCHAR(128) NOT NULL,\n\n -- 코드 그룹 설명\n description TEXT,\n\n -- 표시 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 활성 여부. 1은 활성, 0은 비활성\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "methodology_codes",
|
|
147
|
+
"type": "table",
|
|
148
|
+
"comment": "코드 그룹별 코드 값을 정의한다.",
|
|
149
|
+
"columns": [
|
|
150
|
+
{
|
|
151
|
+
"name": "code_group_code",
|
|
152
|
+
"type": "VARCHAR(64)",
|
|
153
|
+
"nullable": false
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "code",
|
|
157
|
+
"type": "VARCHAR(128)",
|
|
158
|
+
"nullable": false
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "code_name",
|
|
162
|
+
"type": "VARCHAR(128)",
|
|
163
|
+
"nullable": false
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "description",
|
|
167
|
+
"type": "TEXT",
|
|
168
|
+
"nullable": true
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"name": "sort_order",
|
|
172
|
+
"type": "INTEGER",
|
|
173
|
+
"nullable": false,
|
|
174
|
+
"default": "0"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"name": "is_active",
|
|
178
|
+
"type": "INTEGER",
|
|
179
|
+
"nullable": false,
|
|
180
|
+
"default": "1"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "metadata_json",
|
|
184
|
+
"type": "JSON",
|
|
185
|
+
"nullable": true
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "created_at",
|
|
189
|
+
"type": "DATETIME",
|
|
190
|
+
"nullable": false,
|
|
191
|
+
"default": "CURRENT_TIMESTAMP"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"name": "updated_at",
|
|
195
|
+
"type": "DATETIME",
|
|
196
|
+
"nullable": false,
|
|
197
|
+
"default": "CURRENT_TIMESTAMP"
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"indexes": [
|
|
201
|
+
{
|
|
202
|
+
"name": "sqlite_autoindex_methodology_codes_1",
|
|
203
|
+
"def": "PRIMARY KEY (code_group_code, code)",
|
|
204
|
+
"table": "methodology_codes",
|
|
205
|
+
"columns": [
|
|
206
|
+
"code_group_code",
|
|
207
|
+
"code"
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
"constraints": [
|
|
212
|
+
{
|
|
213
|
+
"name": "code_group_code",
|
|
214
|
+
"type": "PRIMARY KEY",
|
|
215
|
+
"def": "PRIMARY KEY (code_group_code)",
|
|
216
|
+
"table": "methodology_codes",
|
|
217
|
+
"columns": [
|
|
218
|
+
"code_group_code"
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "code",
|
|
223
|
+
"type": "PRIMARY KEY",
|
|
224
|
+
"def": "PRIMARY KEY (code)",
|
|
225
|
+
"table": "methodology_codes",
|
|
226
|
+
"columns": [
|
|
227
|
+
"code"
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"name": "- (Foreign key ID: 0)",
|
|
232
|
+
"type": "FOREIGN KEY",
|
|
233
|
+
"def": "FOREIGN KEY (code_group_code) REFERENCES methodology_code_groups (code_group_code) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
234
|
+
"table": "methodology_codes",
|
|
235
|
+
"referenced_table": "methodology_code_groups",
|
|
236
|
+
"columns": [
|
|
237
|
+
"code_group_code"
|
|
238
|
+
],
|
|
239
|
+
"referenced_columns": [
|
|
240
|
+
"code_group_code"
|
|
241
|
+
]
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "sqlite_autoindex_methodology_codes_1",
|
|
245
|
+
"type": "PRIMARY KEY",
|
|
246
|
+
"def": "PRIMARY KEY (code_group_code, code)",
|
|
247
|
+
"table": "methodology_codes",
|
|
248
|
+
"columns": [
|
|
249
|
+
"code_group_code",
|
|
250
|
+
"code"
|
|
251
|
+
]
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "-",
|
|
255
|
+
"type": "CHECK",
|
|
256
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
257
|
+
"table": "methodology_codes",
|
|
258
|
+
"columns": [
|
|
259
|
+
"is_active"
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"name": "-",
|
|
264
|
+
"type": "CHECK",
|
|
265
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
266
|
+
"table": "methodology_codes",
|
|
267
|
+
"columns": [
|
|
268
|
+
"metadata_json"
|
|
269
|
+
]
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
"def": "CREATE TABLE methodology_codes (\n -- 코드 그룹 식별자\n code_group_code VARCHAR(64) NOT NULL,\n\n -- 코드 값. lower_snake_case를 사용한다.\n code VARCHAR(128) NOT NULL,\n\n -- 코드 한글명\n code_name VARCHAR(128) NOT NULL,\n\n -- 코드 설명\n description TEXT,\n\n -- 표시 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 활성 여부. 1은 활성, 0은 비활성\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n PRIMARY KEY (code_group_code, code),\n\n FOREIGN KEY (code_group_code)\n REFERENCES methodology_code_groups (code_group_code)\n ON DELETE CASCADE\n)"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "methodology_methodologies",
|
|
276
|
+
"type": "table",
|
|
277
|
+
"comment": "방법론 정의의 최상위 versioned definition을 관리한다.",
|
|
278
|
+
"columns": [
|
|
279
|
+
{
|
|
280
|
+
"name": "methodology_id",
|
|
281
|
+
"type": "CHAR(36)",
|
|
282
|
+
"nullable": true
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"name": "methodology_code",
|
|
286
|
+
"type": "VARCHAR(128)",
|
|
287
|
+
"nullable": false
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"name": "methodology_name",
|
|
291
|
+
"type": "VARCHAR(256)",
|
|
292
|
+
"nullable": false
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"name": "methodology_version",
|
|
296
|
+
"type": "VARCHAR(64)",
|
|
297
|
+
"nullable": false
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"name": "methodology_status_code",
|
|
301
|
+
"type": "VARCHAR(32)",
|
|
302
|
+
"nullable": false,
|
|
303
|
+
"default": "'draft'"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "description",
|
|
307
|
+
"type": "TEXT",
|
|
308
|
+
"nullable": true
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "is_active",
|
|
312
|
+
"type": "INTEGER",
|
|
313
|
+
"nullable": false,
|
|
314
|
+
"default": "1"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"name": "created_at",
|
|
318
|
+
"type": "DATETIME",
|
|
319
|
+
"nullable": false,
|
|
320
|
+
"default": "CURRENT_TIMESTAMP"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"name": "updated_at",
|
|
324
|
+
"type": "DATETIME",
|
|
325
|
+
"nullable": false,
|
|
326
|
+
"default": "CURRENT_TIMESTAMP"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"name": "metadata_json",
|
|
330
|
+
"type": "JSON",
|
|
331
|
+
"nullable": true
|
|
332
|
+
}
|
|
333
|
+
],
|
|
334
|
+
"indexes": [
|
|
335
|
+
{
|
|
336
|
+
"name": "sqlite_autoindex_methodology_methodologies_2",
|
|
337
|
+
"def": "UNIQUE (methodology_code, methodology_version)",
|
|
338
|
+
"table": "methodology_methodologies",
|
|
339
|
+
"columns": [
|
|
340
|
+
"methodology_code",
|
|
341
|
+
"methodology_version"
|
|
342
|
+
]
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"name": "sqlite_autoindex_methodology_methodologies_1",
|
|
346
|
+
"def": "PRIMARY KEY (methodology_id)",
|
|
347
|
+
"table": "methodology_methodologies",
|
|
348
|
+
"columns": [
|
|
349
|
+
"methodology_id"
|
|
350
|
+
]
|
|
351
|
+
}
|
|
352
|
+
],
|
|
353
|
+
"constraints": [
|
|
354
|
+
{
|
|
355
|
+
"name": "methodology_id",
|
|
356
|
+
"type": "PRIMARY KEY",
|
|
357
|
+
"def": "PRIMARY KEY (methodology_id)",
|
|
358
|
+
"table": "methodology_methodologies",
|
|
359
|
+
"columns": [
|
|
360
|
+
"methodology_id"
|
|
361
|
+
]
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "sqlite_autoindex_methodology_methodologies_2",
|
|
365
|
+
"type": "UNIQUE",
|
|
366
|
+
"def": "UNIQUE (methodology_code, methodology_version)",
|
|
367
|
+
"table": "methodology_methodologies",
|
|
368
|
+
"columns": [
|
|
369
|
+
"methodology_code",
|
|
370
|
+
"methodology_version"
|
|
371
|
+
]
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "sqlite_autoindex_methodology_methodologies_1",
|
|
375
|
+
"type": "PRIMARY KEY",
|
|
376
|
+
"def": "PRIMARY KEY (methodology_id)",
|
|
377
|
+
"table": "methodology_methodologies",
|
|
378
|
+
"columns": [
|
|
379
|
+
"methodology_id"
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "-",
|
|
384
|
+
"type": "CHECK",
|
|
385
|
+
"def": "CHECK (length(methodology_id) = 36)",
|
|
386
|
+
"table": "methodology_methodologies",
|
|
387
|
+
"columns": [
|
|
388
|
+
"methodology_id"
|
|
389
|
+
]
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "-",
|
|
393
|
+
"type": "CHECK",
|
|
394
|
+
"def": "CHECK (methodology_status_code IN ('draft', 'active', 'deprecated', 'archived'))",
|
|
395
|
+
"table": "methodology_methodologies",
|
|
396
|
+
"columns": [
|
|
397
|
+
"methodology_status_code"
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"name": "-",
|
|
402
|
+
"type": "CHECK",
|
|
403
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
404
|
+
"table": "methodology_methodologies",
|
|
405
|
+
"columns": [
|
|
406
|
+
"is_active"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "-",
|
|
411
|
+
"type": "CHECK",
|
|
412
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
413
|
+
"table": "methodology_methodologies",
|
|
414
|
+
"columns": [
|
|
415
|
+
"metadata_json"
|
|
416
|
+
]
|
|
417
|
+
}
|
|
418
|
+
],
|
|
419
|
+
"def": "CREATE TABLE methodology_methodologies (\n -- 방법론 식별자\n methodology_id CHAR(36) PRIMARY KEY\n CHECK (length(methodology_id) = 36),\n\n -- 방법론 코드\n methodology_code VARCHAR(128) NOT NULL,\n\n -- 방법론명\n methodology_name VARCHAR(256) NOT NULL,\n\n -- 방법론 정의 데이터 버전\n methodology_version VARCHAR(64) NOT NULL,\n\n -- 방법론 상태 코드\n methodology_status_code VARCHAR(32) NOT NULL DEFAULT 'draft'\n CHECK (methodology_status_code IN ('draft', 'active', 'deprecated', 'archived')),\n\n -- 방법론 설명\n description TEXT,\n\n -- 활성 여부. 1은 활성, 0은 비활성\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n UNIQUE (methodology_code, methodology_version)\n)"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"name": "methodology_common_blueprint_policies",
|
|
423
|
+
"type": "table",
|
|
424
|
+
"columns": [
|
|
425
|
+
{
|
|
426
|
+
"name": "common_blueprint_policy_id",
|
|
427
|
+
"type": "CHAR(36)",
|
|
428
|
+
"nullable": true
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"name": "methodology_id",
|
|
432
|
+
"type": "CHAR(36)",
|
|
433
|
+
"nullable": false
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "policy_code",
|
|
437
|
+
"type": "VARCHAR(128)",
|
|
438
|
+
"nullable": false
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
"name": "policy_name",
|
|
442
|
+
"type": "VARCHAR(256)",
|
|
443
|
+
"nullable": false
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"name": "applies_to_standard_type_code",
|
|
447
|
+
"type": "VARCHAR(64)",
|
|
448
|
+
"nullable": true
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"name": "is_default",
|
|
452
|
+
"type": "INTEGER",
|
|
453
|
+
"nullable": false,
|
|
454
|
+
"default": "0"
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"name": "status_code",
|
|
458
|
+
"type": "VARCHAR(32)",
|
|
459
|
+
"nullable": false,
|
|
460
|
+
"default": "'DRAFT'"
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"name": "is_active",
|
|
464
|
+
"type": "INTEGER",
|
|
465
|
+
"nullable": false,
|
|
466
|
+
"default": "1"
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
"name": "created_at",
|
|
470
|
+
"type": "DATETIME",
|
|
471
|
+
"nullable": false,
|
|
472
|
+
"default": "CURRENT_TIMESTAMP"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"name": "updated_at",
|
|
476
|
+
"type": "DATETIME",
|
|
477
|
+
"nullable": false,
|
|
478
|
+
"default": "CURRENT_TIMESTAMP"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"name": "metadata_json",
|
|
482
|
+
"type": "JSON",
|
|
483
|
+
"nullable": true
|
|
484
|
+
}
|
|
485
|
+
],
|
|
486
|
+
"indexes": [
|
|
487
|
+
{
|
|
488
|
+
"name": "ux_methodology_common_blueprint_policies_default",
|
|
489
|
+
"def": "CREATE UNIQUE INDEX ux_methodology_common_blueprint_policies_default\n ON methodology_common_blueprint_policies (methodology_id)\n WHERE is_default = 1",
|
|
490
|
+
"table": "methodology_common_blueprint_policies",
|
|
491
|
+
"columns": [
|
|
492
|
+
"methodology_id"
|
|
493
|
+
]
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policies_2",
|
|
497
|
+
"def": "UNIQUE (methodology_id, policy_code)",
|
|
498
|
+
"table": "methodology_common_blueprint_policies",
|
|
499
|
+
"columns": [
|
|
500
|
+
"methodology_id",
|
|
501
|
+
"policy_code"
|
|
502
|
+
]
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policies_1",
|
|
506
|
+
"def": "PRIMARY KEY (common_blueprint_policy_id)",
|
|
507
|
+
"table": "methodology_common_blueprint_policies",
|
|
508
|
+
"columns": [
|
|
509
|
+
"common_blueprint_policy_id"
|
|
510
|
+
]
|
|
511
|
+
}
|
|
512
|
+
],
|
|
513
|
+
"constraints": [
|
|
514
|
+
{
|
|
515
|
+
"name": "common_blueprint_policy_id",
|
|
516
|
+
"type": "PRIMARY KEY",
|
|
517
|
+
"def": "PRIMARY KEY (common_blueprint_policy_id)",
|
|
518
|
+
"table": "methodology_common_blueprint_policies",
|
|
519
|
+
"columns": [
|
|
520
|
+
"common_blueprint_policy_id"
|
|
521
|
+
]
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
"name": "- (Foreign key ID: 0)",
|
|
525
|
+
"type": "FOREIGN KEY",
|
|
526
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
527
|
+
"table": "methodology_common_blueprint_policies",
|
|
528
|
+
"referenced_table": "methodology_methodologies",
|
|
529
|
+
"columns": [
|
|
530
|
+
"methodology_id"
|
|
531
|
+
],
|
|
532
|
+
"referenced_columns": [
|
|
533
|
+
"methodology_id"
|
|
534
|
+
]
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policies_2",
|
|
538
|
+
"type": "UNIQUE",
|
|
539
|
+
"def": "UNIQUE (methodology_id, policy_code)",
|
|
540
|
+
"table": "methodology_common_blueprint_policies",
|
|
541
|
+
"columns": [
|
|
542
|
+
"methodology_id",
|
|
543
|
+
"policy_code"
|
|
544
|
+
]
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policies_1",
|
|
548
|
+
"type": "PRIMARY KEY",
|
|
549
|
+
"def": "PRIMARY KEY (common_blueprint_policy_id)",
|
|
550
|
+
"table": "methodology_common_blueprint_policies",
|
|
551
|
+
"columns": [
|
|
552
|
+
"common_blueprint_policy_id"
|
|
553
|
+
]
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "-",
|
|
557
|
+
"type": "CHECK",
|
|
558
|
+
"def": "CHECK (length(common_blueprint_policy_id) = 36)",
|
|
559
|
+
"table": "methodology_common_blueprint_policies",
|
|
560
|
+
"columns": [
|
|
561
|
+
"common_blueprint_policy_id"
|
|
562
|
+
]
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
"name": "-",
|
|
566
|
+
"type": "CHECK",
|
|
567
|
+
"def": "CHECK (length(methodology_id) = 36)",
|
|
568
|
+
"table": "methodology_common_blueprint_policies",
|
|
569
|
+
"columns": [
|
|
570
|
+
"methodology_id"
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"name": "-",
|
|
575
|
+
"type": "CHECK",
|
|
576
|
+
"def": "CHECK (is_default IN (0, 1))",
|
|
577
|
+
"table": "methodology_common_blueprint_policies",
|
|
578
|
+
"columns": [
|
|
579
|
+
"is_default"
|
|
580
|
+
]
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"name": "-",
|
|
584
|
+
"type": "CHECK",
|
|
585
|
+
"def": "CHECK (status_code IN ('DRAFT', 'ACTIVE', 'DEPRECATED', 'ARCHIVED'))",
|
|
586
|
+
"table": "methodology_common_blueprint_policies",
|
|
587
|
+
"columns": [
|
|
588
|
+
"status_code"
|
|
589
|
+
]
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
"name": "-",
|
|
593
|
+
"type": "CHECK",
|
|
594
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
595
|
+
"table": "methodology_common_blueprint_policies",
|
|
596
|
+
"columns": [
|
|
597
|
+
"is_active"
|
|
598
|
+
]
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"name": "-",
|
|
602
|
+
"type": "CHECK",
|
|
603
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
604
|
+
"table": "methodology_common_blueprint_policies",
|
|
605
|
+
"columns": [
|
|
606
|
+
"metadata_json"
|
|
607
|
+
]
|
|
608
|
+
}
|
|
609
|
+
],
|
|
610
|
+
"def": "CREATE TABLE methodology_common_blueprint_policies (\n -- common blueprint policy 식별자\n common_blueprint_policy_id CHAR(36) PRIMARY KEY\n CHECK (length(common_blueprint_policy_id) = 36),\n\n -- 소속 방법론 식별자\n methodology_id CHAR(36) NOT NULL\n CHECK (length(methodology_id) = 36),\n\n -- policy 코드\n policy_code VARCHAR(128) NOT NULL,\n\n -- policy 이름\n policy_name VARCHAR(256) NOT NULL,\n\n -- 적용 대상 Artifact Standard 유형 코드. NULL이면 방법론 기본 공통 정책이다.\n applies_to_standard_type_code VARCHAR(64),\n\n -- 기본 policy 여부\n is_default INTEGER NOT NULL DEFAULT 0\n CHECK (is_default IN (0, 1)),\n\n -- policy 상태 코드\n status_code VARCHAR(32) NOT NULL DEFAULT 'DRAFT'\n CHECK (status_code IN ('DRAFT', 'ACTIVE', 'DEPRECATED', 'ARCHIVED')),\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (methodology_id)\n REFERENCES methodology_methodologies (methodology_id)\n ON DELETE CASCADE,\n\n UNIQUE (methodology_id, policy_code)\n)"
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"name": "methodology_common_blueprint_policy_nodes",
|
|
614
|
+
"type": "table",
|
|
615
|
+
"columns": [
|
|
616
|
+
{
|
|
617
|
+
"name": "common_blueprint_policy_node_id",
|
|
618
|
+
"type": "CHAR(36)",
|
|
619
|
+
"nullable": true
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "common_blueprint_policy_id",
|
|
623
|
+
"type": "CHAR(36)",
|
|
624
|
+
"nullable": false
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"name": "parent_policy_node_id",
|
|
628
|
+
"type": "CHAR(36)",
|
|
629
|
+
"nullable": true
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
"name": "node_code",
|
|
633
|
+
"type": "VARCHAR(128)",
|
|
634
|
+
"nullable": false
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
"name": "node_title",
|
|
638
|
+
"type": "VARCHAR(256)",
|
|
639
|
+
"nullable": false
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"name": "node_type_code",
|
|
643
|
+
"type": "VARCHAR(32)",
|
|
644
|
+
"nullable": false
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "node_level",
|
|
648
|
+
"type": "INTEGER",
|
|
649
|
+
"nullable": false
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"name": "is_required",
|
|
653
|
+
"type": "INTEGER",
|
|
654
|
+
"nullable": false,
|
|
655
|
+
"default": "0"
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"name": "sort_order",
|
|
659
|
+
"type": "INTEGER",
|
|
660
|
+
"nullable": false,
|
|
661
|
+
"default": "0"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"name": "created_at",
|
|
665
|
+
"type": "DATETIME",
|
|
666
|
+
"nullable": false,
|
|
667
|
+
"default": "CURRENT_TIMESTAMP"
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"name": "updated_at",
|
|
671
|
+
"type": "DATETIME",
|
|
672
|
+
"nullable": false,
|
|
673
|
+
"default": "CURRENT_TIMESTAMP"
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"name": "metadata_json",
|
|
677
|
+
"type": "JSON",
|
|
678
|
+
"nullable": true
|
|
679
|
+
}
|
|
680
|
+
],
|
|
681
|
+
"indexes": [
|
|
682
|
+
{
|
|
683
|
+
"name": "idx_methodology_common_blueprint_policy_nodes_policy_type",
|
|
684
|
+
"def": "CREATE INDEX idx_methodology_common_blueprint_policy_nodes_policy_type\n ON methodology_common_blueprint_policy_nodes (common_blueprint_policy_id, node_type_code, sort_order)",
|
|
685
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
686
|
+
"columns": [
|
|
687
|
+
"common_blueprint_policy_id",
|
|
688
|
+
"node_type_code",
|
|
689
|
+
"sort_order"
|
|
690
|
+
]
|
|
691
|
+
},
|
|
692
|
+
{
|
|
693
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_3",
|
|
694
|
+
"def": "UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order)",
|
|
695
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
696
|
+
"columns": [
|
|
697
|
+
"common_blueprint_policy_id",
|
|
698
|
+
"parent_policy_node_id",
|
|
699
|
+
"sort_order"
|
|
700
|
+
]
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_2",
|
|
704
|
+
"def": "UNIQUE (common_blueprint_policy_id, node_code)",
|
|
705
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
706
|
+
"columns": [
|
|
707
|
+
"common_blueprint_policy_id",
|
|
708
|
+
"node_code"
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
{
|
|
712
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_1",
|
|
713
|
+
"def": "PRIMARY KEY (common_blueprint_policy_node_id)",
|
|
714
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
715
|
+
"columns": [
|
|
716
|
+
"common_blueprint_policy_node_id"
|
|
717
|
+
]
|
|
718
|
+
}
|
|
719
|
+
],
|
|
720
|
+
"constraints": [
|
|
721
|
+
{
|
|
722
|
+
"name": "common_blueprint_policy_node_id",
|
|
723
|
+
"type": "PRIMARY KEY",
|
|
724
|
+
"def": "PRIMARY KEY (common_blueprint_policy_node_id)",
|
|
725
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
726
|
+
"columns": [
|
|
727
|
+
"common_blueprint_policy_node_id"
|
|
728
|
+
]
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"name": "- (Foreign key ID: 0)",
|
|
732
|
+
"type": "FOREIGN KEY",
|
|
733
|
+
"def": "FOREIGN KEY (parent_policy_node_id) REFERENCES methodology_common_blueprint_policy_nodes (common_blueprint_policy_node_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
734
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
735
|
+
"referenced_table": "methodology_common_blueprint_policy_nodes",
|
|
736
|
+
"columns": [
|
|
737
|
+
"parent_policy_node_id"
|
|
738
|
+
],
|
|
739
|
+
"referenced_columns": [
|
|
740
|
+
"common_blueprint_policy_node_id"
|
|
741
|
+
]
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"name": "- (Foreign key ID: 1)",
|
|
745
|
+
"type": "FOREIGN KEY",
|
|
746
|
+
"def": "FOREIGN KEY (common_blueprint_policy_id) REFERENCES methodology_common_blueprint_policies (common_blueprint_policy_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
747
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
748
|
+
"referenced_table": "methodology_common_blueprint_policies",
|
|
749
|
+
"columns": [
|
|
750
|
+
"common_blueprint_policy_id"
|
|
751
|
+
],
|
|
752
|
+
"referenced_columns": [
|
|
753
|
+
"common_blueprint_policy_id"
|
|
754
|
+
]
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_3",
|
|
758
|
+
"type": "UNIQUE",
|
|
759
|
+
"def": "UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order)",
|
|
760
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
761
|
+
"columns": [
|
|
762
|
+
"common_blueprint_policy_id",
|
|
763
|
+
"parent_policy_node_id",
|
|
764
|
+
"sort_order"
|
|
765
|
+
]
|
|
766
|
+
},
|
|
767
|
+
{
|
|
768
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_2",
|
|
769
|
+
"type": "UNIQUE",
|
|
770
|
+
"def": "UNIQUE (common_blueprint_policy_id, node_code)",
|
|
771
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
772
|
+
"columns": [
|
|
773
|
+
"common_blueprint_policy_id",
|
|
774
|
+
"node_code"
|
|
775
|
+
]
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
"name": "sqlite_autoindex_methodology_common_blueprint_policy_nodes_1",
|
|
779
|
+
"type": "PRIMARY KEY",
|
|
780
|
+
"def": "PRIMARY KEY (common_blueprint_policy_node_id)",
|
|
781
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
782
|
+
"columns": [
|
|
783
|
+
"common_blueprint_policy_node_id"
|
|
784
|
+
]
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
"name": "-",
|
|
788
|
+
"type": "CHECK",
|
|
789
|
+
"def": "CHECK (length(common_blueprint_policy_node_id) = 36)",
|
|
790
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
791
|
+
"columns": [
|
|
792
|
+
"common_blueprint_policy_node_id"
|
|
793
|
+
]
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
"name": "-",
|
|
797
|
+
"type": "CHECK",
|
|
798
|
+
"def": "CHECK (length(common_blueprint_policy_id) = 36)",
|
|
799
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
800
|
+
"columns": [
|
|
801
|
+
"common_blueprint_policy_id"
|
|
802
|
+
]
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"name": "-",
|
|
806
|
+
"type": "CHECK",
|
|
807
|
+
"def": "CHECK (parent_policy_node_id IS NULL OR length(parent_policy_node_id) = 36)",
|
|
808
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
809
|
+
"columns": [
|
|
810
|
+
"parent_policy_node_id"
|
|
811
|
+
]
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"name": "-",
|
|
815
|
+
"type": "CHECK",
|
|
816
|
+
"def": "CHECK (node_type_code IN ('FRONT_MATTER', 'BACK_MATTER', 'BODY_POLICY'))",
|
|
817
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
818
|
+
"columns": [
|
|
819
|
+
"node_type_code"
|
|
820
|
+
]
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
"name": "-",
|
|
824
|
+
"type": "CHECK",
|
|
825
|
+
"def": "CHECK (node_level BETWEEN 1 AND 7)",
|
|
826
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
827
|
+
"columns": [
|
|
828
|
+
"node_level"
|
|
829
|
+
]
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
"name": "-",
|
|
833
|
+
"type": "CHECK",
|
|
834
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
835
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
836
|
+
"columns": [
|
|
837
|
+
"is_required"
|
|
838
|
+
]
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
"name": "-",
|
|
842
|
+
"type": "CHECK",
|
|
843
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
844
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
845
|
+
"columns": [
|
|
846
|
+
"metadata_json"
|
|
847
|
+
]
|
|
848
|
+
}
|
|
849
|
+
],
|
|
850
|
+
"def": "CREATE TABLE methodology_common_blueprint_policy_nodes (\n -- common blueprint policy node 식별자\n common_blueprint_policy_node_id CHAR(36) PRIMARY KEY\n CHECK (length(common_blueprint_policy_node_id) = 36),\n\n -- 소속 common blueprint policy 식별자\n common_blueprint_policy_id CHAR(36) NOT NULL\n CHECK (length(common_blueprint_policy_id) = 36),\n\n -- 상위 common blueprint policy node 식별자\n parent_policy_node_id CHAR(36)\n CHECK (parent_policy_node_id IS NULL OR length(parent_policy_node_id) = 36),\n\n -- node 코드\n node_code VARCHAR(128) NOT NULL,\n\n -- node 제목\n node_title VARCHAR(256) NOT NULL,\n\n -- node 유형 코드\n node_type_code VARCHAR(32) NOT NULL\n CHECK (node_type_code IN ('FRONT_MATTER', 'BACK_MATTER', 'BODY_POLICY')),\n\n -- node level\n node_level INTEGER NOT NULL\n CHECK (node_level BETWEEN 1 AND 7),\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 0\n CHECK (is_required IN (0, 1)),\n\n -- 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (common_blueprint_policy_id)\n REFERENCES methodology_common_blueprint_policies (common_blueprint_policy_id)\n ON DELETE CASCADE,\n\n FOREIGN KEY (parent_policy_node_id)\n REFERENCES methodology_common_blueprint_policy_nodes (common_blueprint_policy_node_id)\n ON DELETE CASCADE,\n\n UNIQUE (common_blueprint_policy_id, node_code),\n UNIQUE (common_blueprint_policy_id, parent_policy_node_id, sort_order)\n)"
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
"name": "methodology_lifecycles",
|
|
854
|
+
"type": "table",
|
|
855
|
+
"comment": "방법론 생명주기 모델을 관리한다.",
|
|
856
|
+
"columns": [
|
|
857
|
+
{
|
|
858
|
+
"name": "lifecycle_id",
|
|
859
|
+
"type": "CHAR(36)",
|
|
860
|
+
"nullable": true
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"name": "methodology_id",
|
|
864
|
+
"type": "CHAR(36)",
|
|
865
|
+
"nullable": false
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
"name": "lifecycle_code",
|
|
869
|
+
"type": "VARCHAR(128)",
|
|
870
|
+
"nullable": false
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
"name": "lifecycle_name",
|
|
874
|
+
"type": "VARCHAR(256)",
|
|
875
|
+
"nullable": false
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"name": "lifecycle_type_code",
|
|
879
|
+
"type": "VARCHAR(64)",
|
|
880
|
+
"nullable": false,
|
|
881
|
+
"default": "'default'"
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
"name": "description",
|
|
885
|
+
"type": "TEXT",
|
|
886
|
+
"nullable": true
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
"name": "sort_order",
|
|
890
|
+
"type": "INTEGER",
|
|
891
|
+
"nullable": false,
|
|
892
|
+
"default": "0"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
"name": "is_active",
|
|
896
|
+
"type": "INTEGER",
|
|
897
|
+
"nullable": false,
|
|
898
|
+
"default": "1"
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"name": "created_at",
|
|
902
|
+
"type": "DATETIME",
|
|
903
|
+
"nullable": false,
|
|
904
|
+
"default": "CURRENT_TIMESTAMP"
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"name": "updated_at",
|
|
908
|
+
"type": "DATETIME",
|
|
909
|
+
"nullable": false,
|
|
910
|
+
"default": "CURRENT_TIMESTAMP"
|
|
911
|
+
},
|
|
912
|
+
{
|
|
913
|
+
"name": "metadata_json",
|
|
914
|
+
"type": "JSON",
|
|
915
|
+
"nullable": true
|
|
916
|
+
}
|
|
917
|
+
],
|
|
918
|
+
"indexes": [
|
|
919
|
+
{
|
|
920
|
+
"name": "idx_methodology_lifecycles_methodology",
|
|
921
|
+
"def": "CREATE INDEX idx_methodology_lifecycles_methodology\n ON methodology_lifecycles (methodology_id)",
|
|
922
|
+
"table": "methodology_lifecycles",
|
|
923
|
+
"columns": [
|
|
924
|
+
"methodology_id"
|
|
925
|
+
]
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
"name": "sqlite_autoindex_methodology_lifecycles_3",
|
|
929
|
+
"def": "UNIQUE (methodology_id, sort_order)",
|
|
930
|
+
"table": "methodology_lifecycles",
|
|
931
|
+
"columns": [
|
|
932
|
+
"methodology_id",
|
|
933
|
+
"sort_order"
|
|
934
|
+
]
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
"name": "sqlite_autoindex_methodology_lifecycles_2",
|
|
938
|
+
"def": "UNIQUE (methodology_id, lifecycle_code)",
|
|
939
|
+
"table": "methodology_lifecycles",
|
|
940
|
+
"columns": [
|
|
941
|
+
"methodology_id",
|
|
942
|
+
"lifecycle_code"
|
|
943
|
+
]
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
"name": "sqlite_autoindex_methodology_lifecycles_1",
|
|
947
|
+
"def": "PRIMARY KEY (lifecycle_id)",
|
|
948
|
+
"table": "methodology_lifecycles",
|
|
949
|
+
"columns": [
|
|
950
|
+
"lifecycle_id"
|
|
951
|
+
]
|
|
952
|
+
}
|
|
953
|
+
],
|
|
954
|
+
"constraints": [
|
|
955
|
+
{
|
|
956
|
+
"name": "lifecycle_id",
|
|
957
|
+
"type": "PRIMARY KEY",
|
|
958
|
+
"def": "PRIMARY KEY (lifecycle_id)",
|
|
959
|
+
"table": "methodology_lifecycles",
|
|
960
|
+
"columns": [
|
|
961
|
+
"lifecycle_id"
|
|
962
|
+
]
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
"name": "- (Foreign key ID: 0)",
|
|
966
|
+
"type": "FOREIGN KEY",
|
|
967
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
968
|
+
"table": "methodology_lifecycles",
|
|
969
|
+
"referenced_table": "methodology_methodologies",
|
|
970
|
+
"columns": [
|
|
971
|
+
"methodology_id"
|
|
972
|
+
],
|
|
973
|
+
"referenced_columns": [
|
|
974
|
+
"methodology_id"
|
|
975
|
+
]
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"name": "sqlite_autoindex_methodology_lifecycles_3",
|
|
979
|
+
"type": "UNIQUE",
|
|
980
|
+
"def": "UNIQUE (methodology_id, sort_order)",
|
|
981
|
+
"table": "methodology_lifecycles",
|
|
982
|
+
"columns": [
|
|
983
|
+
"methodology_id",
|
|
984
|
+
"sort_order"
|
|
985
|
+
]
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
"name": "sqlite_autoindex_methodology_lifecycles_2",
|
|
989
|
+
"type": "UNIQUE",
|
|
990
|
+
"def": "UNIQUE (methodology_id, lifecycle_code)",
|
|
991
|
+
"table": "methodology_lifecycles",
|
|
992
|
+
"columns": [
|
|
993
|
+
"methodology_id",
|
|
994
|
+
"lifecycle_code"
|
|
995
|
+
]
|
|
996
|
+
},
|
|
997
|
+
{
|
|
998
|
+
"name": "sqlite_autoindex_methodology_lifecycles_1",
|
|
999
|
+
"type": "PRIMARY KEY",
|
|
1000
|
+
"def": "PRIMARY KEY (lifecycle_id)",
|
|
1001
|
+
"table": "methodology_lifecycles",
|
|
1002
|
+
"columns": [
|
|
1003
|
+
"lifecycle_id"
|
|
1004
|
+
]
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
"name": "-",
|
|
1008
|
+
"type": "CHECK",
|
|
1009
|
+
"def": "CHECK (length(lifecycle_id) = 36)",
|
|
1010
|
+
"table": "methodology_lifecycles",
|
|
1011
|
+
"columns": [
|
|
1012
|
+
"lifecycle_id"
|
|
1013
|
+
]
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
"name": "-",
|
|
1017
|
+
"type": "CHECK",
|
|
1018
|
+
"def": "CHECK (length(methodology_id) = 36)",
|
|
1019
|
+
"table": "methodology_lifecycles",
|
|
1020
|
+
"columns": [
|
|
1021
|
+
"methodology_id"
|
|
1022
|
+
]
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"name": "-",
|
|
1026
|
+
"type": "CHECK",
|
|
1027
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
1028
|
+
"table": "methodology_lifecycles",
|
|
1029
|
+
"columns": [
|
|
1030
|
+
"is_active"
|
|
1031
|
+
]
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
"name": "-",
|
|
1035
|
+
"type": "CHECK",
|
|
1036
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
1037
|
+
"table": "methodology_lifecycles",
|
|
1038
|
+
"columns": [
|
|
1039
|
+
"metadata_json"
|
|
1040
|
+
]
|
|
1041
|
+
}
|
|
1042
|
+
],
|
|
1043
|
+
"def": "CREATE TABLE methodology_lifecycles (\n -- lifecycle 식별자\n lifecycle_id CHAR(36) PRIMARY KEY\n CHECK (length(lifecycle_id) = 36),\n\n -- 소속 방법론 식별자\n methodology_id CHAR(36) NOT NULL\n CHECK (length(methodology_id) = 36),\n\n -- lifecycle 코드\n lifecycle_code VARCHAR(128) NOT NULL,\n\n -- lifecycle 이름\n lifecycle_name VARCHAR(256) NOT NULL,\n\n -- lifecycle 유형 코드\n lifecycle_type_code VARCHAR(64) NOT NULL DEFAULT 'default',\n\n -- 설명\n description TEXT,\n\n -- 표시 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (methodology_id)\n REFERENCES methodology_methodologies (methodology_id)\n ON DELETE CASCADE,\n\n UNIQUE (methodology_id, lifecycle_code),\n UNIQUE (methodology_id, sort_order)\n)"
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
"name": "methodology_phases",
|
|
1047
|
+
"type": "table",
|
|
1048
|
+
"comment": "lifecycle 내 큰 구간을 관리한다.",
|
|
1049
|
+
"columns": [
|
|
1050
|
+
{
|
|
1051
|
+
"name": "phase_id",
|
|
1052
|
+
"type": "CHAR(36)",
|
|
1053
|
+
"nullable": true
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
"name": "lifecycle_id",
|
|
1057
|
+
"type": "CHAR(36)",
|
|
1058
|
+
"nullable": false
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"name": "phase_code",
|
|
1062
|
+
"type": "VARCHAR(128)",
|
|
1063
|
+
"nullable": false
|
|
1064
|
+
},
|
|
1065
|
+
{
|
|
1066
|
+
"name": "phase_name",
|
|
1067
|
+
"type": "VARCHAR(256)",
|
|
1068
|
+
"nullable": false
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
"name": "phase_purpose",
|
|
1072
|
+
"type": "TEXT",
|
|
1073
|
+
"nullable": true
|
|
1074
|
+
},
|
|
1075
|
+
{
|
|
1076
|
+
"name": "sort_order",
|
|
1077
|
+
"type": "INTEGER",
|
|
1078
|
+
"nullable": false,
|
|
1079
|
+
"default": "0"
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
"name": "is_required",
|
|
1083
|
+
"type": "INTEGER",
|
|
1084
|
+
"nullable": false,
|
|
1085
|
+
"default": "1"
|
|
1086
|
+
},
|
|
1087
|
+
{
|
|
1088
|
+
"name": "is_active",
|
|
1089
|
+
"type": "INTEGER",
|
|
1090
|
+
"nullable": false,
|
|
1091
|
+
"default": "1"
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"name": "created_at",
|
|
1095
|
+
"type": "DATETIME",
|
|
1096
|
+
"nullable": false,
|
|
1097
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"name": "updated_at",
|
|
1101
|
+
"type": "DATETIME",
|
|
1102
|
+
"nullable": false,
|
|
1103
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
"name": "metadata_json",
|
|
1107
|
+
"type": "JSON",
|
|
1108
|
+
"nullable": true
|
|
1109
|
+
}
|
|
1110
|
+
],
|
|
1111
|
+
"indexes": [
|
|
1112
|
+
{
|
|
1113
|
+
"name": "idx_methodology_phases_lifecycle_order",
|
|
1114
|
+
"def": "CREATE INDEX idx_methodology_phases_lifecycle_order\n ON methodology_phases (lifecycle_id, sort_order)",
|
|
1115
|
+
"table": "methodology_phases",
|
|
1116
|
+
"columns": [
|
|
1117
|
+
"lifecycle_id",
|
|
1118
|
+
"sort_order"
|
|
1119
|
+
]
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
"name": "sqlite_autoindex_methodology_phases_3",
|
|
1123
|
+
"def": "UNIQUE (lifecycle_id, sort_order)",
|
|
1124
|
+
"table": "methodology_phases",
|
|
1125
|
+
"columns": [
|
|
1126
|
+
"lifecycle_id",
|
|
1127
|
+
"sort_order"
|
|
1128
|
+
]
|
|
1129
|
+
},
|
|
1130
|
+
{
|
|
1131
|
+
"name": "sqlite_autoindex_methodology_phases_2",
|
|
1132
|
+
"def": "UNIQUE (lifecycle_id, phase_code)",
|
|
1133
|
+
"table": "methodology_phases",
|
|
1134
|
+
"columns": [
|
|
1135
|
+
"lifecycle_id",
|
|
1136
|
+
"phase_code"
|
|
1137
|
+
]
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
"name": "sqlite_autoindex_methodology_phases_1",
|
|
1141
|
+
"def": "PRIMARY KEY (phase_id)",
|
|
1142
|
+
"table": "methodology_phases",
|
|
1143
|
+
"columns": [
|
|
1144
|
+
"phase_id"
|
|
1145
|
+
]
|
|
1146
|
+
}
|
|
1147
|
+
],
|
|
1148
|
+
"constraints": [
|
|
1149
|
+
{
|
|
1150
|
+
"name": "phase_id",
|
|
1151
|
+
"type": "PRIMARY KEY",
|
|
1152
|
+
"def": "PRIMARY KEY (phase_id)",
|
|
1153
|
+
"table": "methodology_phases",
|
|
1154
|
+
"columns": [
|
|
1155
|
+
"phase_id"
|
|
1156
|
+
]
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"name": "- (Foreign key ID: 0)",
|
|
1160
|
+
"type": "FOREIGN KEY",
|
|
1161
|
+
"def": "FOREIGN KEY (lifecycle_id) REFERENCES methodology_lifecycles (lifecycle_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1162
|
+
"table": "methodology_phases",
|
|
1163
|
+
"referenced_table": "methodology_lifecycles",
|
|
1164
|
+
"columns": [
|
|
1165
|
+
"lifecycle_id"
|
|
1166
|
+
],
|
|
1167
|
+
"referenced_columns": [
|
|
1168
|
+
"lifecycle_id"
|
|
1169
|
+
]
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"name": "sqlite_autoindex_methodology_phases_3",
|
|
1173
|
+
"type": "UNIQUE",
|
|
1174
|
+
"def": "UNIQUE (lifecycle_id, sort_order)",
|
|
1175
|
+
"table": "methodology_phases",
|
|
1176
|
+
"columns": [
|
|
1177
|
+
"lifecycle_id",
|
|
1178
|
+
"sort_order"
|
|
1179
|
+
]
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
"name": "sqlite_autoindex_methodology_phases_2",
|
|
1183
|
+
"type": "UNIQUE",
|
|
1184
|
+
"def": "UNIQUE (lifecycle_id, phase_code)",
|
|
1185
|
+
"table": "methodology_phases",
|
|
1186
|
+
"columns": [
|
|
1187
|
+
"lifecycle_id",
|
|
1188
|
+
"phase_code"
|
|
1189
|
+
]
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
"name": "sqlite_autoindex_methodology_phases_1",
|
|
1193
|
+
"type": "PRIMARY KEY",
|
|
1194
|
+
"def": "PRIMARY KEY (phase_id)",
|
|
1195
|
+
"table": "methodology_phases",
|
|
1196
|
+
"columns": [
|
|
1197
|
+
"phase_id"
|
|
1198
|
+
]
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
"name": "-",
|
|
1202
|
+
"type": "CHECK",
|
|
1203
|
+
"def": "CHECK (length(phase_id) = 36)",
|
|
1204
|
+
"table": "methodology_phases",
|
|
1205
|
+
"columns": [
|
|
1206
|
+
"phase_id"
|
|
1207
|
+
]
|
|
1208
|
+
},
|
|
1209
|
+
{
|
|
1210
|
+
"name": "-",
|
|
1211
|
+
"type": "CHECK",
|
|
1212
|
+
"def": "CHECK (length(lifecycle_id) = 36)",
|
|
1213
|
+
"table": "methodology_phases",
|
|
1214
|
+
"columns": [
|
|
1215
|
+
"lifecycle_id"
|
|
1216
|
+
]
|
|
1217
|
+
},
|
|
1218
|
+
{
|
|
1219
|
+
"name": "-",
|
|
1220
|
+
"type": "CHECK",
|
|
1221
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
1222
|
+
"table": "methodology_phases",
|
|
1223
|
+
"columns": [
|
|
1224
|
+
"is_required"
|
|
1225
|
+
]
|
|
1226
|
+
},
|
|
1227
|
+
{
|
|
1228
|
+
"name": "-",
|
|
1229
|
+
"type": "CHECK",
|
|
1230
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
1231
|
+
"table": "methodology_phases",
|
|
1232
|
+
"columns": [
|
|
1233
|
+
"is_active"
|
|
1234
|
+
]
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"name": "-",
|
|
1238
|
+
"type": "CHECK",
|
|
1239
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
1240
|
+
"table": "methodology_phases",
|
|
1241
|
+
"columns": [
|
|
1242
|
+
"metadata_json"
|
|
1243
|
+
]
|
|
1244
|
+
}
|
|
1245
|
+
],
|
|
1246
|
+
"def": "CREATE TABLE methodology_phases (\n -- phase 식별자\n phase_id CHAR(36) PRIMARY KEY\n CHECK (length(phase_id) = 36),\n\n -- 소속 lifecycle 식별자\n lifecycle_id CHAR(36) NOT NULL\n CHECK (length(lifecycle_id) = 36),\n\n -- phase 코드\n phase_code VARCHAR(128) NOT NULL,\n\n -- phase 이름\n phase_name VARCHAR(256) NOT NULL,\n\n -- phase 목적\n phase_purpose TEXT,\n\n -- 표시 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (lifecycle_id)\n REFERENCES methodology_lifecycles (lifecycle_id)\n ON DELETE CASCADE,\n\n UNIQUE (lifecycle_id, phase_code),\n UNIQUE (lifecycle_id, sort_order)\n)"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"name": "methodology_processes",
|
|
1250
|
+
"type": "table",
|
|
1251
|
+
"comment": "재사용 가능한 수행 절차를 관리한다.",
|
|
1252
|
+
"columns": [
|
|
1253
|
+
{
|
|
1254
|
+
"name": "process_id",
|
|
1255
|
+
"type": "CHAR(36)",
|
|
1256
|
+
"nullable": true
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"name": "methodology_id",
|
|
1260
|
+
"type": "CHAR(36)",
|
|
1261
|
+
"nullable": false
|
|
1262
|
+
},
|
|
1263
|
+
{
|
|
1264
|
+
"name": "process_code",
|
|
1265
|
+
"type": "VARCHAR(128)",
|
|
1266
|
+
"nullable": false
|
|
1267
|
+
},
|
|
1268
|
+
{
|
|
1269
|
+
"name": "process_name",
|
|
1270
|
+
"type": "VARCHAR(256)",
|
|
1271
|
+
"nullable": false
|
|
1272
|
+
},
|
|
1273
|
+
{
|
|
1274
|
+
"name": "process_purpose",
|
|
1275
|
+
"type": "TEXT",
|
|
1276
|
+
"nullable": true
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
"name": "process_type_code",
|
|
1280
|
+
"type": "VARCHAR(64)",
|
|
1281
|
+
"nullable": false,
|
|
1282
|
+
"default": "'default'"
|
|
1283
|
+
},
|
|
1284
|
+
{
|
|
1285
|
+
"name": "is_active",
|
|
1286
|
+
"type": "INTEGER",
|
|
1287
|
+
"nullable": false,
|
|
1288
|
+
"default": "1"
|
|
1289
|
+
},
|
|
1290
|
+
{
|
|
1291
|
+
"name": "created_at",
|
|
1292
|
+
"type": "DATETIME",
|
|
1293
|
+
"nullable": false,
|
|
1294
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
"name": "updated_at",
|
|
1298
|
+
"type": "DATETIME",
|
|
1299
|
+
"nullable": false,
|
|
1300
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"name": "metadata_json",
|
|
1304
|
+
"type": "JSON",
|
|
1305
|
+
"nullable": true
|
|
1306
|
+
}
|
|
1307
|
+
],
|
|
1308
|
+
"indexes": [
|
|
1309
|
+
{
|
|
1310
|
+
"name": "idx_methodology_processes_methodology",
|
|
1311
|
+
"def": "CREATE INDEX idx_methodology_processes_methodology\n ON methodology_processes (methodology_id)",
|
|
1312
|
+
"table": "methodology_processes",
|
|
1313
|
+
"columns": [
|
|
1314
|
+
"methodology_id"
|
|
1315
|
+
]
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
"name": "sqlite_autoindex_methodology_processes_2",
|
|
1319
|
+
"def": "UNIQUE (methodology_id, process_code)",
|
|
1320
|
+
"table": "methodology_processes",
|
|
1321
|
+
"columns": [
|
|
1322
|
+
"methodology_id",
|
|
1323
|
+
"process_code"
|
|
1324
|
+
]
|
|
1325
|
+
},
|
|
1326
|
+
{
|
|
1327
|
+
"name": "sqlite_autoindex_methodology_processes_1",
|
|
1328
|
+
"def": "PRIMARY KEY (process_id)",
|
|
1329
|
+
"table": "methodology_processes",
|
|
1330
|
+
"columns": [
|
|
1331
|
+
"process_id"
|
|
1332
|
+
]
|
|
1333
|
+
}
|
|
1334
|
+
],
|
|
1335
|
+
"constraints": [
|
|
1336
|
+
{
|
|
1337
|
+
"name": "process_id",
|
|
1338
|
+
"type": "PRIMARY KEY",
|
|
1339
|
+
"def": "PRIMARY KEY (process_id)",
|
|
1340
|
+
"table": "methodology_processes",
|
|
1341
|
+
"columns": [
|
|
1342
|
+
"process_id"
|
|
1343
|
+
]
|
|
1344
|
+
},
|
|
1345
|
+
{
|
|
1346
|
+
"name": "- (Foreign key ID: 0)",
|
|
1347
|
+
"type": "FOREIGN KEY",
|
|
1348
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1349
|
+
"table": "methodology_processes",
|
|
1350
|
+
"referenced_table": "methodology_methodologies",
|
|
1351
|
+
"columns": [
|
|
1352
|
+
"methodology_id"
|
|
1353
|
+
],
|
|
1354
|
+
"referenced_columns": [
|
|
1355
|
+
"methodology_id"
|
|
1356
|
+
]
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"name": "sqlite_autoindex_methodology_processes_2",
|
|
1360
|
+
"type": "UNIQUE",
|
|
1361
|
+
"def": "UNIQUE (methodology_id, process_code)",
|
|
1362
|
+
"table": "methodology_processes",
|
|
1363
|
+
"columns": [
|
|
1364
|
+
"methodology_id",
|
|
1365
|
+
"process_code"
|
|
1366
|
+
]
|
|
1367
|
+
},
|
|
1368
|
+
{
|
|
1369
|
+
"name": "sqlite_autoindex_methodology_processes_1",
|
|
1370
|
+
"type": "PRIMARY KEY",
|
|
1371
|
+
"def": "PRIMARY KEY (process_id)",
|
|
1372
|
+
"table": "methodology_processes",
|
|
1373
|
+
"columns": [
|
|
1374
|
+
"process_id"
|
|
1375
|
+
]
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
"name": "-",
|
|
1379
|
+
"type": "CHECK",
|
|
1380
|
+
"def": "CHECK (length(process_id) = 36)",
|
|
1381
|
+
"table": "methodology_processes",
|
|
1382
|
+
"columns": [
|
|
1383
|
+
"process_id"
|
|
1384
|
+
]
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
"name": "-",
|
|
1388
|
+
"type": "CHECK",
|
|
1389
|
+
"def": "CHECK (length(methodology_id) = 36)",
|
|
1390
|
+
"table": "methodology_processes",
|
|
1391
|
+
"columns": [
|
|
1392
|
+
"methodology_id"
|
|
1393
|
+
]
|
|
1394
|
+
},
|
|
1395
|
+
{
|
|
1396
|
+
"name": "-",
|
|
1397
|
+
"type": "CHECK",
|
|
1398
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
1399
|
+
"table": "methodology_processes",
|
|
1400
|
+
"columns": [
|
|
1401
|
+
"is_active"
|
|
1402
|
+
]
|
|
1403
|
+
},
|
|
1404
|
+
{
|
|
1405
|
+
"name": "-",
|
|
1406
|
+
"type": "CHECK",
|
|
1407
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
1408
|
+
"table": "methodology_processes",
|
|
1409
|
+
"columns": [
|
|
1410
|
+
"metadata_json"
|
|
1411
|
+
]
|
|
1412
|
+
}
|
|
1413
|
+
],
|
|
1414
|
+
"def": "CREATE TABLE methodology_processes (\n -- process 식별자\n process_id CHAR(36) PRIMARY KEY\n CHECK (length(process_id) = 36),\n\n -- 소속 방법론 식별자\n methodology_id CHAR(36) NOT NULL\n CHECK (length(methodology_id) = 36),\n\n -- process 코드\n process_code VARCHAR(128) NOT NULL,\n\n -- process 이름\n process_name VARCHAR(256) NOT NULL,\n\n -- process 목적\n process_purpose TEXT,\n\n -- process 유형 코드\n process_type_code VARCHAR(64) NOT NULL DEFAULT 'default',\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (methodology_id)\n REFERENCES methodology_methodologies (methodology_id)\n ON DELETE CASCADE,\n\n UNIQUE (methodology_id, process_code)\n)"
|
|
1415
|
+
},
|
|
1416
|
+
{
|
|
1417
|
+
"name": "methodology_phase_processes",
|
|
1418
|
+
"type": "table",
|
|
1419
|
+
"comment": "phase에서 어떤 process를 어떤 순서로 사용할지 관리한다.",
|
|
1420
|
+
"columns": [
|
|
1421
|
+
{
|
|
1422
|
+
"name": "phase_process_id",
|
|
1423
|
+
"type": "CHAR(36)",
|
|
1424
|
+
"nullable": true
|
|
1425
|
+
},
|
|
1426
|
+
{
|
|
1427
|
+
"name": "phase_id",
|
|
1428
|
+
"type": "CHAR(36)",
|
|
1429
|
+
"nullable": false
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"name": "process_id",
|
|
1433
|
+
"type": "CHAR(36)",
|
|
1434
|
+
"nullable": false
|
|
1435
|
+
},
|
|
1436
|
+
{
|
|
1437
|
+
"name": "sort_order",
|
|
1438
|
+
"type": "INTEGER",
|
|
1439
|
+
"nullable": false,
|
|
1440
|
+
"default": "0"
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
"name": "is_required",
|
|
1444
|
+
"type": "INTEGER",
|
|
1445
|
+
"nullable": false,
|
|
1446
|
+
"default": "1"
|
|
1447
|
+
},
|
|
1448
|
+
{
|
|
1449
|
+
"name": "tailoring_allowed",
|
|
1450
|
+
"type": "INTEGER",
|
|
1451
|
+
"nullable": false,
|
|
1452
|
+
"default": "0"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"name": "created_at",
|
|
1456
|
+
"type": "DATETIME",
|
|
1457
|
+
"nullable": false,
|
|
1458
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
"name": "updated_at",
|
|
1462
|
+
"type": "DATETIME",
|
|
1463
|
+
"nullable": false,
|
|
1464
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
"name": "metadata_json",
|
|
1468
|
+
"type": "JSON",
|
|
1469
|
+
"nullable": true
|
|
1470
|
+
}
|
|
1471
|
+
],
|
|
1472
|
+
"indexes": [
|
|
1473
|
+
{
|
|
1474
|
+
"name": "idx_methodology_phase_processes_process",
|
|
1475
|
+
"def": "CREATE INDEX idx_methodology_phase_processes_process\n ON methodology_phase_processes (process_id)",
|
|
1476
|
+
"table": "methodology_phase_processes",
|
|
1477
|
+
"columns": [
|
|
1478
|
+
"process_id"
|
|
1479
|
+
]
|
|
1480
|
+
},
|
|
1481
|
+
{
|
|
1482
|
+
"name": "sqlite_autoindex_methodology_phase_processes_3",
|
|
1483
|
+
"def": "UNIQUE (phase_id, sort_order)",
|
|
1484
|
+
"table": "methodology_phase_processes",
|
|
1485
|
+
"columns": [
|
|
1486
|
+
"phase_id",
|
|
1487
|
+
"sort_order"
|
|
1488
|
+
]
|
|
1489
|
+
},
|
|
1490
|
+
{
|
|
1491
|
+
"name": "sqlite_autoindex_methodology_phase_processes_2",
|
|
1492
|
+
"def": "UNIQUE (phase_id, process_id)",
|
|
1493
|
+
"table": "methodology_phase_processes",
|
|
1494
|
+
"columns": [
|
|
1495
|
+
"phase_id",
|
|
1496
|
+
"process_id"
|
|
1497
|
+
]
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"name": "sqlite_autoindex_methodology_phase_processes_1",
|
|
1501
|
+
"def": "PRIMARY KEY (phase_process_id)",
|
|
1502
|
+
"table": "methodology_phase_processes",
|
|
1503
|
+
"columns": [
|
|
1504
|
+
"phase_process_id"
|
|
1505
|
+
]
|
|
1506
|
+
}
|
|
1507
|
+
],
|
|
1508
|
+
"constraints": [
|
|
1509
|
+
{
|
|
1510
|
+
"name": "phase_process_id",
|
|
1511
|
+
"type": "PRIMARY KEY",
|
|
1512
|
+
"def": "PRIMARY KEY (phase_process_id)",
|
|
1513
|
+
"table": "methodology_phase_processes",
|
|
1514
|
+
"columns": [
|
|
1515
|
+
"phase_process_id"
|
|
1516
|
+
]
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
"name": "- (Foreign key ID: 0)",
|
|
1520
|
+
"type": "FOREIGN KEY",
|
|
1521
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1522
|
+
"table": "methodology_phase_processes",
|
|
1523
|
+
"referenced_table": "methodology_processes",
|
|
1524
|
+
"columns": [
|
|
1525
|
+
"process_id"
|
|
1526
|
+
],
|
|
1527
|
+
"referenced_columns": [
|
|
1528
|
+
"process_id"
|
|
1529
|
+
]
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
"name": "- (Foreign key ID: 1)",
|
|
1533
|
+
"type": "FOREIGN KEY",
|
|
1534
|
+
"def": "FOREIGN KEY (phase_id) REFERENCES methodology_phases (phase_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1535
|
+
"table": "methodology_phase_processes",
|
|
1536
|
+
"referenced_table": "methodology_phases",
|
|
1537
|
+
"columns": [
|
|
1538
|
+
"phase_id"
|
|
1539
|
+
],
|
|
1540
|
+
"referenced_columns": [
|
|
1541
|
+
"phase_id"
|
|
1542
|
+
]
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"name": "sqlite_autoindex_methodology_phase_processes_3",
|
|
1546
|
+
"type": "UNIQUE",
|
|
1547
|
+
"def": "UNIQUE (phase_id, sort_order)",
|
|
1548
|
+
"table": "methodology_phase_processes",
|
|
1549
|
+
"columns": [
|
|
1550
|
+
"phase_id",
|
|
1551
|
+
"sort_order"
|
|
1552
|
+
]
|
|
1553
|
+
},
|
|
1554
|
+
{
|
|
1555
|
+
"name": "sqlite_autoindex_methodology_phase_processes_2",
|
|
1556
|
+
"type": "UNIQUE",
|
|
1557
|
+
"def": "UNIQUE (phase_id, process_id)",
|
|
1558
|
+
"table": "methodology_phase_processes",
|
|
1559
|
+
"columns": [
|
|
1560
|
+
"phase_id",
|
|
1561
|
+
"process_id"
|
|
1562
|
+
]
|
|
1563
|
+
},
|
|
1564
|
+
{
|
|
1565
|
+
"name": "sqlite_autoindex_methodology_phase_processes_1",
|
|
1566
|
+
"type": "PRIMARY KEY",
|
|
1567
|
+
"def": "PRIMARY KEY (phase_process_id)",
|
|
1568
|
+
"table": "methodology_phase_processes",
|
|
1569
|
+
"columns": [
|
|
1570
|
+
"phase_process_id"
|
|
1571
|
+
]
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"name": "-",
|
|
1575
|
+
"type": "CHECK",
|
|
1576
|
+
"def": "CHECK (length(phase_process_id) = 36)",
|
|
1577
|
+
"table": "methodology_phase_processes",
|
|
1578
|
+
"columns": [
|
|
1579
|
+
"phase_process_id",
|
|
1580
|
+
"process_id"
|
|
1581
|
+
]
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"name": "-",
|
|
1585
|
+
"type": "CHECK",
|
|
1586
|
+
"def": "CHECK (length(phase_id) = 36)",
|
|
1587
|
+
"table": "methodology_phase_processes",
|
|
1588
|
+
"columns": [
|
|
1589
|
+
"phase_id"
|
|
1590
|
+
]
|
|
1591
|
+
},
|
|
1592
|
+
{
|
|
1593
|
+
"name": "-",
|
|
1594
|
+
"type": "CHECK",
|
|
1595
|
+
"def": "CHECK (length(process_id) = 36)",
|
|
1596
|
+
"table": "methodology_phase_processes",
|
|
1597
|
+
"columns": [
|
|
1598
|
+
"process_id"
|
|
1599
|
+
]
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"name": "-",
|
|
1603
|
+
"type": "CHECK",
|
|
1604
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
1605
|
+
"table": "methodology_phase_processes",
|
|
1606
|
+
"columns": [
|
|
1607
|
+
"is_required"
|
|
1608
|
+
]
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"name": "-",
|
|
1612
|
+
"type": "CHECK",
|
|
1613
|
+
"def": "CHECK (tailoring_allowed IN (0, 1))",
|
|
1614
|
+
"table": "methodology_phase_processes",
|
|
1615
|
+
"columns": [
|
|
1616
|
+
"tailoring_allowed"
|
|
1617
|
+
]
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"name": "-",
|
|
1621
|
+
"type": "CHECK",
|
|
1622
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
1623
|
+
"table": "methodology_phase_processes",
|
|
1624
|
+
"columns": [
|
|
1625
|
+
"metadata_json"
|
|
1626
|
+
]
|
|
1627
|
+
}
|
|
1628
|
+
],
|
|
1629
|
+
"def": "CREATE TABLE methodology_phase_processes (\n -- phase process 배치 식별자\n phase_process_id CHAR(36) PRIMARY KEY\n CHECK (length(phase_process_id) = 36),\n\n -- 대상 phase 식별자\n phase_id CHAR(36) NOT NULL\n CHECK (length(phase_id) = 36),\n\n -- 배치할 process 식별자\n process_id CHAR(36) NOT NULL\n CHECK (length(process_id) = 36),\n\n -- phase 내 process 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 필수 수행 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- tailoring 허용 여부\n tailoring_allowed INTEGER NOT NULL DEFAULT 0\n CHECK (tailoring_allowed IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (phase_id)\n REFERENCES methodology_phases (phase_id)\n ON DELETE CASCADE,\n\n FOREIGN KEY (process_id)\n REFERENCES methodology_processes (process_id)\n ON DELETE CASCADE,\n\n UNIQUE (phase_id, process_id),\n UNIQUE (phase_id, sort_order)\n)"
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"name": "methodology_activities",
|
|
1633
|
+
"type": "table",
|
|
1634
|
+
"comment": "process 내부의 기본 수행 활동을 관리한다.",
|
|
1635
|
+
"columns": [
|
|
1636
|
+
{
|
|
1637
|
+
"name": "activity_id",
|
|
1638
|
+
"type": "CHAR(36)",
|
|
1639
|
+
"nullable": true
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
"name": "process_id",
|
|
1643
|
+
"type": "CHAR(36)",
|
|
1644
|
+
"nullable": false
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"name": "activity_code",
|
|
1648
|
+
"type": "VARCHAR(128)",
|
|
1649
|
+
"nullable": false
|
|
1650
|
+
},
|
|
1651
|
+
{
|
|
1652
|
+
"name": "activity_name",
|
|
1653
|
+
"type": "VARCHAR(256)",
|
|
1654
|
+
"nullable": false
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
"name": "activity_purpose",
|
|
1658
|
+
"type": "TEXT",
|
|
1659
|
+
"nullable": true
|
|
1660
|
+
},
|
|
1661
|
+
{
|
|
1662
|
+
"name": "activity_type_code",
|
|
1663
|
+
"type": "VARCHAR(64)",
|
|
1664
|
+
"nullable": false,
|
|
1665
|
+
"default": "'default'"
|
|
1666
|
+
},
|
|
1667
|
+
{
|
|
1668
|
+
"name": "responsible_role_code",
|
|
1669
|
+
"type": "VARCHAR(64)",
|
|
1670
|
+
"nullable": true
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
"name": "sort_order",
|
|
1674
|
+
"type": "INTEGER",
|
|
1675
|
+
"nullable": false,
|
|
1676
|
+
"default": "0"
|
|
1677
|
+
},
|
|
1678
|
+
{
|
|
1679
|
+
"name": "is_required",
|
|
1680
|
+
"type": "INTEGER",
|
|
1681
|
+
"nullable": false,
|
|
1682
|
+
"default": "1"
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
"name": "tailoring_allowed",
|
|
1686
|
+
"type": "INTEGER",
|
|
1687
|
+
"nullable": false,
|
|
1688
|
+
"default": "0"
|
|
1689
|
+
},
|
|
1690
|
+
{
|
|
1691
|
+
"name": "is_active",
|
|
1692
|
+
"type": "INTEGER",
|
|
1693
|
+
"nullable": false,
|
|
1694
|
+
"default": "1"
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
"name": "created_at",
|
|
1698
|
+
"type": "DATETIME",
|
|
1699
|
+
"nullable": false,
|
|
1700
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1701
|
+
},
|
|
1702
|
+
{
|
|
1703
|
+
"name": "updated_at",
|
|
1704
|
+
"type": "DATETIME",
|
|
1705
|
+
"nullable": false,
|
|
1706
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1707
|
+
},
|
|
1708
|
+
{
|
|
1709
|
+
"name": "metadata_json",
|
|
1710
|
+
"type": "JSON",
|
|
1711
|
+
"nullable": true
|
|
1712
|
+
}
|
|
1713
|
+
],
|
|
1714
|
+
"indexes": [
|
|
1715
|
+
{
|
|
1716
|
+
"name": "idx_methodology_activities_process_order",
|
|
1717
|
+
"def": "CREATE INDEX idx_methodology_activities_process_order\n ON methodology_activities (process_id, sort_order)",
|
|
1718
|
+
"table": "methodology_activities",
|
|
1719
|
+
"columns": [
|
|
1720
|
+
"process_id",
|
|
1721
|
+
"sort_order"
|
|
1722
|
+
]
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
"name": "sqlite_autoindex_methodology_activities_3",
|
|
1726
|
+
"def": "UNIQUE (process_id, sort_order)",
|
|
1727
|
+
"table": "methodology_activities",
|
|
1728
|
+
"columns": [
|
|
1729
|
+
"process_id",
|
|
1730
|
+
"sort_order"
|
|
1731
|
+
]
|
|
1732
|
+
},
|
|
1733
|
+
{
|
|
1734
|
+
"name": "sqlite_autoindex_methodology_activities_2",
|
|
1735
|
+
"def": "UNIQUE (process_id, activity_code)",
|
|
1736
|
+
"table": "methodology_activities",
|
|
1737
|
+
"columns": [
|
|
1738
|
+
"process_id",
|
|
1739
|
+
"activity_code"
|
|
1740
|
+
]
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"name": "sqlite_autoindex_methodology_activities_1",
|
|
1744
|
+
"def": "PRIMARY KEY (activity_id)",
|
|
1745
|
+
"table": "methodology_activities",
|
|
1746
|
+
"columns": [
|
|
1747
|
+
"activity_id"
|
|
1748
|
+
]
|
|
1749
|
+
}
|
|
1750
|
+
],
|
|
1751
|
+
"constraints": [
|
|
1752
|
+
{
|
|
1753
|
+
"name": "activity_id",
|
|
1754
|
+
"type": "PRIMARY KEY",
|
|
1755
|
+
"def": "PRIMARY KEY (activity_id)",
|
|
1756
|
+
"table": "methodology_activities",
|
|
1757
|
+
"columns": [
|
|
1758
|
+
"activity_id"
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
"name": "- (Foreign key ID: 0)",
|
|
1763
|
+
"type": "FOREIGN KEY",
|
|
1764
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1765
|
+
"table": "methodology_activities",
|
|
1766
|
+
"referenced_table": "methodology_processes",
|
|
1767
|
+
"columns": [
|
|
1768
|
+
"process_id"
|
|
1769
|
+
],
|
|
1770
|
+
"referenced_columns": [
|
|
1771
|
+
"process_id"
|
|
1772
|
+
]
|
|
1773
|
+
},
|
|
1774
|
+
{
|
|
1775
|
+
"name": "sqlite_autoindex_methodology_activities_3",
|
|
1776
|
+
"type": "UNIQUE",
|
|
1777
|
+
"def": "UNIQUE (process_id, sort_order)",
|
|
1778
|
+
"table": "methodology_activities",
|
|
1779
|
+
"columns": [
|
|
1780
|
+
"process_id",
|
|
1781
|
+
"sort_order"
|
|
1782
|
+
]
|
|
1783
|
+
},
|
|
1784
|
+
{
|
|
1785
|
+
"name": "sqlite_autoindex_methodology_activities_2",
|
|
1786
|
+
"type": "UNIQUE",
|
|
1787
|
+
"def": "UNIQUE (process_id, activity_code)",
|
|
1788
|
+
"table": "methodology_activities",
|
|
1789
|
+
"columns": [
|
|
1790
|
+
"process_id",
|
|
1791
|
+
"activity_code"
|
|
1792
|
+
]
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
"name": "sqlite_autoindex_methodology_activities_1",
|
|
1796
|
+
"type": "PRIMARY KEY",
|
|
1797
|
+
"def": "PRIMARY KEY (activity_id)",
|
|
1798
|
+
"table": "methodology_activities",
|
|
1799
|
+
"columns": [
|
|
1800
|
+
"activity_id"
|
|
1801
|
+
]
|
|
1802
|
+
},
|
|
1803
|
+
{
|
|
1804
|
+
"name": "-",
|
|
1805
|
+
"type": "CHECK",
|
|
1806
|
+
"def": "CHECK (length(activity_id) = 36)",
|
|
1807
|
+
"table": "methodology_activities",
|
|
1808
|
+
"columns": [
|
|
1809
|
+
"activity_id"
|
|
1810
|
+
]
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"name": "-",
|
|
1814
|
+
"type": "CHECK",
|
|
1815
|
+
"def": "CHECK (length(process_id) = 36)",
|
|
1816
|
+
"table": "methodology_activities",
|
|
1817
|
+
"columns": [
|
|
1818
|
+
"process_id"
|
|
1819
|
+
]
|
|
1820
|
+
},
|
|
1821
|
+
{
|
|
1822
|
+
"name": "-",
|
|
1823
|
+
"type": "CHECK",
|
|
1824
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
1825
|
+
"table": "methodology_activities",
|
|
1826
|
+
"columns": [
|
|
1827
|
+
"is_required"
|
|
1828
|
+
]
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"name": "-",
|
|
1832
|
+
"type": "CHECK",
|
|
1833
|
+
"def": "CHECK (tailoring_allowed IN (0, 1))",
|
|
1834
|
+
"table": "methodology_activities",
|
|
1835
|
+
"columns": [
|
|
1836
|
+
"tailoring_allowed"
|
|
1837
|
+
]
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"name": "-",
|
|
1841
|
+
"type": "CHECK",
|
|
1842
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
1843
|
+
"table": "methodology_activities",
|
|
1844
|
+
"columns": [
|
|
1845
|
+
"is_active"
|
|
1846
|
+
]
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
"name": "-",
|
|
1850
|
+
"type": "CHECK",
|
|
1851
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
1852
|
+
"table": "methodology_activities",
|
|
1853
|
+
"columns": [
|
|
1854
|
+
"metadata_json"
|
|
1855
|
+
]
|
|
1856
|
+
}
|
|
1857
|
+
],
|
|
1858
|
+
"def": "CREATE TABLE methodology_activities (\n -- activity 식별자\n activity_id CHAR(36) PRIMARY KEY\n CHECK (length(activity_id) = 36),\n\n -- 소속 process 식별자\n process_id CHAR(36) NOT NULL\n CHECK (length(process_id) = 36),\n\n -- activity 코드\n activity_code VARCHAR(128) NOT NULL,\n\n -- activity 이름\n activity_name VARCHAR(256) NOT NULL,\n\n -- activity 목적\n activity_purpose TEXT,\n\n -- activity 유형 코드\n activity_type_code VARCHAR(64) NOT NULL DEFAULT 'default',\n\n -- 책임 role 코드\n responsible_role_code VARCHAR(64),\n\n -- process 내 activity 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 필수 수행 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- tailoring 허용 여부\n tailoring_allowed INTEGER NOT NULL DEFAULT 0\n CHECK (tailoring_allowed IN (0, 1)),\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (process_id)\n REFERENCES methodology_processes (process_id)\n ON DELETE CASCADE,\n\n UNIQUE (process_id, activity_code),\n UNIQUE (process_id, sort_order)\n)"
|
|
1859
|
+
},
|
|
1860
|
+
{
|
|
1861
|
+
"name": "methodology_steps",
|
|
1862
|
+
"type": "table",
|
|
1863
|
+
"comment": "activity 하위 순차 절차를 관리한다.",
|
|
1864
|
+
"columns": [
|
|
1865
|
+
{
|
|
1866
|
+
"name": "step_id",
|
|
1867
|
+
"type": "CHAR(36)",
|
|
1868
|
+
"nullable": true
|
|
1869
|
+
},
|
|
1870
|
+
{
|
|
1871
|
+
"name": "activity_id",
|
|
1872
|
+
"type": "CHAR(36)",
|
|
1873
|
+
"nullable": false
|
|
1874
|
+
},
|
|
1875
|
+
{
|
|
1876
|
+
"name": "step_code",
|
|
1877
|
+
"type": "VARCHAR(128)",
|
|
1878
|
+
"nullable": false
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"name": "step_name",
|
|
1882
|
+
"type": "VARCHAR(256)",
|
|
1883
|
+
"nullable": false
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
"name": "step_instruction",
|
|
1887
|
+
"type": "TEXT",
|
|
1888
|
+
"nullable": true
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
"name": "step_type_code",
|
|
1892
|
+
"type": "VARCHAR(64)",
|
|
1893
|
+
"nullable": false,
|
|
1894
|
+
"default": "'default'"
|
|
1895
|
+
},
|
|
1896
|
+
{
|
|
1897
|
+
"name": "is_required",
|
|
1898
|
+
"type": "INTEGER",
|
|
1899
|
+
"nullable": false,
|
|
1900
|
+
"default": "1"
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
"name": "sort_order",
|
|
1904
|
+
"type": "INTEGER",
|
|
1905
|
+
"nullable": false,
|
|
1906
|
+
"default": "0"
|
|
1907
|
+
},
|
|
1908
|
+
{
|
|
1909
|
+
"name": "created_at",
|
|
1910
|
+
"type": "DATETIME",
|
|
1911
|
+
"nullable": false,
|
|
1912
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1913
|
+
},
|
|
1914
|
+
{
|
|
1915
|
+
"name": "updated_at",
|
|
1916
|
+
"type": "DATETIME",
|
|
1917
|
+
"nullable": false,
|
|
1918
|
+
"default": "CURRENT_TIMESTAMP"
|
|
1919
|
+
},
|
|
1920
|
+
{
|
|
1921
|
+
"name": "metadata_json",
|
|
1922
|
+
"type": "JSON",
|
|
1923
|
+
"nullable": true
|
|
1924
|
+
}
|
|
1925
|
+
],
|
|
1926
|
+
"indexes": [
|
|
1927
|
+
{
|
|
1928
|
+
"name": "idx_methodology_steps_activity_order",
|
|
1929
|
+
"def": "CREATE INDEX idx_methodology_steps_activity_order\n ON methodology_steps (activity_id, sort_order)",
|
|
1930
|
+
"table": "methodology_steps",
|
|
1931
|
+
"columns": [
|
|
1932
|
+
"activity_id",
|
|
1933
|
+
"sort_order"
|
|
1934
|
+
]
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"name": "sqlite_autoindex_methodology_steps_3",
|
|
1938
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
1939
|
+
"table": "methodology_steps",
|
|
1940
|
+
"columns": [
|
|
1941
|
+
"activity_id",
|
|
1942
|
+
"sort_order"
|
|
1943
|
+
]
|
|
1944
|
+
},
|
|
1945
|
+
{
|
|
1946
|
+
"name": "sqlite_autoindex_methodology_steps_2",
|
|
1947
|
+
"def": "UNIQUE (activity_id, step_code)",
|
|
1948
|
+
"table": "methodology_steps",
|
|
1949
|
+
"columns": [
|
|
1950
|
+
"activity_id",
|
|
1951
|
+
"step_code"
|
|
1952
|
+
]
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"name": "sqlite_autoindex_methodology_steps_1",
|
|
1956
|
+
"def": "PRIMARY KEY (step_id)",
|
|
1957
|
+
"table": "methodology_steps",
|
|
1958
|
+
"columns": [
|
|
1959
|
+
"step_id"
|
|
1960
|
+
]
|
|
1961
|
+
}
|
|
1962
|
+
],
|
|
1963
|
+
"constraints": [
|
|
1964
|
+
{
|
|
1965
|
+
"name": "step_id",
|
|
1966
|
+
"type": "PRIMARY KEY",
|
|
1967
|
+
"def": "PRIMARY KEY (step_id)",
|
|
1968
|
+
"table": "methodology_steps",
|
|
1969
|
+
"columns": [
|
|
1970
|
+
"step_id"
|
|
1971
|
+
]
|
|
1972
|
+
},
|
|
1973
|
+
{
|
|
1974
|
+
"name": "- (Foreign key ID: 0)",
|
|
1975
|
+
"type": "FOREIGN KEY",
|
|
1976
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
1977
|
+
"table": "methodology_steps",
|
|
1978
|
+
"referenced_table": "methodology_activities",
|
|
1979
|
+
"columns": [
|
|
1980
|
+
"activity_id"
|
|
1981
|
+
],
|
|
1982
|
+
"referenced_columns": [
|
|
1983
|
+
"activity_id"
|
|
1984
|
+
]
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
"name": "sqlite_autoindex_methodology_steps_3",
|
|
1988
|
+
"type": "UNIQUE",
|
|
1989
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
1990
|
+
"table": "methodology_steps",
|
|
1991
|
+
"columns": [
|
|
1992
|
+
"activity_id",
|
|
1993
|
+
"sort_order"
|
|
1994
|
+
]
|
|
1995
|
+
},
|
|
1996
|
+
{
|
|
1997
|
+
"name": "sqlite_autoindex_methodology_steps_2",
|
|
1998
|
+
"type": "UNIQUE",
|
|
1999
|
+
"def": "UNIQUE (activity_id, step_code)",
|
|
2000
|
+
"table": "methodology_steps",
|
|
2001
|
+
"columns": [
|
|
2002
|
+
"activity_id",
|
|
2003
|
+
"step_code"
|
|
2004
|
+
]
|
|
2005
|
+
},
|
|
2006
|
+
{
|
|
2007
|
+
"name": "sqlite_autoindex_methodology_steps_1",
|
|
2008
|
+
"type": "PRIMARY KEY",
|
|
2009
|
+
"def": "PRIMARY KEY (step_id)",
|
|
2010
|
+
"table": "methodology_steps",
|
|
2011
|
+
"columns": [
|
|
2012
|
+
"step_id"
|
|
2013
|
+
]
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"name": "-",
|
|
2017
|
+
"type": "CHECK",
|
|
2018
|
+
"def": "CHECK (length(step_id) = 36)",
|
|
2019
|
+
"table": "methodology_steps",
|
|
2020
|
+
"columns": [
|
|
2021
|
+
"step_id"
|
|
2022
|
+
]
|
|
2023
|
+
},
|
|
2024
|
+
{
|
|
2025
|
+
"name": "-",
|
|
2026
|
+
"type": "CHECK",
|
|
2027
|
+
"def": "CHECK (length(activity_id) = 36)",
|
|
2028
|
+
"table": "methodology_steps",
|
|
2029
|
+
"columns": [
|
|
2030
|
+
"activity_id"
|
|
2031
|
+
]
|
|
2032
|
+
},
|
|
2033
|
+
{
|
|
2034
|
+
"name": "-",
|
|
2035
|
+
"type": "CHECK",
|
|
2036
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
2037
|
+
"table": "methodology_steps",
|
|
2038
|
+
"columns": [
|
|
2039
|
+
"is_required"
|
|
2040
|
+
]
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
"name": "-",
|
|
2044
|
+
"type": "CHECK",
|
|
2045
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
2046
|
+
"table": "methodology_steps",
|
|
2047
|
+
"columns": [
|
|
2048
|
+
"metadata_json"
|
|
2049
|
+
]
|
|
2050
|
+
}
|
|
2051
|
+
],
|
|
2052
|
+
"def": "CREATE TABLE methodology_steps (\n -- step 식별자\n step_id CHAR(36) PRIMARY KEY\n CHECK (length(step_id) = 36),\n\n -- 소속 activity 식별자\n activity_id CHAR(36) NOT NULL\n CHECK (length(activity_id) = 36),\n\n -- step 코드\n step_code VARCHAR(128) NOT NULL,\n\n -- step 이름\n step_name VARCHAR(256) NOT NULL,\n\n -- 수행 절차 설명\n step_instruction TEXT,\n\n -- step 유형 코드\n step_type_code VARCHAR(64) NOT NULL DEFAULT 'default',\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- activity 내 step 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (activity_id)\n REFERENCES methodology_activities (activity_id)\n ON DELETE CASCADE,\n\n UNIQUE (activity_id, step_code),\n UNIQUE (activity_id, sort_order)\n)"
|
|
2053
|
+
},
|
|
2054
|
+
{
|
|
2055
|
+
"name": "methodology_stages",
|
|
2056
|
+
"type": "table",
|
|
2057
|
+
"comment": "process 내부 activity grouping, gate, 기준선, 전환 구간을 관리한다.",
|
|
2058
|
+
"columns": [
|
|
2059
|
+
{
|
|
2060
|
+
"name": "stage_id",
|
|
2061
|
+
"type": "CHAR(36)",
|
|
2062
|
+
"nullable": true
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"name": "process_id",
|
|
2066
|
+
"type": "CHAR(36)",
|
|
2067
|
+
"nullable": false
|
|
2068
|
+
},
|
|
2069
|
+
{
|
|
2070
|
+
"name": "stage_code",
|
|
2071
|
+
"type": "VARCHAR(128)",
|
|
2072
|
+
"nullable": false
|
|
2073
|
+
},
|
|
2074
|
+
{
|
|
2075
|
+
"name": "stage_name",
|
|
2076
|
+
"type": "VARCHAR(256)",
|
|
2077
|
+
"nullable": false
|
|
2078
|
+
},
|
|
2079
|
+
{
|
|
2080
|
+
"name": "stage_objective",
|
|
2081
|
+
"type": "TEXT",
|
|
2082
|
+
"nullable": true
|
|
2083
|
+
},
|
|
2084
|
+
{
|
|
2085
|
+
"name": "stage_type_code",
|
|
2086
|
+
"type": "VARCHAR(64)",
|
|
2087
|
+
"nullable": false,
|
|
2088
|
+
"default": "'default'"
|
|
2089
|
+
},
|
|
2090
|
+
{
|
|
2091
|
+
"name": "sort_order",
|
|
2092
|
+
"type": "INTEGER",
|
|
2093
|
+
"nullable": false,
|
|
2094
|
+
"default": "0"
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
"name": "is_required",
|
|
2098
|
+
"type": "INTEGER",
|
|
2099
|
+
"nullable": false,
|
|
2100
|
+
"default": "1"
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
"name": "tailoring_allowed",
|
|
2104
|
+
"type": "INTEGER",
|
|
2105
|
+
"nullable": false,
|
|
2106
|
+
"default": "0"
|
|
2107
|
+
},
|
|
2108
|
+
{
|
|
2109
|
+
"name": "is_active",
|
|
2110
|
+
"type": "INTEGER",
|
|
2111
|
+
"nullable": false,
|
|
2112
|
+
"default": "1"
|
|
2113
|
+
},
|
|
2114
|
+
{
|
|
2115
|
+
"name": "created_at",
|
|
2116
|
+
"type": "DATETIME",
|
|
2117
|
+
"nullable": false,
|
|
2118
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2119
|
+
},
|
|
2120
|
+
{
|
|
2121
|
+
"name": "updated_at",
|
|
2122
|
+
"type": "DATETIME",
|
|
2123
|
+
"nullable": false,
|
|
2124
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
"name": "metadata_json",
|
|
2128
|
+
"type": "JSON",
|
|
2129
|
+
"nullable": true
|
|
2130
|
+
}
|
|
2131
|
+
],
|
|
2132
|
+
"indexes": [
|
|
2133
|
+
{
|
|
2134
|
+
"name": "idx_methodology_stages_process_order",
|
|
2135
|
+
"def": "CREATE INDEX idx_methodology_stages_process_order\n ON methodology_stages (process_id, sort_order)",
|
|
2136
|
+
"table": "methodology_stages",
|
|
2137
|
+
"columns": [
|
|
2138
|
+
"process_id",
|
|
2139
|
+
"sort_order"
|
|
2140
|
+
]
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
"name": "sqlite_autoindex_methodology_stages_3",
|
|
2144
|
+
"def": "UNIQUE (process_id, sort_order)",
|
|
2145
|
+
"table": "methodology_stages",
|
|
2146
|
+
"columns": [
|
|
2147
|
+
"process_id",
|
|
2148
|
+
"sort_order"
|
|
2149
|
+
]
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
"name": "sqlite_autoindex_methodology_stages_2",
|
|
2153
|
+
"def": "UNIQUE (process_id, stage_code)",
|
|
2154
|
+
"table": "methodology_stages",
|
|
2155
|
+
"columns": [
|
|
2156
|
+
"process_id",
|
|
2157
|
+
"stage_code"
|
|
2158
|
+
]
|
|
2159
|
+
},
|
|
2160
|
+
{
|
|
2161
|
+
"name": "sqlite_autoindex_methodology_stages_1",
|
|
2162
|
+
"def": "PRIMARY KEY (stage_id)",
|
|
2163
|
+
"table": "methodology_stages",
|
|
2164
|
+
"columns": [
|
|
2165
|
+
"stage_id"
|
|
2166
|
+
]
|
|
2167
|
+
}
|
|
2168
|
+
],
|
|
2169
|
+
"constraints": [
|
|
2170
|
+
{
|
|
2171
|
+
"name": "stage_id",
|
|
2172
|
+
"type": "PRIMARY KEY",
|
|
2173
|
+
"def": "PRIMARY KEY (stage_id)",
|
|
2174
|
+
"table": "methodology_stages",
|
|
2175
|
+
"columns": [
|
|
2176
|
+
"stage_id"
|
|
2177
|
+
]
|
|
2178
|
+
},
|
|
2179
|
+
{
|
|
2180
|
+
"name": "- (Foreign key ID: 0)",
|
|
2181
|
+
"type": "FOREIGN KEY",
|
|
2182
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
2183
|
+
"table": "methodology_stages",
|
|
2184
|
+
"referenced_table": "methodology_processes",
|
|
2185
|
+
"columns": [
|
|
2186
|
+
"process_id"
|
|
2187
|
+
],
|
|
2188
|
+
"referenced_columns": [
|
|
2189
|
+
"process_id"
|
|
2190
|
+
]
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
"name": "sqlite_autoindex_methodology_stages_3",
|
|
2194
|
+
"type": "UNIQUE",
|
|
2195
|
+
"def": "UNIQUE (process_id, sort_order)",
|
|
2196
|
+
"table": "methodology_stages",
|
|
2197
|
+
"columns": [
|
|
2198
|
+
"process_id",
|
|
2199
|
+
"sort_order"
|
|
2200
|
+
]
|
|
2201
|
+
},
|
|
2202
|
+
{
|
|
2203
|
+
"name": "sqlite_autoindex_methodology_stages_2",
|
|
2204
|
+
"type": "UNIQUE",
|
|
2205
|
+
"def": "UNIQUE (process_id, stage_code)",
|
|
2206
|
+
"table": "methodology_stages",
|
|
2207
|
+
"columns": [
|
|
2208
|
+
"process_id",
|
|
2209
|
+
"stage_code"
|
|
2210
|
+
]
|
|
2211
|
+
},
|
|
2212
|
+
{
|
|
2213
|
+
"name": "sqlite_autoindex_methodology_stages_1",
|
|
2214
|
+
"type": "PRIMARY KEY",
|
|
2215
|
+
"def": "PRIMARY KEY (stage_id)",
|
|
2216
|
+
"table": "methodology_stages",
|
|
2217
|
+
"columns": [
|
|
2218
|
+
"stage_id"
|
|
2219
|
+
]
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
"name": "-",
|
|
2223
|
+
"type": "CHECK",
|
|
2224
|
+
"def": "CHECK (length(stage_id) = 36)",
|
|
2225
|
+
"table": "methodology_stages",
|
|
2226
|
+
"columns": [
|
|
2227
|
+
"stage_id"
|
|
2228
|
+
]
|
|
2229
|
+
},
|
|
2230
|
+
{
|
|
2231
|
+
"name": "-",
|
|
2232
|
+
"type": "CHECK",
|
|
2233
|
+
"def": "CHECK (length(process_id) = 36)",
|
|
2234
|
+
"table": "methodology_stages",
|
|
2235
|
+
"columns": [
|
|
2236
|
+
"process_id"
|
|
2237
|
+
]
|
|
2238
|
+
},
|
|
2239
|
+
{
|
|
2240
|
+
"name": "-",
|
|
2241
|
+
"type": "CHECK",
|
|
2242
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
2243
|
+
"table": "methodology_stages",
|
|
2244
|
+
"columns": [
|
|
2245
|
+
"is_required"
|
|
2246
|
+
]
|
|
2247
|
+
},
|
|
2248
|
+
{
|
|
2249
|
+
"name": "-",
|
|
2250
|
+
"type": "CHECK",
|
|
2251
|
+
"def": "CHECK (tailoring_allowed IN (0, 1))",
|
|
2252
|
+
"table": "methodology_stages",
|
|
2253
|
+
"columns": [
|
|
2254
|
+
"tailoring_allowed"
|
|
2255
|
+
]
|
|
2256
|
+
},
|
|
2257
|
+
{
|
|
2258
|
+
"name": "-",
|
|
2259
|
+
"type": "CHECK",
|
|
2260
|
+
"def": "CHECK (is_active IN (0, 1))",
|
|
2261
|
+
"table": "methodology_stages",
|
|
2262
|
+
"columns": [
|
|
2263
|
+
"is_active"
|
|
2264
|
+
]
|
|
2265
|
+
},
|
|
2266
|
+
{
|
|
2267
|
+
"name": "-",
|
|
2268
|
+
"type": "CHECK",
|
|
2269
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
2270
|
+
"table": "methodology_stages",
|
|
2271
|
+
"columns": [
|
|
2272
|
+
"metadata_json"
|
|
2273
|
+
]
|
|
2274
|
+
}
|
|
2275
|
+
],
|
|
2276
|
+
"def": "CREATE TABLE methodology_stages (\n -- stage 식별자\n stage_id CHAR(36) PRIMARY KEY\n CHECK (length(stage_id) = 36),\n\n -- 소속 process 식별자\n process_id CHAR(36) NOT NULL\n CHECK (length(process_id) = 36),\n\n -- stage 코드\n stage_code VARCHAR(128) NOT NULL,\n\n -- stage 이름\n stage_name VARCHAR(256) NOT NULL,\n\n -- stage 목표\n stage_objective TEXT,\n\n -- stage 유형 코드\n stage_type_code VARCHAR(64) NOT NULL DEFAULT 'default',\n\n -- process 내 stage 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- tailoring 허용 여부\n tailoring_allowed INTEGER NOT NULL DEFAULT 0\n CHECK (tailoring_allowed IN (0, 1)),\n\n -- 활성 여부\n is_active INTEGER NOT NULL DEFAULT 1\n CHECK (is_active IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (process_id)\n REFERENCES methodology_processes (process_id)\n ON DELETE CASCADE,\n\n UNIQUE (process_id, stage_code),\n UNIQUE (process_id, sort_order)\n)"
|
|
2277
|
+
},
|
|
2278
|
+
{
|
|
2279
|
+
"name": "methodology_stage_activities",
|
|
2280
|
+
"type": "table",
|
|
2281
|
+
"comment": "stage와 activity의 포함 관계를 관리한다.",
|
|
2282
|
+
"columns": [
|
|
2283
|
+
{
|
|
2284
|
+
"name": "stage_activity_id",
|
|
2285
|
+
"type": "CHAR(36)",
|
|
2286
|
+
"nullable": true
|
|
2287
|
+
},
|
|
2288
|
+
{
|
|
2289
|
+
"name": "stage_id",
|
|
2290
|
+
"type": "CHAR(36)",
|
|
2291
|
+
"nullable": false
|
|
2292
|
+
},
|
|
2293
|
+
{
|
|
2294
|
+
"name": "activity_id",
|
|
2295
|
+
"type": "CHAR(36)",
|
|
2296
|
+
"nullable": false
|
|
2297
|
+
},
|
|
2298
|
+
{
|
|
2299
|
+
"name": "sort_order",
|
|
2300
|
+
"type": "INTEGER",
|
|
2301
|
+
"nullable": false,
|
|
2302
|
+
"default": "0"
|
|
2303
|
+
},
|
|
2304
|
+
{
|
|
2305
|
+
"name": "is_required",
|
|
2306
|
+
"type": "INTEGER",
|
|
2307
|
+
"nullable": false,
|
|
2308
|
+
"default": "1"
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
"name": "tailoring_allowed",
|
|
2312
|
+
"type": "INTEGER",
|
|
2313
|
+
"nullable": false,
|
|
2314
|
+
"default": "0"
|
|
2315
|
+
},
|
|
2316
|
+
{
|
|
2317
|
+
"name": "created_at",
|
|
2318
|
+
"type": "DATETIME",
|
|
2319
|
+
"nullable": false,
|
|
2320
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2321
|
+
},
|
|
2322
|
+
{
|
|
2323
|
+
"name": "updated_at",
|
|
2324
|
+
"type": "DATETIME",
|
|
2325
|
+
"nullable": false,
|
|
2326
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
"name": "metadata_json",
|
|
2330
|
+
"type": "JSON",
|
|
2331
|
+
"nullable": true
|
|
2332
|
+
}
|
|
2333
|
+
],
|
|
2334
|
+
"indexes": [
|
|
2335
|
+
{
|
|
2336
|
+
"name": "idx_methodology_stage_activities_activity",
|
|
2337
|
+
"def": "CREATE INDEX idx_methodology_stage_activities_activity\n ON methodology_stage_activities (activity_id)",
|
|
2338
|
+
"table": "methodology_stage_activities",
|
|
2339
|
+
"columns": [
|
|
2340
|
+
"activity_id"
|
|
2341
|
+
]
|
|
2342
|
+
},
|
|
2343
|
+
{
|
|
2344
|
+
"name": "sqlite_autoindex_methodology_stage_activities_3",
|
|
2345
|
+
"def": "UNIQUE (stage_id, sort_order)",
|
|
2346
|
+
"table": "methodology_stage_activities",
|
|
2347
|
+
"columns": [
|
|
2348
|
+
"stage_id",
|
|
2349
|
+
"sort_order"
|
|
2350
|
+
]
|
|
2351
|
+
},
|
|
2352
|
+
{
|
|
2353
|
+
"name": "sqlite_autoindex_methodology_stage_activities_2",
|
|
2354
|
+
"def": "UNIQUE (stage_id, activity_id)",
|
|
2355
|
+
"table": "methodology_stage_activities",
|
|
2356
|
+
"columns": [
|
|
2357
|
+
"stage_id",
|
|
2358
|
+
"activity_id"
|
|
2359
|
+
]
|
|
2360
|
+
},
|
|
2361
|
+
{
|
|
2362
|
+
"name": "sqlite_autoindex_methodology_stage_activities_1",
|
|
2363
|
+
"def": "PRIMARY KEY (stage_activity_id)",
|
|
2364
|
+
"table": "methodology_stage_activities",
|
|
2365
|
+
"columns": [
|
|
2366
|
+
"stage_activity_id"
|
|
2367
|
+
]
|
|
2368
|
+
}
|
|
2369
|
+
],
|
|
2370
|
+
"constraints": [
|
|
2371
|
+
{
|
|
2372
|
+
"name": "stage_activity_id",
|
|
2373
|
+
"type": "PRIMARY KEY",
|
|
2374
|
+
"def": "PRIMARY KEY (stage_activity_id)",
|
|
2375
|
+
"table": "methodology_stage_activities",
|
|
2376
|
+
"columns": [
|
|
2377
|
+
"stage_activity_id"
|
|
2378
|
+
]
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
"name": "- (Foreign key ID: 0)",
|
|
2382
|
+
"type": "FOREIGN KEY",
|
|
2383
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
2384
|
+
"table": "methodology_stage_activities",
|
|
2385
|
+
"referenced_table": "methodology_activities",
|
|
2386
|
+
"columns": [
|
|
2387
|
+
"activity_id"
|
|
2388
|
+
],
|
|
2389
|
+
"referenced_columns": [
|
|
2390
|
+
"activity_id"
|
|
2391
|
+
]
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
"name": "- (Foreign key ID: 1)",
|
|
2395
|
+
"type": "FOREIGN KEY",
|
|
2396
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
2397
|
+
"table": "methodology_stage_activities",
|
|
2398
|
+
"referenced_table": "methodology_stages",
|
|
2399
|
+
"columns": [
|
|
2400
|
+
"stage_id"
|
|
2401
|
+
],
|
|
2402
|
+
"referenced_columns": [
|
|
2403
|
+
"stage_id"
|
|
2404
|
+
]
|
|
2405
|
+
},
|
|
2406
|
+
{
|
|
2407
|
+
"name": "sqlite_autoindex_methodology_stage_activities_3",
|
|
2408
|
+
"type": "UNIQUE",
|
|
2409
|
+
"def": "UNIQUE (stage_id, sort_order)",
|
|
2410
|
+
"table": "methodology_stage_activities",
|
|
2411
|
+
"columns": [
|
|
2412
|
+
"stage_id",
|
|
2413
|
+
"sort_order"
|
|
2414
|
+
]
|
|
2415
|
+
},
|
|
2416
|
+
{
|
|
2417
|
+
"name": "sqlite_autoindex_methodology_stage_activities_2",
|
|
2418
|
+
"type": "UNIQUE",
|
|
2419
|
+
"def": "UNIQUE (stage_id, activity_id)",
|
|
2420
|
+
"table": "methodology_stage_activities",
|
|
2421
|
+
"columns": [
|
|
2422
|
+
"stage_id",
|
|
2423
|
+
"activity_id"
|
|
2424
|
+
]
|
|
2425
|
+
},
|
|
2426
|
+
{
|
|
2427
|
+
"name": "sqlite_autoindex_methodology_stage_activities_1",
|
|
2428
|
+
"type": "PRIMARY KEY",
|
|
2429
|
+
"def": "PRIMARY KEY (stage_activity_id)",
|
|
2430
|
+
"table": "methodology_stage_activities",
|
|
2431
|
+
"columns": [
|
|
2432
|
+
"stage_activity_id"
|
|
2433
|
+
]
|
|
2434
|
+
},
|
|
2435
|
+
{
|
|
2436
|
+
"name": "-",
|
|
2437
|
+
"type": "CHECK",
|
|
2438
|
+
"def": "CHECK (length(stage_activity_id) = 36)",
|
|
2439
|
+
"table": "methodology_stage_activities",
|
|
2440
|
+
"columns": [
|
|
2441
|
+
"stage_activity_id",
|
|
2442
|
+
"activity_id"
|
|
2443
|
+
]
|
|
2444
|
+
},
|
|
2445
|
+
{
|
|
2446
|
+
"name": "-",
|
|
2447
|
+
"type": "CHECK",
|
|
2448
|
+
"def": "CHECK (length(stage_id) = 36)",
|
|
2449
|
+
"table": "methodology_stage_activities",
|
|
2450
|
+
"columns": [
|
|
2451
|
+
"stage_id"
|
|
2452
|
+
]
|
|
2453
|
+
},
|
|
2454
|
+
{
|
|
2455
|
+
"name": "-",
|
|
2456
|
+
"type": "CHECK",
|
|
2457
|
+
"def": "CHECK (length(activity_id) = 36)",
|
|
2458
|
+
"table": "methodology_stage_activities",
|
|
2459
|
+
"columns": [
|
|
2460
|
+
"activity_id"
|
|
2461
|
+
]
|
|
2462
|
+
},
|
|
2463
|
+
{
|
|
2464
|
+
"name": "-",
|
|
2465
|
+
"type": "CHECK",
|
|
2466
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
2467
|
+
"table": "methodology_stage_activities",
|
|
2468
|
+
"columns": [
|
|
2469
|
+
"is_required"
|
|
2470
|
+
]
|
|
2471
|
+
},
|
|
2472
|
+
{
|
|
2473
|
+
"name": "-",
|
|
2474
|
+
"type": "CHECK",
|
|
2475
|
+
"def": "CHECK (tailoring_allowed IN (0, 1))",
|
|
2476
|
+
"table": "methodology_stage_activities",
|
|
2477
|
+
"columns": [
|
|
2478
|
+
"tailoring_allowed"
|
|
2479
|
+
]
|
|
2480
|
+
},
|
|
2481
|
+
{
|
|
2482
|
+
"name": "-",
|
|
2483
|
+
"type": "CHECK",
|
|
2484
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
2485
|
+
"table": "methodology_stage_activities",
|
|
2486
|
+
"columns": [
|
|
2487
|
+
"metadata_json"
|
|
2488
|
+
]
|
|
2489
|
+
}
|
|
2490
|
+
],
|
|
2491
|
+
"def": "CREATE TABLE methodology_stage_activities (\n -- stage activity 배치 식별자\n stage_activity_id CHAR(36) PRIMARY KEY\n CHECK (length(stage_activity_id) = 36),\n\n -- stage 식별자\n stage_id CHAR(36) NOT NULL\n CHECK (length(stage_id) = 36),\n\n -- activity 식별자\n activity_id CHAR(36) NOT NULL\n CHECK (length(activity_id) = 36),\n\n -- stage 내 activity 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- tailoring 허용 여부\n tailoring_allowed INTEGER NOT NULL DEFAULT 0\n CHECK (tailoring_allowed IN (0, 1)),\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (stage_id)\n REFERENCES methodology_stages (stage_id)\n ON DELETE CASCADE,\n\n FOREIGN KEY (activity_id)\n REFERENCES methodology_activities (activity_id)\n ON DELETE CASCADE,\n\n UNIQUE (stage_id, activity_id),\n UNIQUE (stage_id, sort_order)\n)"
|
|
2492
|
+
},
|
|
2493
|
+
{
|
|
2494
|
+
"name": "methodology_activity_artifact_requirements",
|
|
2495
|
+
"type": "table",
|
|
2496
|
+
"comment": "activity의 input/output/supporting 산출물 요구를 관리한다.",
|
|
2497
|
+
"columns": [
|
|
2498
|
+
{
|
|
2499
|
+
"name": "activity_artifact_requirement_id",
|
|
2500
|
+
"type": "CHAR(36)",
|
|
2501
|
+
"nullable": true
|
|
2502
|
+
},
|
|
2503
|
+
{
|
|
2504
|
+
"name": "activity_id",
|
|
2505
|
+
"type": "CHAR(36)",
|
|
2506
|
+
"nullable": false
|
|
2507
|
+
},
|
|
2508
|
+
{
|
|
2509
|
+
"name": "artifact_standard_code",
|
|
2510
|
+
"type": "VARCHAR(128)",
|
|
2511
|
+
"nullable": false
|
|
2512
|
+
},
|
|
2513
|
+
{
|
|
2514
|
+
"name": "artifact_standard_version",
|
|
2515
|
+
"type": "VARCHAR(64)",
|
|
2516
|
+
"nullable": false
|
|
2517
|
+
},
|
|
2518
|
+
{
|
|
2519
|
+
"name": "artifact_component_code",
|
|
2520
|
+
"type": "VARCHAR(128)",
|
|
2521
|
+
"nullable": true
|
|
2522
|
+
},
|
|
2523
|
+
{
|
|
2524
|
+
"name": "artifact_component_role_code",
|
|
2525
|
+
"type": "VARCHAR(64)",
|
|
2526
|
+
"nullable": true
|
|
2527
|
+
},
|
|
2528
|
+
{
|
|
2529
|
+
"name": "requirement_role_code",
|
|
2530
|
+
"type": "VARCHAR(32)",
|
|
2531
|
+
"nullable": false
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
"name": "output_usage_code",
|
|
2535
|
+
"type": "VARCHAR(32)",
|
|
2536
|
+
"nullable": true
|
|
2537
|
+
},
|
|
2538
|
+
{
|
|
2539
|
+
"name": "is_primary",
|
|
2540
|
+
"type": "INTEGER",
|
|
2541
|
+
"nullable": false,
|
|
2542
|
+
"default": "0"
|
|
2543
|
+
},
|
|
2544
|
+
{
|
|
2545
|
+
"name": "is_required",
|
|
2546
|
+
"type": "INTEGER",
|
|
2547
|
+
"nullable": false,
|
|
2548
|
+
"default": "1"
|
|
2549
|
+
},
|
|
2550
|
+
{
|
|
2551
|
+
"name": "validation_required",
|
|
2552
|
+
"type": "INTEGER",
|
|
2553
|
+
"nullable": false,
|
|
2554
|
+
"default": "0"
|
|
2555
|
+
},
|
|
2556
|
+
{
|
|
2557
|
+
"name": "sort_order",
|
|
2558
|
+
"type": "INTEGER",
|
|
2559
|
+
"nullable": false,
|
|
2560
|
+
"default": "0"
|
|
2561
|
+
},
|
|
2562
|
+
{
|
|
2563
|
+
"name": "created_at",
|
|
2564
|
+
"type": "DATETIME",
|
|
2565
|
+
"nullable": false,
|
|
2566
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2567
|
+
},
|
|
2568
|
+
{
|
|
2569
|
+
"name": "updated_at",
|
|
2570
|
+
"type": "DATETIME",
|
|
2571
|
+
"nullable": false,
|
|
2572
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2573
|
+
},
|
|
2574
|
+
{
|
|
2575
|
+
"name": "metadata_json",
|
|
2576
|
+
"type": "JSON",
|
|
2577
|
+
"nullable": true
|
|
2578
|
+
}
|
|
2579
|
+
],
|
|
2580
|
+
"indexes": [
|
|
2581
|
+
{
|
|
2582
|
+
"name": "ux_methodology_activity_artifact_requirements_unique_target",
|
|
2583
|
+
"def": "CREATE UNIQUE INDEX ux_methodology_activity_artifact_requirements_unique_target\n ON methodology_activity_artifact_requirements (\n activity_id,\n artifact_standard_code,\n artifact_standard_version,\n requirement_role_code,\n COALESCE(artifact_component_code, '')\n )",
|
|
2584
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2585
|
+
"columns": [
|
|
2586
|
+
"activity_id",
|
|
2587
|
+
"artifact_standard_code",
|
|
2588
|
+
"artifact_standard_version",
|
|
2589
|
+
"requirement_role_code"
|
|
2590
|
+
]
|
|
2591
|
+
},
|
|
2592
|
+
{
|
|
2593
|
+
"name": "idx_methodology_activity_artifact_requirements_component",
|
|
2594
|
+
"def": "CREATE INDEX idx_methodology_activity_artifact_requirements_component\n ON methodology_activity_artifact_requirements (artifact_standard_code, artifact_component_code)",
|
|
2595
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2596
|
+
"columns": [
|
|
2597
|
+
"artifact_standard_code",
|
|
2598
|
+
"artifact_component_code"
|
|
2599
|
+
]
|
|
2600
|
+
},
|
|
2601
|
+
{
|
|
2602
|
+
"name": "idx_methodology_activity_artifact_requirements_activity_role",
|
|
2603
|
+
"def": "CREATE INDEX idx_methodology_activity_artifact_requirements_activity_role\n ON methodology_activity_artifact_requirements (activity_id, requirement_role_code)",
|
|
2604
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2605
|
+
"columns": [
|
|
2606
|
+
"activity_id",
|
|
2607
|
+
"requirement_role_code"
|
|
2608
|
+
]
|
|
2609
|
+
},
|
|
2610
|
+
{
|
|
2611
|
+
"name": "ux_methodology_activity_artifact_requirements_primary_output",
|
|
2612
|
+
"def": "CREATE UNIQUE INDEX ux_methodology_activity_artifact_requirements_primary_output\n ON methodology_activity_artifact_requirements (activity_id)\n WHERE is_primary = 1",
|
|
2613
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2614
|
+
"columns": [
|
|
2615
|
+
"activity_id"
|
|
2616
|
+
]
|
|
2617
|
+
},
|
|
2618
|
+
{
|
|
2619
|
+
"name": "sqlite_autoindex_methodology_activity_artifact_requirements_2",
|
|
2620
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
2621
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2622
|
+
"columns": [
|
|
2623
|
+
"activity_id",
|
|
2624
|
+
"sort_order"
|
|
2625
|
+
]
|
|
2626
|
+
},
|
|
2627
|
+
{
|
|
2628
|
+
"name": "sqlite_autoindex_methodology_activity_artifact_requirements_1",
|
|
2629
|
+
"def": "PRIMARY KEY (activity_artifact_requirement_id)",
|
|
2630
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2631
|
+
"columns": [
|
|
2632
|
+
"activity_artifact_requirement_id"
|
|
2633
|
+
]
|
|
2634
|
+
}
|
|
2635
|
+
],
|
|
2636
|
+
"constraints": [
|
|
2637
|
+
{
|
|
2638
|
+
"name": "activity_artifact_requirement_id",
|
|
2639
|
+
"type": "PRIMARY KEY",
|
|
2640
|
+
"def": "PRIMARY KEY (activity_artifact_requirement_id)",
|
|
2641
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2642
|
+
"columns": [
|
|
2643
|
+
"activity_artifact_requirement_id"
|
|
2644
|
+
]
|
|
2645
|
+
},
|
|
2646
|
+
{
|
|
2647
|
+
"name": "- (Foreign key ID: 0)",
|
|
2648
|
+
"type": "FOREIGN KEY",
|
|
2649
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
2650
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2651
|
+
"referenced_table": "methodology_activities",
|
|
2652
|
+
"columns": [
|
|
2653
|
+
"activity_id"
|
|
2654
|
+
],
|
|
2655
|
+
"referenced_columns": [
|
|
2656
|
+
"activity_id"
|
|
2657
|
+
]
|
|
2658
|
+
},
|
|
2659
|
+
{
|
|
2660
|
+
"name": "sqlite_autoindex_methodology_activity_artifact_requirements_2",
|
|
2661
|
+
"type": "UNIQUE",
|
|
2662
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
2663
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2664
|
+
"columns": [
|
|
2665
|
+
"activity_id",
|
|
2666
|
+
"sort_order"
|
|
2667
|
+
]
|
|
2668
|
+
},
|
|
2669
|
+
{
|
|
2670
|
+
"name": "sqlite_autoindex_methodology_activity_artifact_requirements_1",
|
|
2671
|
+
"type": "PRIMARY KEY",
|
|
2672
|
+
"def": "PRIMARY KEY (activity_artifact_requirement_id)",
|
|
2673
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2674
|
+
"columns": [
|
|
2675
|
+
"activity_artifact_requirement_id"
|
|
2676
|
+
]
|
|
2677
|
+
},
|
|
2678
|
+
{
|
|
2679
|
+
"name": "-",
|
|
2680
|
+
"type": "CHECK",
|
|
2681
|
+
"def": "CHECK (length(activity_artifact_requirement_id) = 36)",
|
|
2682
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2683
|
+
"columns": [
|
|
2684
|
+
"activity_artifact_requirement_id"
|
|
2685
|
+
]
|
|
2686
|
+
},
|
|
2687
|
+
{
|
|
2688
|
+
"name": "-",
|
|
2689
|
+
"type": "CHECK",
|
|
2690
|
+
"def": "CHECK (length(activity_id) = 36)",
|
|
2691
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2692
|
+
"columns": [
|
|
2693
|
+
"activity_id"
|
|
2694
|
+
]
|
|
2695
|
+
},
|
|
2696
|
+
{
|
|
2697
|
+
"name": "-",
|
|
2698
|
+
"type": "CHECK",
|
|
2699
|
+
"def": "CHECK (requirement_role_code IN ('input', 'output', 'supporting'))",
|
|
2700
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2701
|
+
"columns": [
|
|
2702
|
+
"requirement_role_code"
|
|
2703
|
+
]
|
|
2704
|
+
},
|
|
2705
|
+
{
|
|
2706
|
+
"name": "-",
|
|
2707
|
+
"type": "CHECK",
|
|
2708
|
+
"def": "CHECK (output_usage_code IS NULL OR output_usage_code IN ('produces', 'refines', 'reviews', 'consolidates'))",
|
|
2709
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2710
|
+
"columns": [
|
|
2711
|
+
"output_usage_code"
|
|
2712
|
+
]
|
|
2713
|
+
},
|
|
2714
|
+
{
|
|
2715
|
+
"name": "-",
|
|
2716
|
+
"type": "CHECK",
|
|
2717
|
+
"def": "CHECK (is_primary IN (0, 1))",
|
|
2718
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2719
|
+
"columns": [
|
|
2720
|
+
"is_primary"
|
|
2721
|
+
]
|
|
2722
|
+
},
|
|
2723
|
+
{
|
|
2724
|
+
"name": "-",
|
|
2725
|
+
"type": "CHECK",
|
|
2726
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
2727
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2728
|
+
"columns": [
|
|
2729
|
+
"is_required"
|
|
2730
|
+
]
|
|
2731
|
+
},
|
|
2732
|
+
{
|
|
2733
|
+
"name": "-",
|
|
2734
|
+
"type": "CHECK",
|
|
2735
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
2736
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2737
|
+
"columns": [
|
|
2738
|
+
"validation_required"
|
|
2739
|
+
]
|
|
2740
|
+
},
|
|
2741
|
+
{
|
|
2742
|
+
"name": "-",
|
|
2743
|
+
"type": "CHECK",
|
|
2744
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
2745
|
+
"table": "methodology_activity_artifact_requirements",
|
|
2746
|
+
"columns": [
|
|
2747
|
+
"metadata_json"
|
|
2748
|
+
]
|
|
2749
|
+
}
|
|
2750
|
+
],
|
|
2751
|
+
"def": "CREATE TABLE methodology_activity_artifact_requirements (\n -- activity artifact requirement 식별자\n activity_artifact_requirement_id CHAR(36) PRIMARY KEY\n CHECK (length(activity_artifact_requirement_id) = 36),\n\n -- 소속 activity 식별자\n activity_id CHAR(36) NOT NULL\n CHECK (length(activity_id) = 36),\n\n -- artifact standard 코드\n artifact_standard_code VARCHAR(128) NOT NULL,\n\n -- artifact standard 버전\n artifact_standard_version VARCHAR(64) NOT NULL,\n\n -- artifact-standard가 정의한 document component 코드. 산출물 전체가 아니라 특정 본문/부록 구성 단위를 대상으로 할 때 사용한다.\n artifact_component_code VARCHAR(128),\n\n -- artifact-standard document component 역할 코드. 예: MAIN, APPENDIX\n artifact_component_role_code VARCHAR(64),\n\n -- 산출물 요구 역할 코드\n requirement_role_code VARCHAR(32) NOT NULL\n CHECK (requirement_role_code IN ('input', 'output', 'supporting')),\n\n -- output activity가 산출물을 어떻게 다루는지 나타내는 사용 코드\n output_usage_code VARCHAR(32)\n CHECK (output_usage_code IS NULL OR output_usage_code IN ('produces', 'refines', 'reviews', 'consolidates')),\n\n -- activity 대표 output 여부\n is_primary INTEGER NOT NULL DEFAULT 0\n CHECK (is_primary IN (0, 1)),\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- activity 내 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (activity_id)\n REFERENCES methodology_activities (activity_id)\n ON DELETE CASCADE,\n\n UNIQUE (activity_id, sort_order)\n)"
|
|
2752
|
+
},
|
|
2753
|
+
{
|
|
2754
|
+
"name": "methodology_stage_artifact_requirements",
|
|
2755
|
+
"type": "table",
|
|
2756
|
+
"comment": "stage gate, baseline, handoff, approval에 필요한 추가 산출물 요구를 관리한다.",
|
|
2757
|
+
"columns": [
|
|
2758
|
+
{
|
|
2759
|
+
"name": "stage_artifact_requirement_id",
|
|
2760
|
+
"type": "CHAR(36)",
|
|
2761
|
+
"nullable": true
|
|
2762
|
+
},
|
|
2763
|
+
{
|
|
2764
|
+
"name": "stage_id",
|
|
2765
|
+
"type": "CHAR(36)",
|
|
2766
|
+
"nullable": false
|
|
2767
|
+
},
|
|
2768
|
+
{
|
|
2769
|
+
"name": "artifact_standard_code",
|
|
2770
|
+
"type": "VARCHAR(128)",
|
|
2771
|
+
"nullable": false
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
"name": "artifact_standard_version",
|
|
2775
|
+
"type": "VARCHAR(64)",
|
|
2776
|
+
"nullable": false
|
|
2777
|
+
},
|
|
2778
|
+
{
|
|
2779
|
+
"name": "requirement_role_code",
|
|
2780
|
+
"type": "VARCHAR(32)",
|
|
2781
|
+
"nullable": false
|
|
2782
|
+
},
|
|
2783
|
+
{
|
|
2784
|
+
"name": "is_required",
|
|
2785
|
+
"type": "INTEGER",
|
|
2786
|
+
"nullable": false,
|
|
2787
|
+
"default": "1"
|
|
2788
|
+
},
|
|
2789
|
+
{
|
|
2790
|
+
"name": "validation_required",
|
|
2791
|
+
"type": "INTEGER",
|
|
2792
|
+
"nullable": false,
|
|
2793
|
+
"default": "0"
|
|
2794
|
+
},
|
|
2795
|
+
{
|
|
2796
|
+
"name": "sort_order",
|
|
2797
|
+
"type": "INTEGER",
|
|
2798
|
+
"nullable": false,
|
|
2799
|
+
"default": "0"
|
|
2800
|
+
},
|
|
2801
|
+
{
|
|
2802
|
+
"name": "created_at",
|
|
2803
|
+
"type": "DATETIME",
|
|
2804
|
+
"nullable": false,
|
|
2805
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2806
|
+
},
|
|
2807
|
+
{
|
|
2808
|
+
"name": "updated_at",
|
|
2809
|
+
"type": "DATETIME",
|
|
2810
|
+
"nullable": false,
|
|
2811
|
+
"default": "CURRENT_TIMESTAMP"
|
|
2812
|
+
},
|
|
2813
|
+
{
|
|
2814
|
+
"name": "metadata_json",
|
|
2815
|
+
"type": "JSON",
|
|
2816
|
+
"nullable": true
|
|
2817
|
+
}
|
|
2818
|
+
],
|
|
2819
|
+
"indexes": [
|
|
2820
|
+
{
|
|
2821
|
+
"name": "idx_methodology_stage_artifact_requirements_stage_role",
|
|
2822
|
+
"def": "CREATE INDEX idx_methodology_stage_artifact_requirements_stage_role\n ON methodology_stage_artifact_requirements (stage_id, requirement_role_code)",
|
|
2823
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2824
|
+
"columns": [
|
|
2825
|
+
"stage_id",
|
|
2826
|
+
"requirement_role_code"
|
|
2827
|
+
]
|
|
2828
|
+
},
|
|
2829
|
+
{
|
|
2830
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_3",
|
|
2831
|
+
"def": "UNIQUE (stage_id, sort_order)",
|
|
2832
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2833
|
+
"columns": [
|
|
2834
|
+
"stage_id",
|
|
2835
|
+
"sort_order"
|
|
2836
|
+
]
|
|
2837
|
+
},
|
|
2838
|
+
{
|
|
2839
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_2",
|
|
2840
|
+
"def": "UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code)",
|
|
2841
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2842
|
+
"columns": [
|
|
2843
|
+
"stage_id",
|
|
2844
|
+
"artifact_standard_code",
|
|
2845
|
+
"artifact_standard_version",
|
|
2846
|
+
"requirement_role_code"
|
|
2847
|
+
]
|
|
2848
|
+
},
|
|
2849
|
+
{
|
|
2850
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_1",
|
|
2851
|
+
"def": "PRIMARY KEY (stage_artifact_requirement_id)",
|
|
2852
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2853
|
+
"columns": [
|
|
2854
|
+
"stage_artifact_requirement_id"
|
|
2855
|
+
]
|
|
2856
|
+
}
|
|
2857
|
+
],
|
|
2858
|
+
"constraints": [
|
|
2859
|
+
{
|
|
2860
|
+
"name": "stage_artifact_requirement_id",
|
|
2861
|
+
"type": "PRIMARY KEY",
|
|
2862
|
+
"def": "PRIMARY KEY (stage_artifact_requirement_id)",
|
|
2863
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2864
|
+
"columns": [
|
|
2865
|
+
"stage_artifact_requirement_id"
|
|
2866
|
+
]
|
|
2867
|
+
},
|
|
2868
|
+
{
|
|
2869
|
+
"name": "- (Foreign key ID: 0)",
|
|
2870
|
+
"type": "FOREIGN KEY",
|
|
2871
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
2872
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2873
|
+
"referenced_table": "methodology_stages",
|
|
2874
|
+
"columns": [
|
|
2875
|
+
"stage_id"
|
|
2876
|
+
],
|
|
2877
|
+
"referenced_columns": [
|
|
2878
|
+
"stage_id"
|
|
2879
|
+
]
|
|
2880
|
+
},
|
|
2881
|
+
{
|
|
2882
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_3",
|
|
2883
|
+
"type": "UNIQUE",
|
|
2884
|
+
"def": "UNIQUE (stage_id, sort_order)",
|
|
2885
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2886
|
+
"columns": [
|
|
2887
|
+
"stage_id",
|
|
2888
|
+
"sort_order"
|
|
2889
|
+
]
|
|
2890
|
+
},
|
|
2891
|
+
{
|
|
2892
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_2",
|
|
2893
|
+
"type": "UNIQUE",
|
|
2894
|
+
"def": "UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code)",
|
|
2895
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2896
|
+
"columns": [
|
|
2897
|
+
"stage_id",
|
|
2898
|
+
"artifact_standard_code",
|
|
2899
|
+
"artifact_standard_version",
|
|
2900
|
+
"requirement_role_code"
|
|
2901
|
+
]
|
|
2902
|
+
},
|
|
2903
|
+
{
|
|
2904
|
+
"name": "sqlite_autoindex_methodology_stage_artifact_requirements_1",
|
|
2905
|
+
"type": "PRIMARY KEY",
|
|
2906
|
+
"def": "PRIMARY KEY (stage_artifact_requirement_id)",
|
|
2907
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2908
|
+
"columns": [
|
|
2909
|
+
"stage_artifact_requirement_id"
|
|
2910
|
+
]
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
"name": "-",
|
|
2914
|
+
"type": "CHECK",
|
|
2915
|
+
"def": "CHECK (length(stage_artifact_requirement_id) = 36)",
|
|
2916
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2917
|
+
"columns": [
|
|
2918
|
+
"stage_artifact_requirement_id"
|
|
2919
|
+
]
|
|
2920
|
+
},
|
|
2921
|
+
{
|
|
2922
|
+
"name": "-",
|
|
2923
|
+
"type": "CHECK",
|
|
2924
|
+
"def": "CHECK (length(stage_id) = 36)",
|
|
2925
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2926
|
+
"columns": [
|
|
2927
|
+
"stage_id"
|
|
2928
|
+
]
|
|
2929
|
+
},
|
|
2930
|
+
{
|
|
2931
|
+
"name": "-",
|
|
2932
|
+
"type": "CHECK",
|
|
2933
|
+
"def": "CHECK (requirement_role_code IN ('required', 'supporting'))",
|
|
2934
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2935
|
+
"columns": [
|
|
2936
|
+
"requirement_role_code"
|
|
2937
|
+
]
|
|
2938
|
+
},
|
|
2939
|
+
{
|
|
2940
|
+
"name": "-",
|
|
2941
|
+
"type": "CHECK",
|
|
2942
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
2943
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2944
|
+
"columns": [
|
|
2945
|
+
"is_required"
|
|
2946
|
+
]
|
|
2947
|
+
},
|
|
2948
|
+
{
|
|
2949
|
+
"name": "-",
|
|
2950
|
+
"type": "CHECK",
|
|
2951
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
2952
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2953
|
+
"columns": [
|
|
2954
|
+
"validation_required"
|
|
2955
|
+
]
|
|
2956
|
+
},
|
|
2957
|
+
{
|
|
2958
|
+
"name": "-",
|
|
2959
|
+
"type": "CHECK",
|
|
2960
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
2961
|
+
"table": "methodology_stage_artifact_requirements",
|
|
2962
|
+
"columns": [
|
|
2963
|
+
"metadata_json"
|
|
2964
|
+
]
|
|
2965
|
+
}
|
|
2966
|
+
],
|
|
2967
|
+
"def": "CREATE TABLE methodology_stage_artifact_requirements (\n -- stage artifact requirement 식별자\n stage_artifact_requirement_id CHAR(36) PRIMARY KEY\n CHECK (length(stage_artifact_requirement_id) = 36),\n\n -- 소속 stage 식별자\n stage_id CHAR(36) NOT NULL\n CHECK (length(stage_id) = 36),\n\n -- artifact standard 코드\n artifact_standard_code VARCHAR(128) NOT NULL,\n\n -- artifact standard 버전\n artifact_standard_version VARCHAR(64) NOT NULL,\n\n -- stage 산출물 요구 역할 코드\n requirement_role_code VARCHAR(32) NOT NULL\n CHECK (requirement_role_code IN ('required', 'supporting')),\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- stage 내 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (stage_id)\n REFERENCES methodology_stages (stage_id)\n ON DELETE CASCADE,\n\n UNIQUE (stage_id, artifact_standard_code, artifact_standard_version, requirement_role_code),\n UNIQUE (stage_id, sort_order)\n)"
|
|
2968
|
+
},
|
|
2969
|
+
{
|
|
2970
|
+
"name": "methodology_stage_criteria",
|
|
2971
|
+
"type": "table",
|
|
2972
|
+
"comment": "stage의 entry, exit, gate 판단 기준을 관리한다.",
|
|
2973
|
+
"columns": [
|
|
2974
|
+
{
|
|
2975
|
+
"name": "stage_criteria_id",
|
|
2976
|
+
"type": "CHAR(36)",
|
|
2977
|
+
"nullable": true
|
|
2978
|
+
},
|
|
2979
|
+
{
|
|
2980
|
+
"name": "stage_id",
|
|
2981
|
+
"type": "CHAR(36)",
|
|
2982
|
+
"nullable": false
|
|
2983
|
+
},
|
|
2984
|
+
{
|
|
2985
|
+
"name": "criteria_type_code",
|
|
2986
|
+
"type": "VARCHAR(32)",
|
|
2987
|
+
"nullable": false
|
|
2988
|
+
},
|
|
2989
|
+
{
|
|
2990
|
+
"name": "criteria_name",
|
|
2991
|
+
"type": "VARCHAR(256)",
|
|
2992
|
+
"nullable": false
|
|
2993
|
+
},
|
|
2994
|
+
{
|
|
2995
|
+
"name": "criteria_text",
|
|
2996
|
+
"type": "TEXT",
|
|
2997
|
+
"nullable": false
|
|
2998
|
+
},
|
|
2999
|
+
{
|
|
3000
|
+
"name": "is_required",
|
|
3001
|
+
"type": "INTEGER",
|
|
3002
|
+
"nullable": false,
|
|
3003
|
+
"default": "1"
|
|
3004
|
+
},
|
|
3005
|
+
{
|
|
3006
|
+
"name": "validation_required",
|
|
3007
|
+
"type": "INTEGER",
|
|
3008
|
+
"nullable": false,
|
|
3009
|
+
"default": "0"
|
|
3010
|
+
},
|
|
3011
|
+
{
|
|
3012
|
+
"name": "severity_code",
|
|
3013
|
+
"type": "VARCHAR(32)",
|
|
3014
|
+
"nullable": false,
|
|
3015
|
+
"default": "'error'"
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
"name": "sort_order",
|
|
3019
|
+
"type": "INTEGER",
|
|
3020
|
+
"nullable": false,
|
|
3021
|
+
"default": "0"
|
|
3022
|
+
},
|
|
3023
|
+
{
|
|
3024
|
+
"name": "created_at",
|
|
3025
|
+
"type": "DATETIME",
|
|
3026
|
+
"nullable": false,
|
|
3027
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3028
|
+
},
|
|
3029
|
+
{
|
|
3030
|
+
"name": "updated_at",
|
|
3031
|
+
"type": "DATETIME",
|
|
3032
|
+
"nullable": false,
|
|
3033
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3034
|
+
},
|
|
3035
|
+
{
|
|
3036
|
+
"name": "metadata_json",
|
|
3037
|
+
"type": "JSON",
|
|
3038
|
+
"nullable": true
|
|
3039
|
+
}
|
|
3040
|
+
],
|
|
3041
|
+
"indexes": [
|
|
3042
|
+
{
|
|
3043
|
+
"name": "idx_methodology_stage_criteria_stage_type",
|
|
3044
|
+
"def": "CREATE INDEX idx_methodology_stage_criteria_stage_type\n ON methodology_stage_criteria (stage_id, criteria_type_code)",
|
|
3045
|
+
"table": "methodology_stage_criteria",
|
|
3046
|
+
"columns": [
|
|
3047
|
+
"stage_id",
|
|
3048
|
+
"criteria_type_code"
|
|
3049
|
+
]
|
|
3050
|
+
},
|
|
3051
|
+
{
|
|
3052
|
+
"name": "sqlite_autoindex_methodology_stage_criteria_2",
|
|
3053
|
+
"def": "UNIQUE (stage_id, criteria_type_code, sort_order)",
|
|
3054
|
+
"table": "methodology_stage_criteria",
|
|
3055
|
+
"columns": [
|
|
3056
|
+
"stage_id",
|
|
3057
|
+
"criteria_type_code",
|
|
3058
|
+
"sort_order"
|
|
3059
|
+
]
|
|
3060
|
+
},
|
|
3061
|
+
{
|
|
3062
|
+
"name": "sqlite_autoindex_methodology_stage_criteria_1",
|
|
3063
|
+
"def": "PRIMARY KEY (stage_criteria_id)",
|
|
3064
|
+
"table": "methodology_stage_criteria",
|
|
3065
|
+
"columns": [
|
|
3066
|
+
"stage_criteria_id"
|
|
3067
|
+
]
|
|
3068
|
+
}
|
|
3069
|
+
],
|
|
3070
|
+
"constraints": [
|
|
3071
|
+
{
|
|
3072
|
+
"name": "stage_criteria_id",
|
|
3073
|
+
"type": "PRIMARY KEY",
|
|
3074
|
+
"def": "PRIMARY KEY (stage_criteria_id)",
|
|
3075
|
+
"table": "methodology_stage_criteria",
|
|
3076
|
+
"columns": [
|
|
3077
|
+
"stage_criteria_id"
|
|
3078
|
+
]
|
|
3079
|
+
},
|
|
3080
|
+
{
|
|
3081
|
+
"name": "- (Foreign key ID: 0)",
|
|
3082
|
+
"type": "FOREIGN KEY",
|
|
3083
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
3084
|
+
"table": "methodology_stage_criteria",
|
|
3085
|
+
"referenced_table": "methodology_stages",
|
|
3086
|
+
"columns": [
|
|
3087
|
+
"stage_id"
|
|
3088
|
+
],
|
|
3089
|
+
"referenced_columns": [
|
|
3090
|
+
"stage_id"
|
|
3091
|
+
]
|
|
3092
|
+
},
|
|
3093
|
+
{
|
|
3094
|
+
"name": "sqlite_autoindex_methodology_stage_criteria_2",
|
|
3095
|
+
"type": "UNIQUE",
|
|
3096
|
+
"def": "UNIQUE (stage_id, criteria_type_code, sort_order)",
|
|
3097
|
+
"table": "methodology_stage_criteria",
|
|
3098
|
+
"columns": [
|
|
3099
|
+
"stage_id",
|
|
3100
|
+
"criteria_type_code",
|
|
3101
|
+
"sort_order"
|
|
3102
|
+
]
|
|
3103
|
+
},
|
|
3104
|
+
{
|
|
3105
|
+
"name": "sqlite_autoindex_methodology_stage_criteria_1",
|
|
3106
|
+
"type": "PRIMARY KEY",
|
|
3107
|
+
"def": "PRIMARY KEY (stage_criteria_id)",
|
|
3108
|
+
"table": "methodology_stage_criteria",
|
|
3109
|
+
"columns": [
|
|
3110
|
+
"stage_criteria_id"
|
|
3111
|
+
]
|
|
3112
|
+
},
|
|
3113
|
+
{
|
|
3114
|
+
"name": "-",
|
|
3115
|
+
"type": "CHECK",
|
|
3116
|
+
"def": "CHECK (length(stage_criteria_id) = 36)",
|
|
3117
|
+
"table": "methodology_stage_criteria",
|
|
3118
|
+
"columns": [
|
|
3119
|
+
"stage_criteria_id"
|
|
3120
|
+
]
|
|
3121
|
+
},
|
|
3122
|
+
{
|
|
3123
|
+
"name": "-",
|
|
3124
|
+
"type": "CHECK",
|
|
3125
|
+
"def": "CHECK (length(stage_id) = 36)",
|
|
3126
|
+
"table": "methodology_stage_criteria",
|
|
3127
|
+
"columns": [
|
|
3128
|
+
"stage_id"
|
|
3129
|
+
]
|
|
3130
|
+
},
|
|
3131
|
+
{
|
|
3132
|
+
"name": "-",
|
|
3133
|
+
"type": "CHECK",
|
|
3134
|
+
"def": "CHECK (criteria_type_code IN ('entry', 'exit', 'gate'))",
|
|
3135
|
+
"table": "methodology_stage_criteria",
|
|
3136
|
+
"columns": [
|
|
3137
|
+
"criteria_type_code"
|
|
3138
|
+
]
|
|
3139
|
+
},
|
|
3140
|
+
{
|
|
3141
|
+
"name": "-",
|
|
3142
|
+
"type": "CHECK",
|
|
3143
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
3144
|
+
"table": "methodology_stage_criteria",
|
|
3145
|
+
"columns": [
|
|
3146
|
+
"is_required"
|
|
3147
|
+
]
|
|
3148
|
+
},
|
|
3149
|
+
{
|
|
3150
|
+
"name": "-",
|
|
3151
|
+
"type": "CHECK",
|
|
3152
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
3153
|
+
"table": "methodology_stage_criteria",
|
|
3154
|
+
"columns": [
|
|
3155
|
+
"validation_required"
|
|
3156
|
+
]
|
|
3157
|
+
},
|
|
3158
|
+
{
|
|
3159
|
+
"name": "-",
|
|
3160
|
+
"type": "CHECK",
|
|
3161
|
+
"def": "CHECK (severity_code IN ('info', 'warning', 'error', 'critical'))",
|
|
3162
|
+
"table": "methodology_stage_criteria",
|
|
3163
|
+
"columns": [
|
|
3164
|
+
"severity_code"
|
|
3165
|
+
]
|
|
3166
|
+
},
|
|
3167
|
+
{
|
|
3168
|
+
"name": "-",
|
|
3169
|
+
"type": "CHECK",
|
|
3170
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
3171
|
+
"table": "methodology_stage_criteria",
|
|
3172
|
+
"columns": [
|
|
3173
|
+
"metadata_json"
|
|
3174
|
+
]
|
|
3175
|
+
}
|
|
3176
|
+
],
|
|
3177
|
+
"def": "CREATE TABLE methodology_stage_criteria (\n -- stage criteria 식별자\n stage_criteria_id CHAR(36) PRIMARY KEY\n CHECK (length(stage_criteria_id) = 36),\n\n -- 소속 stage 식별자\n stage_id CHAR(36) NOT NULL\n CHECK (length(stage_id) = 36),\n\n -- criteria 유형 코드\n criteria_type_code VARCHAR(32) NOT NULL\n CHECK (criteria_type_code IN ('entry', 'exit', 'gate')),\n\n -- criteria 이름\n criteria_name VARCHAR(256) NOT NULL,\n\n -- criteria 내용\n criteria_text TEXT NOT NULL,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- 심각도 코드\n severity_code VARCHAR(32) NOT NULL DEFAULT 'error'\n CHECK (severity_code IN ('info', 'warning', 'error', 'critical')),\n\n -- stage criteria 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (stage_id)\n REFERENCES methodology_stages (stage_id)\n ON DELETE CASCADE,\n\n UNIQUE (stage_id, criteria_type_code, sort_order)\n)"
|
|
3178
|
+
},
|
|
3179
|
+
{
|
|
3180
|
+
"name": "methodology_activity_criteria",
|
|
3181
|
+
"type": "table",
|
|
3182
|
+
"comment": "activity의 completion 판단 기준을 관리한다.",
|
|
3183
|
+
"columns": [
|
|
3184
|
+
{
|
|
3185
|
+
"name": "activity_criteria_id",
|
|
3186
|
+
"type": "CHAR(36)",
|
|
3187
|
+
"nullable": true
|
|
3188
|
+
},
|
|
3189
|
+
{
|
|
3190
|
+
"name": "activity_id",
|
|
3191
|
+
"type": "CHAR(36)",
|
|
3192
|
+
"nullable": false
|
|
3193
|
+
},
|
|
3194
|
+
{
|
|
3195
|
+
"name": "criteria_type_code",
|
|
3196
|
+
"type": "VARCHAR(32)",
|
|
3197
|
+
"nullable": false,
|
|
3198
|
+
"default": "'completion'"
|
|
3199
|
+
},
|
|
3200
|
+
{
|
|
3201
|
+
"name": "criteria_name",
|
|
3202
|
+
"type": "VARCHAR(256)",
|
|
3203
|
+
"nullable": false
|
|
3204
|
+
},
|
|
3205
|
+
{
|
|
3206
|
+
"name": "criteria_text",
|
|
3207
|
+
"type": "TEXT",
|
|
3208
|
+
"nullable": false
|
|
3209
|
+
},
|
|
3210
|
+
{
|
|
3211
|
+
"name": "is_required",
|
|
3212
|
+
"type": "INTEGER",
|
|
3213
|
+
"nullable": false,
|
|
3214
|
+
"default": "1"
|
|
3215
|
+
},
|
|
3216
|
+
{
|
|
3217
|
+
"name": "validation_required",
|
|
3218
|
+
"type": "INTEGER",
|
|
3219
|
+
"nullable": false,
|
|
3220
|
+
"default": "0"
|
|
3221
|
+
},
|
|
3222
|
+
{
|
|
3223
|
+
"name": "severity_code",
|
|
3224
|
+
"type": "VARCHAR(32)",
|
|
3225
|
+
"nullable": false,
|
|
3226
|
+
"default": "'error'"
|
|
3227
|
+
},
|
|
3228
|
+
{
|
|
3229
|
+
"name": "sort_order",
|
|
3230
|
+
"type": "INTEGER",
|
|
3231
|
+
"nullable": false,
|
|
3232
|
+
"default": "0"
|
|
3233
|
+
},
|
|
3234
|
+
{
|
|
3235
|
+
"name": "created_at",
|
|
3236
|
+
"type": "DATETIME",
|
|
3237
|
+
"nullable": false,
|
|
3238
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3239
|
+
},
|
|
3240
|
+
{
|
|
3241
|
+
"name": "updated_at",
|
|
3242
|
+
"type": "DATETIME",
|
|
3243
|
+
"nullable": false,
|
|
3244
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3245
|
+
},
|
|
3246
|
+
{
|
|
3247
|
+
"name": "metadata_json",
|
|
3248
|
+
"type": "JSON",
|
|
3249
|
+
"nullable": true
|
|
3250
|
+
}
|
|
3251
|
+
],
|
|
3252
|
+
"indexes": [
|
|
3253
|
+
{
|
|
3254
|
+
"name": "idx_methodology_activity_criteria_activity",
|
|
3255
|
+
"def": "CREATE INDEX idx_methodology_activity_criteria_activity\n ON methodology_activity_criteria (activity_id)",
|
|
3256
|
+
"table": "methodology_activity_criteria",
|
|
3257
|
+
"columns": [
|
|
3258
|
+
"activity_id"
|
|
3259
|
+
]
|
|
3260
|
+
},
|
|
3261
|
+
{
|
|
3262
|
+
"name": "sqlite_autoindex_methodology_activity_criteria_2",
|
|
3263
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
3264
|
+
"table": "methodology_activity_criteria",
|
|
3265
|
+
"columns": [
|
|
3266
|
+
"activity_id",
|
|
3267
|
+
"sort_order"
|
|
3268
|
+
]
|
|
3269
|
+
},
|
|
3270
|
+
{
|
|
3271
|
+
"name": "sqlite_autoindex_methodology_activity_criteria_1",
|
|
3272
|
+
"def": "PRIMARY KEY (activity_criteria_id)",
|
|
3273
|
+
"table": "methodology_activity_criteria",
|
|
3274
|
+
"columns": [
|
|
3275
|
+
"activity_criteria_id"
|
|
3276
|
+
]
|
|
3277
|
+
}
|
|
3278
|
+
],
|
|
3279
|
+
"constraints": [
|
|
3280
|
+
{
|
|
3281
|
+
"name": "activity_criteria_id",
|
|
3282
|
+
"type": "PRIMARY KEY",
|
|
3283
|
+
"def": "PRIMARY KEY (activity_criteria_id)",
|
|
3284
|
+
"table": "methodology_activity_criteria",
|
|
3285
|
+
"columns": [
|
|
3286
|
+
"activity_criteria_id"
|
|
3287
|
+
]
|
|
3288
|
+
},
|
|
3289
|
+
{
|
|
3290
|
+
"name": "- (Foreign key ID: 0)",
|
|
3291
|
+
"type": "FOREIGN KEY",
|
|
3292
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE",
|
|
3293
|
+
"table": "methodology_activity_criteria",
|
|
3294
|
+
"referenced_table": "methodology_activities",
|
|
3295
|
+
"columns": [
|
|
3296
|
+
"activity_id"
|
|
3297
|
+
],
|
|
3298
|
+
"referenced_columns": [
|
|
3299
|
+
"activity_id"
|
|
3300
|
+
]
|
|
3301
|
+
},
|
|
3302
|
+
{
|
|
3303
|
+
"name": "sqlite_autoindex_methodology_activity_criteria_2",
|
|
3304
|
+
"type": "UNIQUE",
|
|
3305
|
+
"def": "UNIQUE (activity_id, sort_order)",
|
|
3306
|
+
"table": "methodology_activity_criteria",
|
|
3307
|
+
"columns": [
|
|
3308
|
+
"activity_id",
|
|
3309
|
+
"sort_order"
|
|
3310
|
+
]
|
|
3311
|
+
},
|
|
3312
|
+
{
|
|
3313
|
+
"name": "sqlite_autoindex_methodology_activity_criteria_1",
|
|
3314
|
+
"type": "PRIMARY KEY",
|
|
3315
|
+
"def": "PRIMARY KEY (activity_criteria_id)",
|
|
3316
|
+
"table": "methodology_activity_criteria",
|
|
3317
|
+
"columns": [
|
|
3318
|
+
"activity_criteria_id"
|
|
3319
|
+
]
|
|
3320
|
+
},
|
|
3321
|
+
{
|
|
3322
|
+
"name": "-",
|
|
3323
|
+
"type": "CHECK",
|
|
3324
|
+
"def": "CHECK (length(activity_criteria_id) = 36)",
|
|
3325
|
+
"table": "methodology_activity_criteria",
|
|
3326
|
+
"columns": [
|
|
3327
|
+
"activity_criteria_id"
|
|
3328
|
+
]
|
|
3329
|
+
},
|
|
3330
|
+
{
|
|
3331
|
+
"name": "-",
|
|
3332
|
+
"type": "CHECK",
|
|
3333
|
+
"def": "CHECK (length(activity_id) = 36)",
|
|
3334
|
+
"table": "methodology_activity_criteria",
|
|
3335
|
+
"columns": [
|
|
3336
|
+
"activity_id"
|
|
3337
|
+
]
|
|
3338
|
+
},
|
|
3339
|
+
{
|
|
3340
|
+
"name": "-",
|
|
3341
|
+
"type": "CHECK",
|
|
3342
|
+
"def": "CHECK (criteria_type_code = 'completion')",
|
|
3343
|
+
"table": "methodology_activity_criteria",
|
|
3344
|
+
"columns": [
|
|
3345
|
+
"criteria_type_code"
|
|
3346
|
+
]
|
|
3347
|
+
},
|
|
3348
|
+
{
|
|
3349
|
+
"name": "-",
|
|
3350
|
+
"type": "CHECK",
|
|
3351
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
3352
|
+
"table": "methodology_activity_criteria",
|
|
3353
|
+
"columns": [
|
|
3354
|
+
"is_required"
|
|
3355
|
+
]
|
|
3356
|
+
},
|
|
3357
|
+
{
|
|
3358
|
+
"name": "-",
|
|
3359
|
+
"type": "CHECK",
|
|
3360
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
3361
|
+
"table": "methodology_activity_criteria",
|
|
3362
|
+
"columns": [
|
|
3363
|
+
"validation_required"
|
|
3364
|
+
]
|
|
3365
|
+
},
|
|
3366
|
+
{
|
|
3367
|
+
"name": "-",
|
|
3368
|
+
"type": "CHECK",
|
|
3369
|
+
"def": "CHECK (severity_code IN ('info', 'warning', 'error', 'critical'))",
|
|
3370
|
+
"table": "methodology_activity_criteria",
|
|
3371
|
+
"columns": [
|
|
3372
|
+
"severity_code"
|
|
3373
|
+
]
|
|
3374
|
+
},
|
|
3375
|
+
{
|
|
3376
|
+
"name": "-",
|
|
3377
|
+
"type": "CHECK",
|
|
3378
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
3379
|
+
"table": "methodology_activity_criteria",
|
|
3380
|
+
"columns": [
|
|
3381
|
+
"metadata_json"
|
|
3382
|
+
]
|
|
3383
|
+
}
|
|
3384
|
+
],
|
|
3385
|
+
"def": "CREATE TABLE methodology_activity_criteria (\n -- activity criteria 식별자\n activity_criteria_id CHAR(36) PRIMARY KEY\n CHECK (length(activity_criteria_id) = 36),\n\n -- 소속 activity 식별자\n activity_id CHAR(36) NOT NULL\n CHECK (length(activity_id) = 36),\n\n -- criteria 유형 코드\n criteria_type_code VARCHAR(32) NOT NULL DEFAULT 'completion'\n CHECK (criteria_type_code = 'completion'),\n\n -- criteria 이름\n criteria_name VARCHAR(256) NOT NULL,\n\n -- criteria 내용\n criteria_text TEXT NOT NULL,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- 심각도 코드\n severity_code VARCHAR(32) NOT NULL DEFAULT 'error'\n CHECK (severity_code IN ('info', 'warning', 'error', 'critical')),\n\n -- activity criteria 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n FOREIGN KEY (activity_id)\n REFERENCES methodology_activities (activity_id)\n ON DELETE CASCADE,\n\n UNIQUE (activity_id, sort_order)\n)"
|
|
3386
|
+
},
|
|
3387
|
+
{
|
|
3388
|
+
"name": "methodology_handoff_requirements",
|
|
3389
|
+
"type": "table",
|
|
3390
|
+
"comment": "phase, process, stage, activity 간 전달 요구를 관리한다.",
|
|
3391
|
+
"columns": [
|
|
3392
|
+
{
|
|
3393
|
+
"name": "handoff_requirement_id",
|
|
3394
|
+
"type": "CHAR(36)",
|
|
3395
|
+
"nullable": true
|
|
3396
|
+
},
|
|
3397
|
+
{
|
|
3398
|
+
"name": "source_scope_code",
|
|
3399
|
+
"type": "VARCHAR(32)",
|
|
3400
|
+
"nullable": false
|
|
3401
|
+
},
|
|
3402
|
+
{
|
|
3403
|
+
"name": "source_ref_id",
|
|
3404
|
+
"type": "CHAR(36)",
|
|
3405
|
+
"nullable": false
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
"name": "target_scope_code",
|
|
3409
|
+
"type": "VARCHAR(32)",
|
|
3410
|
+
"nullable": false
|
|
3411
|
+
},
|
|
3412
|
+
{
|
|
3413
|
+
"name": "target_ref_id",
|
|
3414
|
+
"type": "CHAR(36)",
|
|
3415
|
+
"nullable": false
|
|
3416
|
+
},
|
|
3417
|
+
{
|
|
3418
|
+
"name": "handoff_type_code",
|
|
3419
|
+
"type": "VARCHAR(32)",
|
|
3420
|
+
"nullable": false
|
|
3421
|
+
},
|
|
3422
|
+
{
|
|
3423
|
+
"name": "handoff_item_name",
|
|
3424
|
+
"type": "VARCHAR(256)",
|
|
3425
|
+
"nullable": false
|
|
3426
|
+
},
|
|
3427
|
+
{
|
|
3428
|
+
"name": "handoff_description",
|
|
3429
|
+
"type": "TEXT",
|
|
3430
|
+
"nullable": true
|
|
3431
|
+
},
|
|
3432
|
+
{
|
|
3433
|
+
"name": "artifact_standard_code",
|
|
3434
|
+
"type": "VARCHAR(128)",
|
|
3435
|
+
"nullable": true
|
|
3436
|
+
},
|
|
3437
|
+
{
|
|
3438
|
+
"name": "artifact_standard_version",
|
|
3439
|
+
"type": "VARCHAR(64)",
|
|
3440
|
+
"nullable": true
|
|
3441
|
+
},
|
|
3442
|
+
{
|
|
3443
|
+
"name": "is_required",
|
|
3444
|
+
"type": "INTEGER",
|
|
3445
|
+
"nullable": false,
|
|
3446
|
+
"default": "1"
|
|
3447
|
+
},
|
|
3448
|
+
{
|
|
3449
|
+
"name": "validation_required",
|
|
3450
|
+
"type": "INTEGER",
|
|
3451
|
+
"nullable": false,
|
|
3452
|
+
"default": "0"
|
|
3453
|
+
},
|
|
3454
|
+
{
|
|
3455
|
+
"name": "sort_order",
|
|
3456
|
+
"type": "INTEGER",
|
|
3457
|
+
"nullable": false,
|
|
3458
|
+
"default": "0"
|
|
3459
|
+
},
|
|
3460
|
+
{
|
|
3461
|
+
"name": "created_at",
|
|
3462
|
+
"type": "DATETIME",
|
|
3463
|
+
"nullable": false,
|
|
3464
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3465
|
+
},
|
|
3466
|
+
{
|
|
3467
|
+
"name": "updated_at",
|
|
3468
|
+
"type": "DATETIME",
|
|
3469
|
+
"nullable": false,
|
|
3470
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3471
|
+
},
|
|
3472
|
+
{
|
|
3473
|
+
"name": "metadata_json",
|
|
3474
|
+
"type": "JSON",
|
|
3475
|
+
"nullable": true
|
|
3476
|
+
}
|
|
3477
|
+
],
|
|
3478
|
+
"indexes": [
|
|
3479
|
+
{
|
|
3480
|
+
"name": "idx_methodology_handoff_requirements_target",
|
|
3481
|
+
"def": "CREATE INDEX idx_methodology_handoff_requirements_target\n ON methodology_handoff_requirements (target_scope_code, target_ref_id)",
|
|
3482
|
+
"table": "methodology_handoff_requirements",
|
|
3483
|
+
"columns": [
|
|
3484
|
+
"target_scope_code",
|
|
3485
|
+
"target_ref_id"
|
|
3486
|
+
]
|
|
3487
|
+
},
|
|
3488
|
+
{
|
|
3489
|
+
"name": "idx_methodology_handoff_requirements_source",
|
|
3490
|
+
"def": "CREATE INDEX idx_methodology_handoff_requirements_source\n ON methodology_handoff_requirements (source_scope_code, source_ref_id)",
|
|
3491
|
+
"table": "methodology_handoff_requirements",
|
|
3492
|
+
"columns": [
|
|
3493
|
+
"source_scope_code",
|
|
3494
|
+
"source_ref_id"
|
|
3495
|
+
]
|
|
3496
|
+
},
|
|
3497
|
+
{
|
|
3498
|
+
"name": "sqlite_autoindex_methodology_handoff_requirements_1",
|
|
3499
|
+
"def": "PRIMARY KEY (handoff_requirement_id)",
|
|
3500
|
+
"table": "methodology_handoff_requirements",
|
|
3501
|
+
"columns": [
|
|
3502
|
+
"handoff_requirement_id"
|
|
3503
|
+
]
|
|
3504
|
+
}
|
|
3505
|
+
],
|
|
3506
|
+
"constraints": [
|
|
3507
|
+
{
|
|
3508
|
+
"name": "handoff_requirement_id",
|
|
3509
|
+
"type": "PRIMARY KEY",
|
|
3510
|
+
"def": "PRIMARY KEY (handoff_requirement_id)",
|
|
3511
|
+
"table": "methodology_handoff_requirements",
|
|
3512
|
+
"columns": [
|
|
3513
|
+
"handoff_requirement_id"
|
|
3514
|
+
]
|
|
3515
|
+
},
|
|
3516
|
+
{
|
|
3517
|
+
"name": "sqlite_autoindex_methodology_handoff_requirements_1",
|
|
3518
|
+
"type": "PRIMARY KEY",
|
|
3519
|
+
"def": "PRIMARY KEY (handoff_requirement_id)",
|
|
3520
|
+
"table": "methodology_handoff_requirements",
|
|
3521
|
+
"columns": [
|
|
3522
|
+
"handoff_requirement_id"
|
|
3523
|
+
]
|
|
3524
|
+
},
|
|
3525
|
+
{
|
|
3526
|
+
"name": "-",
|
|
3527
|
+
"type": "CHECK",
|
|
3528
|
+
"def": "CHECK (length(handoff_requirement_id) = 36)",
|
|
3529
|
+
"table": "methodology_handoff_requirements",
|
|
3530
|
+
"columns": [
|
|
3531
|
+
"handoff_requirement_id"
|
|
3532
|
+
]
|
|
3533
|
+
},
|
|
3534
|
+
{
|
|
3535
|
+
"name": "-",
|
|
3536
|
+
"type": "CHECK",
|
|
3537
|
+
"def": "CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity'))",
|
|
3538
|
+
"table": "methodology_handoff_requirements",
|
|
3539
|
+
"columns": [
|
|
3540
|
+
"source_scope_code"
|
|
3541
|
+
]
|
|
3542
|
+
},
|
|
3543
|
+
{
|
|
3544
|
+
"name": "-",
|
|
3545
|
+
"type": "CHECK",
|
|
3546
|
+
"def": "CHECK (length(source_ref_id) = 36)",
|
|
3547
|
+
"table": "methodology_handoff_requirements",
|
|
3548
|
+
"columns": [
|
|
3549
|
+
"source_ref_id"
|
|
3550
|
+
]
|
|
3551
|
+
},
|
|
3552
|
+
{
|
|
3553
|
+
"name": "-",
|
|
3554
|
+
"type": "CHECK",
|
|
3555
|
+
"def": "CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity'))",
|
|
3556
|
+
"table": "methodology_handoff_requirements",
|
|
3557
|
+
"columns": [
|
|
3558
|
+
"target_scope_code"
|
|
3559
|
+
]
|
|
3560
|
+
},
|
|
3561
|
+
{
|
|
3562
|
+
"name": "-",
|
|
3563
|
+
"type": "CHECK",
|
|
3564
|
+
"def": "CHECK (length(target_ref_id) = 36)",
|
|
3565
|
+
"table": "methodology_handoff_requirements",
|
|
3566
|
+
"columns": [
|
|
3567
|
+
"target_ref_id"
|
|
3568
|
+
]
|
|
3569
|
+
},
|
|
3570
|
+
{
|
|
3571
|
+
"name": "-",
|
|
3572
|
+
"type": "CHECK",
|
|
3573
|
+
"def": "CHECK (handoff_type_code IN ('artifact', 'issue', 'risk', 'decision', 'constraint', 'approval', 'context'))",
|
|
3574
|
+
"table": "methodology_handoff_requirements",
|
|
3575
|
+
"columns": [
|
|
3576
|
+
"handoff_type_code"
|
|
3577
|
+
]
|
|
3578
|
+
},
|
|
3579
|
+
{
|
|
3580
|
+
"name": "-",
|
|
3581
|
+
"type": "CHECK",
|
|
3582
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
3583
|
+
"table": "methodology_handoff_requirements",
|
|
3584
|
+
"columns": [
|
|
3585
|
+
"is_required"
|
|
3586
|
+
]
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
"name": "-",
|
|
3590
|
+
"type": "CHECK",
|
|
3591
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
3592
|
+
"table": "methodology_handoff_requirements",
|
|
3593
|
+
"columns": [
|
|
3594
|
+
"validation_required"
|
|
3595
|
+
]
|
|
3596
|
+
},
|
|
3597
|
+
{
|
|
3598
|
+
"name": "-",
|
|
3599
|
+
"type": "CHECK",
|
|
3600
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
3601
|
+
"table": "methodology_handoff_requirements",
|
|
3602
|
+
"columns": [
|
|
3603
|
+
"metadata_json"
|
|
3604
|
+
]
|
|
3605
|
+
},
|
|
3606
|
+
{
|
|
3607
|
+
"name": "-",
|
|
3608
|
+
"type": "CHECK",
|
|
3609
|
+
"def": "CHECK ( (artifact_standard_code IS NULL AND artifact_standard_version IS NULL) OR (artifact_standard_code IS NOT NULL AND artifact_standard_version IS NOT NULL) )",
|
|
3610
|
+
"table": "methodology_handoff_requirements",
|
|
3611
|
+
"columns": [
|
|
3612
|
+
"artifact_standard_code",
|
|
3613
|
+
"artifact_standard_version"
|
|
3614
|
+
]
|
|
3615
|
+
}
|
|
3616
|
+
],
|
|
3617
|
+
"def": "CREATE TABLE methodology_handoff_requirements (\n -- handoff requirement 식별자\n handoff_requirement_id CHAR(36) PRIMARY KEY\n CHECK (length(handoff_requirement_id) = 36),\n\n -- 전달 원천 scope 코드\n source_scope_code VARCHAR(32) NOT NULL\n CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity')),\n\n -- 전달 원천 참조 식별자\n source_ref_id CHAR(36) NOT NULL\n CHECK (length(source_ref_id) = 36),\n\n -- 전달 대상 scope 코드\n target_scope_code VARCHAR(32) NOT NULL\n CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity')),\n\n -- 전달 대상 참조 식별자\n target_ref_id CHAR(36) NOT NULL\n CHECK (length(target_ref_id) = 36),\n\n -- handoff 유형 코드\n handoff_type_code VARCHAR(32) NOT NULL\n CHECK (handoff_type_code IN ('artifact', 'issue', 'risk', 'decision', 'constraint', 'approval', 'context')),\n\n -- handoff 항목명\n handoff_item_name VARCHAR(256) NOT NULL,\n\n -- handoff 설명\n handoff_description TEXT,\n\n -- artifact standard 코드. artifact 유형 handoff일 때 사용할 수 있다.\n artifact_standard_code VARCHAR(128),\n\n -- artifact standard 버전\n artifact_standard_version VARCHAR(64),\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json)),\n\n CHECK (\n (artifact_standard_code IS NULL AND artifact_standard_version IS NULL)\n OR (artifact_standard_code IS NOT NULL AND artifact_standard_version IS NOT NULL)\n )\n)"
|
|
3618
|
+
},
|
|
3619
|
+
{
|
|
3620
|
+
"name": "methodology_baseline_requirements",
|
|
3621
|
+
"type": "table",
|
|
3622
|
+
"comment": "baseline이 필요한 scope와 trigger를 관리한다.",
|
|
3623
|
+
"columns": [
|
|
3624
|
+
{
|
|
3625
|
+
"name": "baseline_requirement_id",
|
|
3626
|
+
"type": "CHAR(36)",
|
|
3627
|
+
"nullable": true
|
|
3628
|
+
},
|
|
3629
|
+
{
|
|
3630
|
+
"name": "baseline_scope_code",
|
|
3631
|
+
"type": "VARCHAR(32)",
|
|
3632
|
+
"nullable": false
|
|
3633
|
+
},
|
|
3634
|
+
{
|
|
3635
|
+
"name": "baseline_scope_ref_id",
|
|
3636
|
+
"type": "CHAR(36)",
|
|
3637
|
+
"nullable": false
|
|
3638
|
+
},
|
|
3639
|
+
{
|
|
3640
|
+
"name": "baseline_trigger_code",
|
|
3641
|
+
"type": "VARCHAR(32)",
|
|
3642
|
+
"nullable": false
|
|
3643
|
+
},
|
|
3644
|
+
{
|
|
3645
|
+
"name": "baseline_name",
|
|
3646
|
+
"type": "VARCHAR(256)",
|
|
3647
|
+
"nullable": false
|
|
3648
|
+
},
|
|
3649
|
+
{
|
|
3650
|
+
"name": "baseline_description",
|
|
3651
|
+
"type": "TEXT",
|
|
3652
|
+
"nullable": true
|
|
3653
|
+
},
|
|
3654
|
+
{
|
|
3655
|
+
"name": "is_required",
|
|
3656
|
+
"type": "INTEGER",
|
|
3657
|
+
"nullable": false,
|
|
3658
|
+
"default": "1"
|
|
3659
|
+
},
|
|
3660
|
+
{
|
|
3661
|
+
"name": "validation_required",
|
|
3662
|
+
"type": "INTEGER",
|
|
3663
|
+
"nullable": false,
|
|
3664
|
+
"default": "0"
|
|
3665
|
+
},
|
|
3666
|
+
{
|
|
3667
|
+
"name": "sort_order",
|
|
3668
|
+
"type": "INTEGER",
|
|
3669
|
+
"nullable": false,
|
|
3670
|
+
"default": "0"
|
|
3671
|
+
},
|
|
3672
|
+
{
|
|
3673
|
+
"name": "created_at",
|
|
3674
|
+
"type": "DATETIME",
|
|
3675
|
+
"nullable": false,
|
|
3676
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3677
|
+
},
|
|
3678
|
+
{
|
|
3679
|
+
"name": "updated_at",
|
|
3680
|
+
"type": "DATETIME",
|
|
3681
|
+
"nullable": false,
|
|
3682
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3683
|
+
},
|
|
3684
|
+
{
|
|
3685
|
+
"name": "metadata_json",
|
|
3686
|
+
"type": "JSON",
|
|
3687
|
+
"nullable": true
|
|
3688
|
+
}
|
|
3689
|
+
],
|
|
3690
|
+
"indexes": [
|
|
3691
|
+
{
|
|
3692
|
+
"name": "idx_methodology_baseline_requirements_scope",
|
|
3693
|
+
"def": "CREATE INDEX idx_methodology_baseline_requirements_scope\n ON methodology_baseline_requirements (baseline_scope_code, baseline_scope_ref_id)",
|
|
3694
|
+
"table": "methodology_baseline_requirements",
|
|
3695
|
+
"columns": [
|
|
3696
|
+
"baseline_scope_code",
|
|
3697
|
+
"baseline_scope_ref_id"
|
|
3698
|
+
]
|
|
3699
|
+
},
|
|
3700
|
+
{
|
|
3701
|
+
"name": "sqlite_autoindex_methodology_baseline_requirements_1",
|
|
3702
|
+
"def": "PRIMARY KEY (baseline_requirement_id)",
|
|
3703
|
+
"table": "methodology_baseline_requirements",
|
|
3704
|
+
"columns": [
|
|
3705
|
+
"baseline_requirement_id"
|
|
3706
|
+
]
|
|
3707
|
+
}
|
|
3708
|
+
],
|
|
3709
|
+
"constraints": [
|
|
3710
|
+
{
|
|
3711
|
+
"name": "baseline_requirement_id",
|
|
3712
|
+
"type": "PRIMARY KEY",
|
|
3713
|
+
"def": "PRIMARY KEY (baseline_requirement_id)",
|
|
3714
|
+
"table": "methodology_baseline_requirements",
|
|
3715
|
+
"columns": [
|
|
3716
|
+
"baseline_requirement_id"
|
|
3717
|
+
]
|
|
3718
|
+
},
|
|
3719
|
+
{
|
|
3720
|
+
"name": "sqlite_autoindex_methodology_baseline_requirements_1",
|
|
3721
|
+
"type": "PRIMARY KEY",
|
|
3722
|
+
"def": "PRIMARY KEY (baseline_requirement_id)",
|
|
3723
|
+
"table": "methodology_baseline_requirements",
|
|
3724
|
+
"columns": [
|
|
3725
|
+
"baseline_requirement_id"
|
|
3726
|
+
]
|
|
3727
|
+
},
|
|
3728
|
+
{
|
|
3729
|
+
"name": "-",
|
|
3730
|
+
"type": "CHECK",
|
|
3731
|
+
"def": "CHECK (length(baseline_requirement_id) = 36)",
|
|
3732
|
+
"table": "methodology_baseline_requirements",
|
|
3733
|
+
"columns": [
|
|
3734
|
+
"baseline_requirement_id"
|
|
3735
|
+
]
|
|
3736
|
+
},
|
|
3737
|
+
{
|
|
3738
|
+
"name": "-",
|
|
3739
|
+
"type": "CHECK",
|
|
3740
|
+
"def": "CHECK (baseline_scope_code IN ('phase', 'process', 'stage', 'activity'))",
|
|
3741
|
+
"table": "methodology_baseline_requirements",
|
|
3742
|
+
"columns": [
|
|
3743
|
+
"baseline_scope_code"
|
|
3744
|
+
]
|
|
3745
|
+
},
|
|
3746
|
+
{
|
|
3747
|
+
"name": "-",
|
|
3748
|
+
"type": "CHECK",
|
|
3749
|
+
"def": "CHECK (length(baseline_scope_ref_id) = 36)",
|
|
3750
|
+
"table": "methodology_baseline_requirements",
|
|
3751
|
+
"columns": [
|
|
3752
|
+
"baseline_scope_ref_id"
|
|
3753
|
+
]
|
|
3754
|
+
},
|
|
3755
|
+
{
|
|
3756
|
+
"name": "-",
|
|
3757
|
+
"type": "CHECK",
|
|
3758
|
+
"def": "CHECK (baseline_trigger_code IN ('entry', 'exit', 'gate', 'handoff', 'approval', 'manual'))",
|
|
3759
|
+
"table": "methodology_baseline_requirements",
|
|
3760
|
+
"columns": [
|
|
3761
|
+
"baseline_trigger_code"
|
|
3762
|
+
]
|
|
3763
|
+
},
|
|
3764
|
+
{
|
|
3765
|
+
"name": "-",
|
|
3766
|
+
"type": "CHECK",
|
|
3767
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
3768
|
+
"table": "methodology_baseline_requirements",
|
|
3769
|
+
"columns": [
|
|
3770
|
+
"is_required"
|
|
3771
|
+
]
|
|
3772
|
+
},
|
|
3773
|
+
{
|
|
3774
|
+
"name": "-",
|
|
3775
|
+
"type": "CHECK",
|
|
3776
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
3777
|
+
"table": "methodology_baseline_requirements",
|
|
3778
|
+
"columns": [
|
|
3779
|
+
"validation_required"
|
|
3780
|
+
]
|
|
3781
|
+
},
|
|
3782
|
+
{
|
|
3783
|
+
"name": "-",
|
|
3784
|
+
"type": "CHECK",
|
|
3785
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
3786
|
+
"table": "methodology_baseline_requirements",
|
|
3787
|
+
"columns": [
|
|
3788
|
+
"metadata_json"
|
|
3789
|
+
]
|
|
3790
|
+
}
|
|
3791
|
+
],
|
|
3792
|
+
"def": "CREATE TABLE methodology_baseline_requirements (\n -- baseline requirement 식별자\n baseline_requirement_id CHAR(36) PRIMARY KEY\n CHECK (length(baseline_requirement_id) = 36),\n\n -- baseline scope 코드\n baseline_scope_code VARCHAR(32) NOT NULL\n CHECK (baseline_scope_code IN ('phase', 'process', 'stage', 'activity')),\n\n -- baseline scope 참조 식별자\n baseline_scope_ref_id CHAR(36) NOT NULL\n CHECK (length(baseline_scope_ref_id) = 36),\n\n -- baseline trigger 코드\n baseline_trigger_code VARCHAR(32) NOT NULL\n CHECK (baseline_trigger_code IN ('entry', 'exit', 'gate', 'handoff', 'approval', 'manual')),\n\n -- baseline 이름\n baseline_name VARCHAR(256) NOT NULL,\n\n -- baseline 설명\n baseline_description TEXT,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json))\n)"
|
|
3793
|
+
},
|
|
3794
|
+
{
|
|
3795
|
+
"name": "methodology_trace_policies",
|
|
3796
|
+
"type": "table",
|
|
3797
|
+
"comment": "실제 trace link가 아니라 trace 필요 관계 정책을 관리한다.",
|
|
3798
|
+
"columns": [
|
|
3799
|
+
{
|
|
3800
|
+
"name": "trace_policy_id",
|
|
3801
|
+
"type": "CHAR(36)",
|
|
3802
|
+
"nullable": true
|
|
3803
|
+
},
|
|
3804
|
+
{
|
|
3805
|
+
"name": "policy_scope_code",
|
|
3806
|
+
"type": "VARCHAR(32)",
|
|
3807
|
+
"nullable": false
|
|
3808
|
+
},
|
|
3809
|
+
{
|
|
3810
|
+
"name": "policy_scope_ref_id",
|
|
3811
|
+
"type": "CHAR(36)",
|
|
3812
|
+
"nullable": false
|
|
3813
|
+
},
|
|
3814
|
+
{
|
|
3815
|
+
"name": "source_scope_code",
|
|
3816
|
+
"type": "VARCHAR(64)",
|
|
3817
|
+
"nullable": false
|
|
3818
|
+
},
|
|
3819
|
+
{
|
|
3820
|
+
"name": "target_scope_code",
|
|
3821
|
+
"type": "VARCHAR(64)",
|
|
3822
|
+
"nullable": false
|
|
3823
|
+
},
|
|
3824
|
+
{
|
|
3825
|
+
"name": "trace_type_code",
|
|
3826
|
+
"type": "VARCHAR(32)",
|
|
3827
|
+
"nullable": false
|
|
3828
|
+
},
|
|
3829
|
+
{
|
|
3830
|
+
"name": "policy_name",
|
|
3831
|
+
"type": "VARCHAR(256)",
|
|
3832
|
+
"nullable": false
|
|
3833
|
+
},
|
|
3834
|
+
{
|
|
3835
|
+
"name": "policy_description",
|
|
3836
|
+
"type": "TEXT",
|
|
3837
|
+
"nullable": true
|
|
3838
|
+
},
|
|
3839
|
+
{
|
|
3840
|
+
"name": "is_required",
|
|
3841
|
+
"type": "INTEGER",
|
|
3842
|
+
"nullable": false,
|
|
3843
|
+
"default": "1"
|
|
3844
|
+
},
|
|
3845
|
+
{
|
|
3846
|
+
"name": "validation_required",
|
|
3847
|
+
"type": "INTEGER",
|
|
3848
|
+
"nullable": false,
|
|
3849
|
+
"default": "0"
|
|
3850
|
+
},
|
|
3851
|
+
{
|
|
3852
|
+
"name": "severity_code",
|
|
3853
|
+
"type": "VARCHAR(32)",
|
|
3854
|
+
"nullable": false,
|
|
3855
|
+
"default": "'error'"
|
|
3856
|
+
},
|
|
3857
|
+
{
|
|
3858
|
+
"name": "sort_order",
|
|
3859
|
+
"type": "INTEGER",
|
|
3860
|
+
"nullable": false,
|
|
3861
|
+
"default": "0"
|
|
3862
|
+
},
|
|
3863
|
+
{
|
|
3864
|
+
"name": "created_at",
|
|
3865
|
+
"type": "DATETIME",
|
|
3866
|
+
"nullable": false,
|
|
3867
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3868
|
+
},
|
|
3869
|
+
{
|
|
3870
|
+
"name": "updated_at",
|
|
3871
|
+
"type": "DATETIME",
|
|
3872
|
+
"nullable": false,
|
|
3873
|
+
"default": "CURRENT_TIMESTAMP"
|
|
3874
|
+
},
|
|
3875
|
+
{
|
|
3876
|
+
"name": "metadata_json",
|
|
3877
|
+
"type": "JSON",
|
|
3878
|
+
"nullable": true
|
|
3879
|
+
}
|
|
3880
|
+
],
|
|
3881
|
+
"indexes": [
|
|
3882
|
+
{
|
|
3883
|
+
"name": "idx_methodology_trace_policies_policy_scope",
|
|
3884
|
+
"def": "CREATE INDEX idx_methodology_trace_policies_policy_scope\n ON methodology_trace_policies (policy_scope_code, policy_scope_ref_id)",
|
|
3885
|
+
"table": "methodology_trace_policies",
|
|
3886
|
+
"columns": [
|
|
3887
|
+
"policy_scope_code",
|
|
3888
|
+
"policy_scope_ref_id"
|
|
3889
|
+
]
|
|
3890
|
+
},
|
|
3891
|
+
{
|
|
3892
|
+
"name": "sqlite_autoindex_methodology_trace_policies_1",
|
|
3893
|
+
"def": "PRIMARY KEY (trace_policy_id)",
|
|
3894
|
+
"table": "methodology_trace_policies",
|
|
3895
|
+
"columns": [
|
|
3896
|
+
"trace_policy_id"
|
|
3897
|
+
]
|
|
3898
|
+
}
|
|
3899
|
+
],
|
|
3900
|
+
"constraints": [
|
|
3901
|
+
{
|
|
3902
|
+
"name": "trace_policy_id",
|
|
3903
|
+
"type": "PRIMARY KEY",
|
|
3904
|
+
"def": "PRIMARY KEY (trace_policy_id)",
|
|
3905
|
+
"table": "methodology_trace_policies",
|
|
3906
|
+
"columns": [
|
|
3907
|
+
"trace_policy_id"
|
|
3908
|
+
]
|
|
3909
|
+
},
|
|
3910
|
+
{
|
|
3911
|
+
"name": "sqlite_autoindex_methodology_trace_policies_1",
|
|
3912
|
+
"type": "PRIMARY KEY",
|
|
3913
|
+
"def": "PRIMARY KEY (trace_policy_id)",
|
|
3914
|
+
"table": "methodology_trace_policies",
|
|
3915
|
+
"columns": [
|
|
3916
|
+
"trace_policy_id"
|
|
3917
|
+
]
|
|
3918
|
+
},
|
|
3919
|
+
{
|
|
3920
|
+
"name": "-",
|
|
3921
|
+
"type": "CHECK",
|
|
3922
|
+
"def": "CHECK (length(trace_policy_id) = 36)",
|
|
3923
|
+
"table": "methodology_trace_policies",
|
|
3924
|
+
"columns": [
|
|
3925
|
+
"trace_policy_id"
|
|
3926
|
+
]
|
|
3927
|
+
},
|
|
3928
|
+
{
|
|
3929
|
+
"name": "-",
|
|
3930
|
+
"type": "CHECK",
|
|
3931
|
+
"def": "CHECK (policy_scope_code IN ('methodology', 'lifecycle', 'phase', 'process', 'stage', 'activity'))",
|
|
3932
|
+
"table": "methodology_trace_policies",
|
|
3933
|
+
"columns": [
|
|
3934
|
+
"policy_scope_code"
|
|
3935
|
+
]
|
|
3936
|
+
},
|
|
3937
|
+
{
|
|
3938
|
+
"name": "-",
|
|
3939
|
+
"type": "CHECK",
|
|
3940
|
+
"def": "CHECK (length(policy_scope_ref_id) = 36)",
|
|
3941
|
+
"table": "methodology_trace_policies",
|
|
3942
|
+
"columns": [
|
|
3943
|
+
"policy_scope_ref_id"
|
|
3944
|
+
]
|
|
3945
|
+
},
|
|
3946
|
+
{
|
|
3947
|
+
"name": "-",
|
|
3948
|
+
"type": "CHECK",
|
|
3949
|
+
"def": "CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity', 'artifact_requirement', 'artifact_standard'))",
|
|
3950
|
+
"table": "methodology_trace_policies",
|
|
3951
|
+
"columns": [
|
|
3952
|
+
"source_scope_code"
|
|
3953
|
+
]
|
|
3954
|
+
},
|
|
3955
|
+
{
|
|
3956
|
+
"name": "-",
|
|
3957
|
+
"type": "CHECK",
|
|
3958
|
+
"def": "CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity', 'artifact_requirement', 'artifact_standard'))",
|
|
3959
|
+
"table": "methodology_trace_policies",
|
|
3960
|
+
"columns": [
|
|
3961
|
+
"target_scope_code"
|
|
3962
|
+
]
|
|
3963
|
+
},
|
|
3964
|
+
{
|
|
3965
|
+
"name": "-",
|
|
3966
|
+
"type": "CHECK",
|
|
3967
|
+
"def": "CHECK (trace_type_code IN ('derives', 'produces', 'consumes', 'validates', 'hands_off', 'refines', 'impacts'))",
|
|
3968
|
+
"table": "methodology_trace_policies",
|
|
3969
|
+
"columns": [
|
|
3970
|
+
"trace_type_code"
|
|
3971
|
+
]
|
|
3972
|
+
},
|
|
3973
|
+
{
|
|
3974
|
+
"name": "-",
|
|
3975
|
+
"type": "CHECK",
|
|
3976
|
+
"def": "CHECK (is_required IN (0, 1))",
|
|
3977
|
+
"table": "methodology_trace_policies",
|
|
3978
|
+
"columns": [
|
|
3979
|
+
"is_required"
|
|
3980
|
+
]
|
|
3981
|
+
},
|
|
3982
|
+
{
|
|
3983
|
+
"name": "-",
|
|
3984
|
+
"type": "CHECK",
|
|
3985
|
+
"def": "CHECK (validation_required IN (0, 1))",
|
|
3986
|
+
"table": "methodology_trace_policies",
|
|
3987
|
+
"columns": [
|
|
3988
|
+
"validation_required"
|
|
3989
|
+
]
|
|
3990
|
+
},
|
|
3991
|
+
{
|
|
3992
|
+
"name": "-",
|
|
3993
|
+
"type": "CHECK",
|
|
3994
|
+
"def": "CHECK (severity_code IN ('info', 'warning', 'error', 'critical'))",
|
|
3995
|
+
"table": "methodology_trace_policies",
|
|
3996
|
+
"columns": [
|
|
3997
|
+
"severity_code"
|
|
3998
|
+
]
|
|
3999
|
+
},
|
|
4000
|
+
{
|
|
4001
|
+
"name": "-",
|
|
4002
|
+
"type": "CHECK",
|
|
4003
|
+
"def": "CHECK (metadata_json IS NULL OR json_valid(metadata_json))",
|
|
4004
|
+
"table": "methodology_trace_policies",
|
|
4005
|
+
"columns": [
|
|
4006
|
+
"metadata_json"
|
|
4007
|
+
]
|
|
4008
|
+
}
|
|
4009
|
+
],
|
|
4010
|
+
"def": "CREATE TABLE methodology_trace_policies (\n -- trace policy 식별자\n trace_policy_id CHAR(36) PRIMARY KEY\n CHECK (length(trace_policy_id) = 36),\n\n -- policy 적용 scope 코드\n policy_scope_code VARCHAR(32) NOT NULL\n CHECK (policy_scope_code IN ('methodology', 'lifecycle', 'phase', 'process', 'stage', 'activity')),\n\n -- policy 적용 scope 참조 식별자\n policy_scope_ref_id CHAR(36) NOT NULL\n CHECK (length(policy_scope_ref_id) = 36),\n\n -- trace source scope 코드\n source_scope_code VARCHAR(64) NOT NULL\n CHECK (source_scope_code IN ('phase', 'process', 'stage', 'activity', 'artifact_requirement', 'artifact_standard')),\n\n -- trace target scope 코드\n target_scope_code VARCHAR(64) NOT NULL\n CHECK (target_scope_code IN ('phase', 'process', 'stage', 'activity', 'artifact_requirement', 'artifact_standard')),\n\n -- trace 유형 코드\n trace_type_code VARCHAR(32) NOT NULL\n CHECK (trace_type_code IN ('derives', 'produces', 'consumes', 'validates', 'hands_off', 'refines', 'impacts')),\n\n -- policy 이름\n policy_name VARCHAR(256) NOT NULL,\n\n -- policy 설명\n policy_description TEXT,\n\n -- 필수 여부\n is_required INTEGER NOT NULL DEFAULT 1\n CHECK (is_required IN (0, 1)),\n\n -- validation 필수 여부\n validation_required INTEGER NOT NULL DEFAULT 0\n CHECK (validation_required IN (0, 1)),\n\n -- 심각도 코드\n severity_code VARCHAR(32) NOT NULL DEFAULT 'error'\n CHECK (severity_code IN ('info', 'warning', 'error', 'critical')),\n\n -- 정렬 순서\n sort_order INTEGER NOT NULL DEFAULT 0,\n\n -- 생성 시각\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 수정 시각\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\n -- 확장 메타데이터\n metadata_json JSON\n CHECK (metadata_json IS NULL OR json_valid(metadata_json))\n)"
|
|
4011
|
+
}
|
|
4012
|
+
],
|
|
4013
|
+
"relations": [
|
|
4014
|
+
{
|
|
4015
|
+
"table": "methodology_codes",
|
|
4016
|
+
"columns": [
|
|
4017
|
+
"code_group_code"
|
|
4018
|
+
],
|
|
4019
|
+
"cardinality": "zero_or_one",
|
|
4020
|
+
"parent_table": "methodology_code_groups",
|
|
4021
|
+
"parent_columns": [
|
|
4022
|
+
"code_group_code"
|
|
4023
|
+
],
|
|
4024
|
+
"parent_cardinality": "exactly_one",
|
|
4025
|
+
"def": "FOREIGN KEY (code_group_code) REFERENCES methodology_code_groups (code_group_code) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4026
|
+
},
|
|
4027
|
+
{
|
|
4028
|
+
"table": "methodology_common_blueprint_policies",
|
|
4029
|
+
"columns": [
|
|
4030
|
+
"methodology_id"
|
|
4031
|
+
],
|
|
4032
|
+
"cardinality": "zero_or_more",
|
|
4033
|
+
"parent_table": "methodology_methodologies",
|
|
4034
|
+
"parent_columns": [
|
|
4035
|
+
"methodology_id"
|
|
4036
|
+
],
|
|
4037
|
+
"parent_cardinality": "exactly_one",
|
|
4038
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4039
|
+
},
|
|
4040
|
+
{
|
|
4041
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
4042
|
+
"columns": [
|
|
4043
|
+
"parent_policy_node_id"
|
|
4044
|
+
],
|
|
4045
|
+
"cardinality": "zero_or_more",
|
|
4046
|
+
"parent_table": "methodology_common_blueprint_policy_nodes",
|
|
4047
|
+
"parent_columns": [
|
|
4048
|
+
"common_blueprint_policy_node_id"
|
|
4049
|
+
],
|
|
4050
|
+
"parent_cardinality": "zero_or_one",
|
|
4051
|
+
"def": "FOREIGN KEY (parent_policy_node_id) REFERENCES methodology_common_blueprint_policy_nodes (common_blueprint_policy_node_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4052
|
+
},
|
|
4053
|
+
{
|
|
4054
|
+
"table": "methodology_common_blueprint_policy_nodes",
|
|
4055
|
+
"columns": [
|
|
4056
|
+
"common_blueprint_policy_id"
|
|
4057
|
+
],
|
|
4058
|
+
"cardinality": "zero_or_more",
|
|
4059
|
+
"parent_table": "methodology_common_blueprint_policies",
|
|
4060
|
+
"parent_columns": [
|
|
4061
|
+
"common_blueprint_policy_id"
|
|
4062
|
+
],
|
|
4063
|
+
"parent_cardinality": "exactly_one",
|
|
4064
|
+
"def": "FOREIGN KEY (common_blueprint_policy_id) REFERENCES methodology_common_blueprint_policies (common_blueprint_policy_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4065
|
+
},
|
|
4066
|
+
{
|
|
4067
|
+
"table": "methodology_lifecycles",
|
|
4068
|
+
"columns": [
|
|
4069
|
+
"methodology_id"
|
|
4070
|
+
],
|
|
4071
|
+
"cardinality": "zero_or_more",
|
|
4072
|
+
"parent_table": "methodology_methodologies",
|
|
4073
|
+
"parent_columns": [
|
|
4074
|
+
"methodology_id"
|
|
4075
|
+
],
|
|
4076
|
+
"parent_cardinality": "exactly_one",
|
|
4077
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4078
|
+
},
|
|
4079
|
+
{
|
|
4080
|
+
"table": "methodology_phases",
|
|
4081
|
+
"columns": [
|
|
4082
|
+
"lifecycle_id"
|
|
4083
|
+
],
|
|
4084
|
+
"cardinality": "zero_or_more",
|
|
4085
|
+
"parent_table": "methodology_lifecycles",
|
|
4086
|
+
"parent_columns": [
|
|
4087
|
+
"lifecycle_id"
|
|
4088
|
+
],
|
|
4089
|
+
"parent_cardinality": "exactly_one",
|
|
4090
|
+
"def": "FOREIGN KEY (lifecycle_id) REFERENCES methodology_lifecycles (lifecycle_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4091
|
+
},
|
|
4092
|
+
{
|
|
4093
|
+
"table": "methodology_processes",
|
|
4094
|
+
"columns": [
|
|
4095
|
+
"methodology_id"
|
|
4096
|
+
],
|
|
4097
|
+
"cardinality": "zero_or_more",
|
|
4098
|
+
"parent_table": "methodology_methodologies",
|
|
4099
|
+
"parent_columns": [
|
|
4100
|
+
"methodology_id"
|
|
4101
|
+
],
|
|
4102
|
+
"parent_cardinality": "exactly_one",
|
|
4103
|
+
"def": "FOREIGN KEY (methodology_id) REFERENCES methodology_methodologies (methodology_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4104
|
+
},
|
|
4105
|
+
{
|
|
4106
|
+
"table": "methodology_phase_processes",
|
|
4107
|
+
"columns": [
|
|
4108
|
+
"process_id"
|
|
4109
|
+
],
|
|
4110
|
+
"cardinality": "zero_or_more",
|
|
4111
|
+
"parent_table": "methodology_processes",
|
|
4112
|
+
"parent_columns": [
|
|
4113
|
+
"process_id"
|
|
4114
|
+
],
|
|
4115
|
+
"parent_cardinality": "exactly_one",
|
|
4116
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4117
|
+
},
|
|
4118
|
+
{
|
|
4119
|
+
"table": "methodology_phase_processes",
|
|
4120
|
+
"columns": [
|
|
4121
|
+
"phase_id"
|
|
4122
|
+
],
|
|
4123
|
+
"cardinality": "zero_or_more",
|
|
4124
|
+
"parent_table": "methodology_phases",
|
|
4125
|
+
"parent_columns": [
|
|
4126
|
+
"phase_id"
|
|
4127
|
+
],
|
|
4128
|
+
"parent_cardinality": "exactly_one",
|
|
4129
|
+
"def": "FOREIGN KEY (phase_id) REFERENCES methodology_phases (phase_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4130
|
+
},
|
|
4131
|
+
{
|
|
4132
|
+
"table": "methodology_activities",
|
|
4133
|
+
"columns": [
|
|
4134
|
+
"process_id"
|
|
4135
|
+
],
|
|
4136
|
+
"cardinality": "zero_or_more",
|
|
4137
|
+
"parent_table": "methodology_processes",
|
|
4138
|
+
"parent_columns": [
|
|
4139
|
+
"process_id"
|
|
4140
|
+
],
|
|
4141
|
+
"parent_cardinality": "exactly_one",
|
|
4142
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4143
|
+
},
|
|
4144
|
+
{
|
|
4145
|
+
"table": "methodology_steps",
|
|
4146
|
+
"columns": [
|
|
4147
|
+
"activity_id"
|
|
4148
|
+
],
|
|
4149
|
+
"cardinality": "zero_or_more",
|
|
4150
|
+
"parent_table": "methodology_activities",
|
|
4151
|
+
"parent_columns": [
|
|
4152
|
+
"activity_id"
|
|
4153
|
+
],
|
|
4154
|
+
"parent_cardinality": "exactly_one",
|
|
4155
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4156
|
+
},
|
|
4157
|
+
{
|
|
4158
|
+
"table": "methodology_stages",
|
|
4159
|
+
"columns": [
|
|
4160
|
+
"process_id"
|
|
4161
|
+
],
|
|
4162
|
+
"cardinality": "zero_or_more",
|
|
4163
|
+
"parent_table": "methodology_processes",
|
|
4164
|
+
"parent_columns": [
|
|
4165
|
+
"process_id"
|
|
4166
|
+
],
|
|
4167
|
+
"parent_cardinality": "exactly_one",
|
|
4168
|
+
"def": "FOREIGN KEY (process_id) REFERENCES methodology_processes (process_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4169
|
+
},
|
|
4170
|
+
{
|
|
4171
|
+
"table": "methodology_stage_activities",
|
|
4172
|
+
"columns": [
|
|
4173
|
+
"activity_id"
|
|
4174
|
+
],
|
|
4175
|
+
"cardinality": "zero_or_more",
|
|
4176
|
+
"parent_table": "methodology_activities",
|
|
4177
|
+
"parent_columns": [
|
|
4178
|
+
"activity_id"
|
|
4179
|
+
],
|
|
4180
|
+
"parent_cardinality": "exactly_one",
|
|
4181
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4182
|
+
},
|
|
4183
|
+
{
|
|
4184
|
+
"table": "methodology_stage_activities",
|
|
4185
|
+
"columns": [
|
|
4186
|
+
"stage_id"
|
|
4187
|
+
],
|
|
4188
|
+
"cardinality": "zero_or_more",
|
|
4189
|
+
"parent_table": "methodology_stages",
|
|
4190
|
+
"parent_columns": [
|
|
4191
|
+
"stage_id"
|
|
4192
|
+
],
|
|
4193
|
+
"parent_cardinality": "exactly_one",
|
|
4194
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4195
|
+
},
|
|
4196
|
+
{
|
|
4197
|
+
"table": "methodology_activity_artifact_requirements",
|
|
4198
|
+
"columns": [
|
|
4199
|
+
"activity_id"
|
|
4200
|
+
],
|
|
4201
|
+
"cardinality": "zero_or_more",
|
|
4202
|
+
"parent_table": "methodology_activities",
|
|
4203
|
+
"parent_columns": [
|
|
4204
|
+
"activity_id"
|
|
4205
|
+
],
|
|
4206
|
+
"parent_cardinality": "exactly_one",
|
|
4207
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4208
|
+
},
|
|
4209
|
+
{
|
|
4210
|
+
"table": "methodology_stage_artifact_requirements",
|
|
4211
|
+
"columns": [
|
|
4212
|
+
"stage_id"
|
|
4213
|
+
],
|
|
4214
|
+
"cardinality": "zero_or_more",
|
|
4215
|
+
"parent_table": "methodology_stages",
|
|
4216
|
+
"parent_columns": [
|
|
4217
|
+
"stage_id"
|
|
4218
|
+
],
|
|
4219
|
+
"parent_cardinality": "exactly_one",
|
|
4220
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4221
|
+
},
|
|
4222
|
+
{
|
|
4223
|
+
"table": "methodology_stage_criteria",
|
|
4224
|
+
"columns": [
|
|
4225
|
+
"stage_id"
|
|
4226
|
+
],
|
|
4227
|
+
"cardinality": "zero_or_more",
|
|
4228
|
+
"parent_table": "methodology_stages",
|
|
4229
|
+
"parent_columns": [
|
|
4230
|
+
"stage_id"
|
|
4231
|
+
],
|
|
4232
|
+
"parent_cardinality": "exactly_one",
|
|
4233
|
+
"def": "FOREIGN KEY (stage_id) REFERENCES methodology_stages (stage_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4234
|
+
},
|
|
4235
|
+
{
|
|
4236
|
+
"table": "methodology_activity_criteria",
|
|
4237
|
+
"columns": [
|
|
4238
|
+
"activity_id"
|
|
4239
|
+
],
|
|
4240
|
+
"cardinality": "zero_or_more",
|
|
4241
|
+
"parent_table": "methodology_activities",
|
|
4242
|
+
"parent_columns": [
|
|
4243
|
+
"activity_id"
|
|
4244
|
+
],
|
|
4245
|
+
"parent_cardinality": "exactly_one",
|
|
4246
|
+
"def": "FOREIGN KEY (activity_id) REFERENCES methodology_activities (activity_id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
|
|
4247
|
+
}
|
|
4248
|
+
],
|
|
4249
|
+
"driver": {
|
|
4250
|
+
"name": "sqlite",
|
|
4251
|
+
"database_version": "3.51.3"
|
|
4252
|
+
}
|
|
4253
|
+
}
|