diff options
Diffstat (limited to 'db')
| -rw-r--r-- | db/schema/SWP/swp-documents.ts | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/db/schema/SWP/swp-documents.ts b/db/schema/SWP/swp-documents.ts index 2c7d06b0..c7661ff6 100644 --- a/db/schema/SWP/swp-documents.ts +++ b/db/schema/SWP/swp-documents.ts @@ -32,8 +32,9 @@ export const syncStatusEnum = pgEnum("swp_sync_status", [ export const swpDocuments = swpSchema.table( "swp_documents", { - // Primary Key - DOC_NO: varchar("DOC_NO", { length: 1000 }).primaryKey(), + // Composite Primary Key: DOC_NO + PROJ_NO + DOC_NO: varchar("DOC_NO", { length: 1000 }).notNull(), + PROJ_NO: varchar("PROJ_NO", { length: 1000 }).notNull(), // 문서 기본 정보 DOC_TITLE: varchar("DOC_TITLE", { length: 1000 }).notNull(), @@ -43,7 +44,6 @@ export const swpDocuments = swpSchema.table( SHI_DOC_NO: varchar("SHI_DOC_NO", { length: 1000 }), // 프로젝트 정보 - PROJ_NO: varchar("PROJ_NO", { length: 1000 }).notNull(), PROJ_NM: varchar("PROJ_NM", { length: 1000 }), PKG_NO: varchar("PKG_NO", { length: 1000 }), @@ -89,6 +89,9 @@ export const swpDocuments = swpSchema.table( updated_at: timestamp("updated_at").defaultNow().notNull(), }, (table) => ({ + // Composite Primary Key + pk: uniqueIndex("swp_documents_pk").on(table.DOC_NO, table.PROJ_NO), + // Indexes projNoIdx: index("swp_documents_proj_no_idx").on(table.PROJ_NO), vndrCdIdx: index("swp_documents_vndr_cd_idx").on(table.VNDR_CD), pkgNoIdx: index("swp_documents_pkg_no_idx").on(table.PKG_NO), @@ -107,10 +110,8 @@ export const swpDocumentRevisions = swpSchema.table( // Primary Key id: serial("id").primaryKey(), - // Foreign Key - DOC_NO: varchar("DOC_NO", { length: 1000 }) - .notNull() - .references(() => swpDocuments.DOC_NO, { onDelete: "cascade" }), + // Document Reference (NO FK - 외래키 제거) + DOC_NO: varchar("DOC_NO", { length: 1000 }).notNull(), // 리비전 정보 REV_NO: varchar("REV_NO", { length: 1000 }).notNull(), |
