{"id":2011,"date":"2026-04-06T21:19:59","date_gmt":"2026-04-06T21:19:59","guid":{"rendered":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/"},"modified":"2026-04-06T21:19:59","modified_gmt":"2026-04-06T21:19:59","slug":"best-practices-documenting-erd-changes-git-workflows","status":"publish","type":"post","link":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/","title":{"rendered":"C\u00e1c Th\u1ef1c Ti\u1ec5n T\u1ed1t Nh\u1ea5t \u0111\u1ec3 Ghi Ch\u00e9p C\u00e1c Thay \u0110\u1ed5i trong S\u01a1 \u0110\u1ed3 M\u1ed1i Quan H\u1ec7 Th\u1ef1c Th\u1ec3 trong C\u00e1c Quy Tr\u00ecnh L\u00e0m Vi\u1ec7c D\u1ef1a tr\u00ean Git"},"content":{"rendered":"<p>Trong ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i, l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u quan tr\u1ecdng kh\u00f4ng k\u00e9m g\u00ec m\u00e3 ngu\u1ed3n \u1ee9ng d\u1ee5ng. Tuy nhi\u00ean, n\u00f3 th\u01b0\u1eddng b\u1ecb b\u1ecf qua trong c\u00e1c chi\u1ebfn l\u01b0\u1ee3c ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n. Khi c\u00e1c \u0111\u1ed9i ng\u0169 coi s\u01a1 \u0111\u1ed3 m\u1ed1i quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD) l\u00e0 t\u00e0i li\u1ec7u t\u0129nh thay v\u00ec c\u00e1c t\u00e1c ph\u1ea9m s\u1ed1ng \u0111\u1ed9ng, h\u1ecd s\u1ebd t\u1ea1o ra nh\u1eefng r\u1ee7i ro nghi\u00eam tr\u1ecdng li\u00ean quan \u0111\u1ebfn t\u00ednh to\u00e0n v\u1eb9n d\u1eef li\u1ec7u, xung \u0111\u1ed9t h\u1ee3p t\u00e1c v\u00e0 th\u1ea5t b\u1ea1i tri\u1ec3n khai. H\u01b0\u1edbng d\u1eabn n\u00e0y n\u00eau r\u00f5 m\u1ed9t chi\u1ebfn l\u01b0\u1ee3c v\u1eefng ch\u1eafc \u0111\u1ec3 t\u00edch h\u1ee3p t\u00e0i li\u1ec7u ERD v\u00e0o h\u1ec7 th\u1ed1ng ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n, \u0111\u1ea3m b\u1ea3o qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n l\u01b0\u1ee3c \u0111\u1ed3 lu\u00f4n minh b\u1ea1ch, c\u00f3 th\u1ec3 truy v\u1ebft v\u00e0 h\u1ee3p t\u00e1c hi\u1ec7u qu\u1ea3.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img alt=\"Sketch-style infographic illustrating best practices for documenting Entity Relationship Diagram changes in Git-driven workflows, featuring version control benefits, preparation steps, naming conventions, commit message standards, migration script synchronization, peer review checklist, common pitfalls to avoid, CI\/CD integration, and conflict resolution strategies for database schema management\" decoding=\"async\" src=\"https:\/\/www.viz-note.com\/wp-content\/uploads\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\"\/><\/figure>\n<\/div>\n<h2>\ud83d\udee1\ufe0f T\u1ea1i sao Ki\u1ec3m So\u00e1t Phi\u00ean B\u1ea3n cho ERD l\u1ea1i Quan Tr\u1ecdng<\/h2>\n<p>\u00c1p d\u1ee5ng c\u00e1c nguy\u00ean t\u1eafc ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n v\u00e0o m\u00f4 h\u00ecnh h\u00f3a c\u01a1 s\u1edf d\u1eef li\u1ec7u bi\u1ebfn l\u01b0\u1ee3c \u0111\u1ed3 t\u1eeb m\u1ed9t ph\u1ee5 thu\u1ed9c \u1ea9n th\u00e0nh m\u1ed9t th\u00e0nh vi\u00ean h\u00e0ng \u0111\u1ea7u trong d\u1ef1 \u00e1n. Thi\u1ebfu s\u1ef1 k\u1ef7 lu\u1eadt n\u00e0y, c\u00e1c thay \u0111\u1ed5i v\u1ec1 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u th\u01b0\u1eddng x\u1ea3y ra m\u1ed9t c\u00e1ch ri\u00eang l\u1ebb, d\u1eabn \u0111\u1ebfn s\u1ef1 ch\u00eanh l\u1ec7ch gi\u1eefa thi\u1ebft k\u1ebf \u0111\u01b0\u1ee3c ghi ch\u00e9p v\u00e0 tr\u1ea1ng th\u00e1i th\u1ef1c t\u1ebf c\u1ee7a c\u01a1 s\u1edf d\u1eef li\u1ec7u.<\/p>\n<ul>\n<li><strong>Kh\u1ea3 n\u0103ng Ki\u1ec3m Tra:<\/strong>M\u1ecdi thay \u0111\u1ed5i \u0111\u1ed1i v\u1edbi m\u1ed9t th\u1ef1c th\u1ec3 ho\u1eb7c m\u1ed1i quan h\u1ec7 \u0111\u1ec1u \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u th\u1eddi gian v\u00e0 g\u00e1n cho m\u1ed9t ng\u01b0\u1eddi \u0111\u00f3ng g\u00f3p c\u1ee5 th\u1ec3. \u0110i\u1ec1u n\u00e0y r\u1ea5t quan tr\u1ecdng cho vi\u1ec7c tu\u00e2n th\u1ee7 v\u00e0 g\u1ee1 l\u1ed7i c\u00e1c v\u1ea5n \u0111\u1ec1 d\u1eef li\u1ec7u trong qu\u00e1 kh\u1ee9.<\/li>\n<li><strong>H\u1ee3p T\u00e1c:<\/strong>Nhi\u1ec1u k\u1ef9 s\u01b0 c\u00f3 th\u1ec3 \u0111\u1ec1 xu\u1ea5t thay \u0111\u1ed5i \u0111\u1ed3ng th\u1eddi m\u00e0 kh\u00f4ng ghi \u0111\u00e8 l\u00ean c\u00f4ng vi\u1ec7c c\u1ee7a nhau, mi\u1ec5n l\u00e0 quy tr\u00ecnh \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd \u0111\u00fang c\u00e1ch.<\/li>\n<li><strong>Kh\u1ea3 n\u0103ng Ho\u00e0n T\u00e1c:<\/strong>N\u1ebfu m\u1ed9t thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3 l\u00e0m h\u1ecfng logic \u1ee9ng d\u1ee5ng, kh\u1ea3 n\u0103ng quay l\u1ea1i tr\u1ea1ng th\u00e1i tr\u01b0\u1edbc \u0111\u00f3 c\u1ee7a s\u01a1 \u0111\u1ed3 (v\u00e0 c\u00e1c t\u1eadp l\u1ec7nh di chuy\u1ec3n ti\u1ebfp theo) l\u00e0 thi\u1ebft y\u1ebfu \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o \u1ed5n \u0111\u1ecbnh.<\/li>\n<li><strong>\u0110\u1ed9 Ch\u00ednh X\u00e1c T\u00e0i Li\u1ec7u:<\/strong>Duy tr\u00ec s\u1ef1 \u0111\u1ed3ng b\u1ed9 gi\u1eefa s\u01a1 \u0111\u1ed3 v\u00e0 m\u00e3 ngu\u1ed3n \u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c th\u00e0nh vi\u00ean m\u1edbi c\u00f3 b\u1ea3n \u0111\u1ed3 ch\u00ednh x\u00e1c v\u1ec1 m\u00f4 h\u00ecnh d\u1eef li\u1ec7u.<\/li>\n<\/ul>\n<h2>\ud83d\udcdd Chu\u1ea9n B\u1ecb Tr\u01b0\u1edbc Khi G\u1eedi Thay \u0110\u1ed5i<\/h2>\n<p>Tr\u01b0\u1edbc khi \u0111\u01b0a m\u1ed9t thay \u0111\u1ed5i v\u00e0o kho l\u01b0u tr\u1eef, c\u00e1c b\u01b0\u1edbc chu\u1ea9n b\u1ecb c\u1ee5 th\u1ec3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng thay \u0111\u1ed5i \u0111\u01b0\u1ee3c g\u1eedi \u0111i l\u00e0 nguy\u00ean t\u1eed v\u00e0 c\u00f3 \u00fd ngh\u0129a. V\u1ed9i v\u00e0ng g\u1eedi thay \u0111\u1ed5i m\u00e0 kh\u00f4ng ki\u1ec3m tra th\u01b0\u1eddng d\u1eabn \u0111\u1ebfn xung \u0111\u1ed9t h\u1ee3p nh\u1ea5t ho\u1eb7c x\u00e2y d\u1ef1ng b\u1ecb h\u1ecfng.<\/p>\n<h3>1. T\u00e1ch bi\u1ec7t Thay \u0110\u1ed5i<\/h3>\n<p>\u0110\u1ea3m b\u1ea3o r\u1eb1ng thay \u0111\u1ed5i s\u01a1 \u0111\u1ed3 t\u00e1ch bi\u1ec7t kh\u1ecfi c\u00e1c thay \u0111\u1ed5i m\u00e3 ngu\u1ed3n kh\u00f4ng li\u00ean quan. Tr\u1ed9n l\u1eabn c\u1eadp nh\u1eadt logic v\u1edbi thay \u0111\u1ed5i thi\u1ebft k\u1ebf l\u01b0\u1ee3c \u0111\u1ed3 khi\u1ebfn vi\u1ec7c x\u00e1c \u0111\u1ecbnh ngu\u1ed3n g\u1ed1c l\u1ed7i tr\u1edf n\u00ean kh\u00f3 kh\u0103n. T\u1ea1o m\u1ed9t nh\u00e1nh chuy\u00ean d\u1ee5ng cho nhi\u1ec7m v\u1ee5 ph\u00e1t tri\u1ec3n l\u01b0\u1ee3c \u0111\u1ed3.<\/p>\n<h3>2. X\u00e1c Th\u1ef1c T\u00ednh To\u00e0n V\u1eb9n C\u1ea5u Tr\u00fac<\/h3>\n<p>Tr\u01b0\u1edbc khi g\u1eedi thay \u0111\u1ed5i, h\u00e3y x\u00e1c minh r\u1eb1ng c\u00e1c th\u1ef1c th\u1ec3 \u0111\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t tu\u00e2n th\u1ee7 c\u00e1c ti\u00eau chu\u1ea9n chu\u1ea9n h\u00f3a. Ki\u1ec3m tra c\u00e1c tr\u01b0\u1eddng d\u1eef li\u1ec7u tr\u00f9ng l\u1eb7p, kh\u00f3a ngo\u1ea1i b\u1ecb thi\u1ebfu v\u00e0 c\u00e1c m\u1ed1i quan h\u1ec7 v\u00f2ng l\u1eb7p. Thi\u1ebft k\u1ebf s\u1ea1ch s\u1ebd gi\u00fap gi\u1ea3m n\u1ee3 k\u1ef9 thu\u1eadt.<\/p>\n<h3>3. C\u1eadp Nh\u1eadt C\u00e1c T\u00e0i S\u1ea3n Li\u00ean Quan<\/h3>\n<p>ERD hi\u1ebfm khi t\u1ed3n t\u1ea1i \u0111\u1ed9c l\u1eadp. Ch\u00fang th\u01b0\u1eddng \u0111i k\u00e8m v\u1edbi c\u00e1c t\u1eadp l\u1ec7nh di chuy\u1ec3n, \u0111\u1ecbnh ngh\u0129a API ho\u1eb7c t\u1eeb \u0111i\u1ec3n d\u1eef li\u1ec7u. \u0110\u1ea3m b\u1ea3o t\u1ea5t c\u1ea3 t\u00e0i li\u1ec7u li\u00ean k\u1ebft \u0111\u1ec1u \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt \u0111\u1ec3 ph\u1ea3n \u00e1nh tr\u1ea1ng th\u00e1i m\u1edbi c\u1ee7a m\u00f4 h\u00ecnh d\u1eef li\u1ec7u.<\/p>\n<h2>\ud83d\uddc2\ufe0f Quy \u01af\u1edbc \u0110\u1eb7t T\u00ean v\u00e0 C\u1ea5u Tr\u00fac T\u1eadp Tin<\/h2>\n<p>T\u00ednh nh\u1ea5t qu\u00e1n trong t\u1ed5 ch\u1ee9c t\u1eadp tin gi\u00fap tr\u00e1nh nh\u1ea7m l\u1eabn khi duy\u1ec7t kho l\u01b0u tr\u1eef. M\u1ed9t c\u1ea5u tr\u00fac h\u1ee3p l\u00fd gi\u00fap c\u00e1c th\u00e0nh vi\u00ean trong nh\u00f3m nhanh ch\u00f3ng t\u00ecm th\u1ea5y tr\u1ea1ng th\u00e1i hi\u1ec7n t\u1ea1i c\u1ee7a s\u01a1 \u0111\u1ed3.<\/p>\n<table>\n<thead>\n<tr>\n<th>Th\u00e0nh Ph\u1ea7n<\/th>\n<th>\u0110\u1ecbnh D\u1ea1ng \u0110\u01b0\u1ee3c \u0110\u1ec1 Xu\u1ea5t<\/th>\n<th>V\u00ed D\u1ee5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>T\u1eadp Tin S\u01a1 \u0110\u1ed3<\/td>\n<td>snake_case, m\u00f4 t\u1ea3 r\u00f5 r\u00e0ng<\/td>\n<td><code>erd_core_users.vsd<\/code><\/td>\n<\/tr>\n<tr>\n<td>C\u00e1c T\u1eadp L\u1ec7nh Di Chuy\u1ec3n<\/td>\n<td>d\u1ef1a tr\u00ean th\u1eddi \u0111i\u1ec3m<\/td>\n<td><code>20231027_add_email_index.sql<\/code><\/td>\n<\/tr>\n<tr>\n<td>T\u00e0i li\u1ec7u<\/td>\n<td>markdown, \u0111\u01b0\u1ee3c phi\u00ean b\u1ea3n h\u00f3a<\/td>\n<td><code>schema_readme.md<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0110\u1ed1i v\u1edbi c\u00e1c t\u1ec7p s\u01a1 \u0111\u1ed3 c\u1ee5 th\u1ec3, h\u00e3y tr\u00e1nh \u0111\u1eb7t t\u00ean chung chung nh\u01b0<code>diagram_final_v2.png<\/code>. Thay v\u00e0o \u0111\u00f3, h\u00e3y s\u1eed d\u1ee5ng t\u00ean mi\u1ec1n c\u1ee7a m\u00f4 h\u00ecnh, v\u00ed d\u1ee5 nh\u01b0<code>erd_billing_transactions<\/code>. \u0110i\u1ec1u n\u00e0y \u0111\u1ea3m b\u1ea3o r\u1eb1ng khi t\u00ecm ki\u1ebfm trong kho l\u01b0u tr\u1eef, ng\u1eef c\u1ea3nh s\u1ebd r\u00f5 r\u00e0ng ngay l\u1eadp t\u1ee9c.<\/p>\n<h3>C\u1ea5u tr\u00fac th\u01b0 m\u1ee5c<\/h3>\n<p>S\u1eafp x\u1ebfp c\u00e1c t\u1ec7p theo mi\u1ec1n thay v\u00ec theo tr\u1ea1ng th\u00e1i. Vi\u1ec7c c\u00f3 m\u1ed9t<code>nh\u00e1p<\/code>th\u01b0 m\u1ee5c th\u01b0\u1eddng d\u1eabn \u0111\u1ebfn c\u00f4ng vi\u1ec7c b\u1ecb b\u1ecf d\u1edf. Thay v\u00e0o \u0111\u00f3, h\u00e3y s\u1eed d\u1ee5ng nh\u00e1nh cho c\u00f4ng vi\u1ec7c nh\u00e1p v\u00e0 nh\u00e1nh ch\u00ednh cho ngu\u1ed3n g\u1ed1c s\u1ef1 th\u1eadt.<\/p>\n<ul>\n<li><code>\/schema\/erd\/<\/code>: N\u01a1i l\u01b0u tr\u1eef c\u00e1c m\u00f4 h\u00ecnh tr\u1ef1c quan.<\/li>\n<li><code>\/schema\/migrations\/<\/code>: N\u01a1i c\u00e1c t\u1eadp l\u1ec7nh SQL ho\u1eb7c NoSQL th\u1ef1c thi \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef.<\/li>\n<li><code>\/schema\/docs\/<\/code>: N\u01a1i l\u01b0u tr\u1eef v\u0103n b\u1ea3n gi\u1ea3i th\u00edch v\u00e0 t\u1eeb \u0111i\u1ec3n d\u1eef li\u1ec7u.<\/li>\n<\/ul>\n<h2>\ud83d\udce2 Ti\u00eau chu\u1ea9n th\u00f4ng b\u00e1o ghi l\u1ea1i<\/h2>\n<p>C\u00e1c th\u00f4ng b\u00e1o ghi l\u1ea1i l\u00e0 c\u00e2u chuy\u1ec7n ch\u00ednh trong l\u1ecbch s\u1eed d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n. Ch\u00fang n\u00ean gi\u1ea3i th\u00edch<em>\u0111i\u1ec1u g\u00ec<\/em>\u0111\u00e3 thay \u0111\u1ed5i v\u00e0<em>t\u1ea1i sao<\/em>, ch\u1ee9 kh\u00f4ng ch\u1ec9 m\u00f4 t\u1ea3 thay \u0111\u1ed5i t\u1ec7p. M\u1ed9t th\u00f4ng b\u00e1o m\u01a1 h\u1ed3 nh\u01b0<code>c\u1eadp nh\u1eadt s\u01a1 \u0111\u1ed3<\/code>s\u1ebd kh\u00f4ng mang l\u1ea1i gi\u00e1 tr\u1ecb g\u00ec cho ng\u01b0\u1eddi \u0111\u1ecdc trong t\u01b0\u01a1ng lai.<\/p>\n<p>\u00c1p d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng c\u00f3 c\u1ea5u tr\u00fac cho c\u00e1c ghi l\u1ea1i li\u00ean quan \u0111\u1ebfn thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3:<\/p>\n<ul>\n<li><strong>Lo\u1ea1i:<\/strong> X\u00e1c \u0111\u1ecbnh ph\u1ea1m vi (v\u00ed d\u1ee5: &#8220;<code>c\u01a1 s\u1edf d\u1eef li\u1ec7u<\/code>, <code>m\u00f4 h\u00ecnh<\/code>, <code>db<\/code>).<\/li>\n<li><strong>Ch\u1ee7 \u0111\u1ec1:<\/strong> T\u00f3m t\u1eaft ng\u1eafn g\u1ecdn v\u1ec1 thay \u0111\u1ed5i.<\/li>\n<li><strong>N\u1ed9i dung:<\/strong> Gi\u1ea3i th\u00edch chi ti\u1ebft v\u1ec1 logic kinh doanh ho\u1eb7c y\u00eau c\u1ea7u k\u1ef9 thu\u1eadt th\u00fac \u0111\u1ea9y thay \u0111\u1ed5i.<\/li>\n<li><strong>Tham kh\u1ea3o:<\/strong> Li\u00ean k\u1ebft \u0111\u1ebfn c\u00f4ng c\u1ee5 theo d\u00f5i s\u1ef1 c\u1ed1 ho\u1eb7c t\u00e0i li\u1ec7u thi\u1ebft k\u1ebf.<\/li>\n<\/ul>\n<p><strong>V\u00ed d\u1ee5:<\/strong><\/p>\n<blockquote><p>\n<code>c\u01a1 s\u1edf d\u1eef li\u1ec7u: th\u00eam b\u1ea3ng h\u1ed3 s\u01a1 ng\u01b0\u1eddi d\u00f9ng<\/code><br \/>\n<code><br \/>\n- Gi\u1edbi thi\u1ec7u b\u1ea3ng m\u1edbi cho d\u1eef li\u1ec7u m\u00f4 t\u1ea3 ng\u01b0\u1eddi d\u00f9ng m\u1edf r\u1ed9ng<\/code><br \/>\n<code>- C\u1ea7n thi\u1ebft cho t\u00ednh n\u0103ng ph\u00e2n t\u00edch s\u1eafp t\u1edbi<\/code><br \/>\n<code>- Gi\u1ea3i quy\u1ebft v\u1ea5n \u0111\u1ec1 #402<\/code>\n<\/p><\/blockquote>\n<p>M\u1ee9c \u0111\u1ed9 chi ti\u1ebft n\u00e0y cho ph\u00e9p c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n hi\u1ec3u b\u1ed1i c\u1ea3nh ti\u1ebfn h\u00f3a c\u1ee7a s\u01a1 \u0111\u1ed3 m\u00e0 kh\u00f4ng c\u1ea7n m\u1edf t\u1ec7p h\u00ecnh \u1ea3nh ngay l\u1eadp t\u1ee9c.<\/p>\n<h2>\ud83d\udd04 X\u1eed l\u00fd c\u00e1c b\u1ea3n c\u1eadp nh\u1eadt v\u00e0 t\u1eadp l\u1ec7nh<\/h2>\n<p>M\u1ed9t s\u01a1 \u0111\u1ed3 l\u00e0 m\u1ed9t k\u1ebf ho\u1ea1ch; c\u00e1c t\u1eadp l\u1ec7nh c\u1eadp nh\u1eadt l\u00e0 ph\u1ea7n th\u1ef1c hi\u1ec7n. Ch\u00fang ph\u1ea3i lu\u00f4n \u0111\u01b0\u1ee3c \u0111\u1ed3ng b\u1ed9. N\u1ebfu s\u01a1 \u0111\u1ed3 hi\u1ec3n th\u1ecb m\u1ed9t c\u1ed9t m\u00e0 kh\u00f4ng t\u1ed3n t\u1ea1i trong t\u1eadp l\u1ec7nh c\u1eadp nh\u1eadt, th\u00ec t\u00e0i li\u1ec7u \u0111ang n\u00f3i d\u1ed1i.<\/p>\n<h3>Ph\u00e9p \u00e1nh x\u1ea1 m\u1ed9t-m\u1ed9t<\/h3>\n<p>\u0110\u1ea3m b\u1ea3o r\u1eb1ng m\u1ed7i thay \u0111\u1ed5i v\u1ec1 th\u1ef1c th\u1ec3 tr\u1ef1c quan \u0111\u1ec1u t\u01b0\u01a1ng \u1ee9ng v\u1edbi m\u1ed9t t\u1ec7p t\u1eadp l\u1ec7nh c\u1eadp nh\u1eadt. N\u1ebfu b\u1ea1n th\u00eam m\u1ed9t th\u1ef1c th\u1ec3 trong s\u01a1 \u0111\u1ed3, b\u1ea1n ph\u1ea3i t\u1ea1o t\u1eadp l\u1ec7nh <code>create_table<\/code> t\u1eadp l\u1ec7nh. N\u1ebfu b\u1ea1n x\u00f3a m\u1ed9t m\u1ed1i quan h\u1ec7, b\u1ea1n ph\u1ea3i t\u1ea1o t\u1eadp l\u1ec7nh <code>alter_table<\/code> ho\u1eb7c <code>drop_constraint<\/code> t\u1eadp l\u1ec7nh.<\/p>\n<h3>T\u00ednh kh\u00f4ng \u0111\u1ed5i<\/h3>\n<p>C\u00e1c t\u1eadp l\u1ec7nh n\u00ean \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 ch\u1ea1y an to\u00e0n nhi\u1ec1u l\u1ea7n. S\u1eed d\u1ee5ng logic \u0111i\u1ec1u ki\u1ec7n \u0111\u1ec3 ki\u1ec3m tra s\u1ef1 t\u1ed3n t\u1ea1i tr\u01b0\u1edbc khi t\u1ea1o t\u00e0i nguy\u00ean. \u0110i\u1ec1u n\u00e0y ng\u0103n ng\u1eeba l\u1ed7i trong qu\u00e1 tr\u00ecnh ch\u1ea1y l\u1ea1i ho\u1eb7c th\u1ef1c thi trong pipeline CI\/CD.<\/p>\n<h3>K\u1ebf ho\u1ea1ch ho\u00e0n t\u00e1c<\/h3>\n<p>M\u1ed7i t\u1eadp l\u1ec7nh di chuy\u1ec3n n\u00ean c\u00f3 t\u1eadp l\u1ec7nh ho\u00e0n t\u00e1c t\u01b0\u01a1ng \u1ee9ng. \u0110i\u1ec1u n\u00e0y r\u1ea5t quan tr\u1ecdng trong c\u00e1c t\u00ecnh hu\u1ed1ng kh\u1ea9n c\u1ea5p khi c\u1ea7n ho\u00e0n t\u00e1c nhanh ch\u00f3ng thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3. \u0110\u1eb7t t\u00ean c\u00e1c t\u1eadp tin n\u00e0y r\u00f5 r\u00e0ng, v\u00ed d\u1ee5 nh\u01b0 <code>001_hoan_tac.sql<\/code>.<\/p>\n<h2>\ud83d\udc65 Xem x\u00e9t v\u00e0 H\u1ee3p t\u00e1c<\/h2>\n<p>C\u00e1c thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3 l\u00e0 c\u00e1c thao t\u00e1c c\u00f3 r\u1ee7i ro cao. Quy tr\u00ecnh xem x\u00e9t b\u1edfi \u0111\u1ed3ng nghi\u1ec7p l\u00e0 b\u1eaft bu\u1ed9c. T\u01b0\u01a1ng t\u1ef1 nh\u01b0 m\u00e3 \u1ee9ng d\u1ee5ng c\u1ea7n \u0111\u01b0\u1ee3c xem x\u00e9t, c\u1ea5u tr\u00fac c\u01a1 s\u1edf d\u1eef li\u1ec7u c\u0169ng c\u1ea7n \u0111\u01b0\u1ee3c ki\u1ec3m tra k\u1ef9 l\u01b0\u1ee1ng.<\/p>\n<h3>Danh s\u00e1ch ki\u1ec3m tra xem x\u00e9t<\/h3>\n<table>\n<thead>\n<tr>\n<th>Ki\u1ec3m tra<\/th>\n<th>C\u00e2u h\u1ecfi<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>T\u00ednh nh\u1ea5t qu\u00e1n<\/td>\n<td>S\u01a1 \u0111\u1ed3 c\u00f3 kh\u1edbp v\u1edbi c\u00e1c t\u1eadp l\u1ec7nh di chuy\u1ec3n kh\u00f4ng?<\/td>\n<\/tr>\n<tr>\n<td>Hi\u1ec7u su\u1ea5t<\/td>\n<td>C\u00e1c ch\u1ec9 m\u1ee5c c\u00f3 \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a cho c\u00e1c c\u1ed9t th\u01b0\u1eddng xuy\u00ean \u0111\u01b0\u1ee3c truy v\u1ea5n kh\u00f4ng?<\/td>\n<\/tr>\n<tr>\n<td>R\u00e0ng bu\u1ed9c<\/td>\n<td>C\u00e1c kh\u00f3a ngo\u1ea1i v\u00e0 r\u00e0ng bu\u1ed9c kh\u00f4ng-null c\u00f3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp \u0111\u00fang c\u00e1ch kh\u00f4ng?<\/td>\n<\/tr>\n<tr>\n<td>T\u00e1c \u0111\u1ed9ng<\/td>\n<td>Thay \u0111\u1ed5i n\u00e0y c\u00f3 l\u00e0m h\u1ecfng c\u00e1c \u1ee9ng d\u1ee5ng hi\u1ec7n t\u1ea1i kh\u00f4ng?<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Ghi ch\u00fa tr\u1ef1c quan<\/h3>\n<p>S\u1eed d\u1ee5ng t\u00ednh n\u0103ng ghi ch\u00fa t\u00edch h\u1ee3p c\u1ee7a c\u00f4ng c\u1ee5 v\u1ebd s\u01a1 \u0111\u1ed3 \u0111\u1ec3 ch\u00fa th\u00edch logic ph\u1ee9c t\u1ea1p tr\u1ef1c ti\u1ebfp tr\u00ean b\u1ea3ng v\u1ebd. Gi\u1ea3i th\u00edch l\u00fd do t\u1ea1i sao m\u1ed9t l\u1ef1a ch\u1ecdn chu\u1ea9n h\u00f3a c\u1ee5 th\u1ec3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n. \u0110i\u1ec1u n\u00e0y gi\u1ea3m nhu c\u1ea7u v\u1ec1 t\u00e0i li\u1ec7u b\u00ean ngo\u00e0i.<\/p>\n<h2>\ud83d\udd0d Nh\u1eefng sai l\u1ea7m ph\u1ed5 bi\u1ebfn c\u1ea7n tr\u00e1nh<\/h2>\n<p>Ngay c\u1ea3 v\u1edbi c\u00e1c th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t, c\u00e1c \u0111\u1ed9i th\u01b0\u1eddng r\u01a1i v\u00e0o nh\u1eefng c\u00e1i b\u1eaby l\u00e0m t\u1ed5n h\u1ea1i \u0111\u1ebfn t\u00ednh to\u00e0n v\u1eb9n c\u1ee7a quy tr\u00ecnh qu\u1ea3n l\u00fd phi\u00ean b\u1ea3n m\u00f4 h\u00ecnh d\u1eef li\u1ec7u.<\/p>\n<h3>1. C\u00e1ch ti\u1ebfp c\u1eadn &#8220;B\u00f9ng n\u1ed5 l\u1edbn&#8221;<\/h3>\n<p>Vi\u1ec7c c\u1ed1 g\u1eafng ghi l\u1ea1i m\u1ed9t c\u1ea3i ti\u1ebfn l\u01b0\u1ee3c \u0111\u1ed3 quy m\u00f4 l\u1edbn trong m\u1ed9t l\u1ea7n ghi duy nh\u1ea5t khi\u1ebfn vi\u1ec7c xem x\u00e9t tr\u1edf n\u00ean b\u1ea5t kh\u1ea3 thi. Chia c\u00e1c thay \u0111\u1ed5i l\u1edbn th\u00e0nh c\u00e1c b\u01b0\u1edbc logic, t\u1eebng b\u01b0\u1edbc m\u1ed9t. \u0110i\u1ec1u n\u00e0y gi\u00fap ho\u00e0n t\u00e1c d\u1ec5 d\u00e0ng h\u01a1n v\u00e0 hi\u1ec3u r\u00f5 h\u01a1n.<\/p>\n<h3>2. B\u1ecf qua \u0111\u1ecbnh d\u1ea1ng t\u1eadp tin tr\u1ef1c quan<\/h3>\n<p>C\u00e1c t\u1eadp tin s\u01a1 \u0111\u1ed3 nh\u1ecb ph\u00e2n (nh\u01b0 <code>.vsdx<\/code> ho\u1eb7c <code>.drawio<\/code>) r\u1ea5t kh\u00f3 h\u1ee3p nh\u1ea5t. N\u1ebfu m\u1ed9t th\u00e0nh vi\u00ean nh\u00f3m ch\u1ec9nh s\u1eeda c\u00f9ng m\u1ed9t t\u1eadp tin, h\u1ec7 th\u1ed1ng ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00f3 th\u1ec3 b\u00e1o l\u1ed7i xung \u0111\u1ed9t m\u00e0 tr\u00ecnh so\u1ea1n th\u1ea3o v\u0103n b\u1ea3n kh\u00f4ng th\u1ec3 gi\u1ea3i quy\u1ebft \u0111\u01b0\u1ee3c.<\/p>\n<p><strong>Gi\u1ea3i ph\u00e1p:<\/strong> S\u1eed d\u1ee5ng c\u00e1c \u0111\u1ecbnh d\u1ea1ng s\u01a1 \u0111\u1ed3 d\u1ef1a tr\u00ean v\u0103n b\u1ea3n (nh\u01b0 Mermaid ho\u1eb7c PlantUML) n\u1ebfu c\u00f3 th\u1ec3. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p h\u1ee3p nh\u1ea5t t\u1eebng d\u00f2ng m\u1ed9t, gi\u00fap h\u1ee3p t\u00e1c tr\u1edf n\u00ean tr\u01a1n tru h\u01a1n \u0111\u00e1ng k\u1ec3.<\/p>\n<h3>3. S\u01a1 \u0111\u1ed3 l\u1ed7i th\u1eddi<\/h3>\n<p>Tr\u1ea1ng th\u00e1i nguy hi\u1ec3m nh\u1ea5t l\u00e0 m\u1ed9t s\u01a1 \u0111\u1ed3 tr\u00f4ng \u0111\u00fang nh\u01b0ng \u0111\u1ea1i di\u1ec7n cho m\u1ed9t l\u01b0\u1ee3c \u0111\u1ed3 kh\u00f4ng c\u00f2n t\u1ed3n t\u1ea1i. \u0110i\u1ec1u n\u00e0y x\u1ea3y ra khi c\u00e1c thay \u0111\u1ed5i \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng nh\u01b0ng s\u01a1 \u0111\u1ed3 kh\u00f4ng \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt.<\/p>\n<p><strong>Gi\u1ea3i ph\u00e1p:<\/strong> T\u00edch h\u1ee3p ki\u1ec3m tra s\u01a1 \u0111\u1ed3 v\u00e0o quy tr\u00ecnh x\u00e2y d\u1ef1ng. N\u1ebfu script kh\u00f4ng kh\u1edbp v\u1edbi s\u01a1 \u0111\u1ed3, qu\u00e1 tr\u00ecnh x\u00e2y d\u1ef1ng ph\u1ea3i th\u1ea5t b\u1ea1i.<\/p>\n<h3>4. Thi\u1ebfu ki\u1ec3m so\u00e1t truy c\u1eadp<\/h3>\n<p>Cho ph\u00e9p t\u1ea5t c\u1ea3 c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n \u0111\u1ea9y tr\u1ef1c ti\u1ebfp v\u00e0o nh\u00e1nh l\u01b0\u1ee3c \u0111\u1ed3 ch\u00ednh c\u00f3 th\u1ec3 d\u1eabn \u0111\u1ebfn h\u1ed7n lo\u1ea1n. Th\u1ef1c hi\u1ec7n c\u00e1c quy t\u1eafc b\u1ea3o v\u1ec7 nh\u00e1nh. Ch\u1ec9 nh\u1eefng ng\u01b0\u1eddi duy tr\u00ec ho\u1eb7c k\u1ef9 s\u01b0 c\u1ea5p cao m\u1edbi \u0111\u01b0\u1ee3c ph\u00e9p h\u1ee3p nh\u1ea5t c\u00e1c thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3 v\u00e0o nh\u00e1nh ch\u00ednh.<\/p>\n<h2>\ud83d\udee0\ufe0f T\u00edch h\u1ee3p v\u1edbi CI\/CD<\/h2>\n<p>Ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng cho c\u00e1c thay \u0111\u1ed5i l\u01b0\u1ee3c \u0111\u1ed3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng s\u01a1 \u0111\u1ed3 v\u1eabn l\u00e0 ngu\u1ed3n th\u00f4ng tin \u0111\u00e1ng tin c\u1eady.<\/p>\n<ul>\n<li><strong>Ki\u1ec3m tra m\u00e3 ngu\u1ed3n (Linting):<\/strong> Ch\u1ea1y c\u00f4ng c\u1ee5 ki\u1ec3m tra l\u01b0\u1ee3c \u0111\u1ed3 \u0111\u1ec3 bu\u1ed9c tu\u00e2n th\u1ee7 quy \u01b0\u1edbc \u0111\u1eb7t t\u00ean v\u00e0 c\u00e1c quy t\u1eafc c\u1ea5u tr\u00fac tr\u01b0\u1edbc khi ch\u1ea5p nh\u1eadn y\u00eau c\u1ea7u k\u00e9o.<\/li>\n<li><strong>So s\u00e1nh l\u01b0\u1ee3c \u0111\u1ed3:<\/strong> So s\u00e1nh s\u01a1 \u0111\u1ed3 v\u1edbi phi\u00ean b\u1ea3n c\u01a1 s\u1edf d\u1eef li\u1ec7u th\u1ef1c t\u1ebf \u0111\u1ec3 ph\u00e1t hi\u1ec7n s\u1ef1 l\u1ec7ch l\u1ea1c. N\u1ebfu s\u01a1 \u0111\u1ed3 n\u00f3i r\u1eb1ng<code>ng\u01b0\u1eddi d\u00f9ng<\/code> c\u00f3 m\u1ed9t c\u1ed9t <code>email<\/code> nh\u01b0ng c\u01a1 s\u1edf d\u1eef li\u1ec7u l\u1ea1i kh\u00f4ng c\u00f3, h\u00e3y \u0111\u00e1nh d\u1ea5u ngay l\u1eadp t\u1ee9c.<\/li>\n<li><strong>Ki\u1ec3m tra tri\u1ec3n khai:<\/strong> \u0110\u1ea3m b\u1ea3o r\u1eb1ng kh\u00f4ng c\u00f3 c\u01a1 s\u1edf d\u1eef li\u1ec7u s\u1ea3n xu\u1ea5t n\u00e0o \u0111\u01b0\u1ee3c tri\u1ec3n khai m\u00e0 kh\u00f4ng c\u00f3 script di chuy\u1ec3n \u0111\u01b0\u1ee3c x\u00e1c minh \u0111i k\u00e8m v\u1edbi c\u1eadp nh\u1eadt s\u01a1 \u0111\u1ed3.<\/li>\n<\/ul>\n<h2>\ud83e\udde9 X\u1eed l\u00fd xung \u0111\u1ed9t<\/h2>\n<p>Khi hai k\u1ef9 s\u01b0 s\u1eeda \u0111\u1ed5i c\u00f9ng m\u1ed9t t\u1ec7p s\u01a1 \u0111\u1ed3, xung \u0111\u1ed9t h\u1ee3p nh\u1ea5t s\u1ebd x\u1ea3y ra. Vi\u1ec7c gi\u1ea3i quy\u1ebft \u0111i\u1ec1u n\u00e0y \u0111\u00f2i h\u1ecfi m\u1ed9t quy tr\u00ecnh r\u00f5 r\u00e0ng.<\/p>\n<ol>\n<li><strong>D\u1eebng l\u1ea1i vi\u1ec7c h\u1ee3p nh\u1ea5t:<\/strong> Kh\u00f4ng \u00e9p h\u1ee3p nh\u1ea5t. Gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t b\u1eb1ng tay.<\/li>\n<li><strong>Tham kh\u1ea3o s\u01a1 \u0111\u1ed3:<\/strong> M\u1edf c\u1ea3 hai phi\u00ean b\u1ea3n v\u00e0 ki\u1ec3m tra s\u1ef1 kh\u00e1c bi\u1ec7t b\u1eb1ng m\u1eaft th\u01b0\u1eddng.<\/li>\n<li><strong>Th\u1ea3o lu\u1eadn v\u1ec1 logic:<\/strong> X\u00e1c \u0111\u1ecbnh xem c\u1ea3 hai thay \u0111\u1ed5i c\u00f3 th\u1ec3 t\u1ed3n t\u1ea1i song song hay m\u1ed9t trong hai ph\u1ea3i b\u1ecb lo\u1ea1i b\u1ecf d\u1ef1a tr\u00ean k\u1ebf ho\u1ea1ch ki\u1ebfn tr\u00fac t\u1ed5ng th\u1ec3.<\/li>\n<li><strong>C\u1eadp nh\u1eadt t\u00e0i li\u1ec7u:<\/strong> Ghi l\u1ea1i k\u1ebft qu\u1ea3 gi\u1ea3i quy\u1ebft trong th\u00f4ng b\u00e1o commit.<\/li>\n<\/ol>\n<p>N\u1ebfu s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng s\u01a1 \u0111\u1ed3 d\u1ef1a tr\u00ean v\u0103n b\u1ea3n, vi\u1ec7c gi\u1ea3i quy\u1ebft xung \u0111\u1ed9t v\u0103n b\u1ea3n th\u01b0\u1eddng \u0111\u01a1n gi\u1ea3n. N\u1ebfu s\u1eed d\u1ee5ng \u0111\u1ecbnh d\u1ea1ng nh\u1ecb ph\u00e2n, c\u1ea7n ki\u1ec3m tra th\u1ee7 c\u00f4ng, v\u00e0 b\u1ea1n c\u00f3 th\u1ec3 c\u1ea7n ch\u1ecdn m\u1ed9t phi\u00ean b\u1ea3n thay v\u00ec phi\u00ean b\u1ea3n kia, sau \u0111\u00f3 \u00e1p d\u1ee5ng l\u1ea1i c\u00e1c thay \u0111\u1ed5i b\u1ecb thi\u1ebfu.<\/p>\n<h2>\ud83d\uddc3\ufe0f B\u1ea3o tr\u00ec v\u00e0 L\u01b0u tr\u1eef<\/h2>\n<p>Theo th\u1eddi gian, c\u00e1c s\u01a1 \u0111\u1ed3 t\u00edch l\u0169y c\u00e1c th\u1ef1c th\u1ec3 \u0111\u00e3 b\u1ecb lo\u1ea1i b\u1ecf. M\u1ed9t s\u01a1 \u0111\u1ed3 r\u1ed1i r\u1eafm s\u1ebd che khu\u1ea5t ki\u1ebfn tr\u00fac hi\u1ec7n t\u1ea1i.<\/p>\n<h3>Chi\u1ebfn l\u01b0\u1ee3c lo\u1ea1i b\u1ecf<\/h3>\n<p>Kh\u00f4ng x\u00f3a c\u00e1c th\u1ef1c th\u1ec3 c\u0169 ngay l\u1eadp t\u1ee9c. \u0110\u00e1nh d\u1ea5u ch\u00fang l\u00e0<code>\u0110\u00e3 b\u1ecb lo\u1ea1i b\u1ecf<\/code>trong s\u01a1 \u0111\u1ed3. \u0110i\u1ec1u n\u00e0y b\u1ea3o t\u1ed3n h\u1ed3 s\u01a1 l\u1ecbch s\u1eed trong khi c\u1ea3nh b\u00e1o cho c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n r\u1eb1ng m\u00e3 m\u1edbi kh\u00f4ng n\u00ean tham chi\u1ebfu \u0111\u1ebfn c\u00e1c b\u1ea3ng n\u00e0y.<\/p>\n<h3>Phi\u00ean b\u1ea3n h\u00f3a s\u01a1 \u0111\u1ed3<\/h3>\n<p>C\u00e2n nh\u1eafc g\u1eafn th\u1ebb c\u00e1c phi\u00ean b\u1ea3n c\u1ee5 th\u1ec3 c\u1ee7a s\u01a1 \u0111\u1ed3 t\u01b0\u01a1ng \u1ee9ng v\u1edbi c\u00e1c phi\u00ean b\u1ea3n ch\u00ednh th\u1ee9c. \u0110i\u1ec1u n\u00e0y cho ph\u00e9p tham kh\u1ea3o nhanh ch\u00f3ng n\u1ebfu ph\u00e1t hi\u1ec7n l\u1ed7i trong phi\u00ean b\u1ea3n c\u0169 c\u1ee7a ph\u1ea7n m\u1ec1m.<\/p>\n<h2>\ud83d\udccb T\u00f3m t\u1eaft c\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t<\/h2>\n<p>T\u00f3m l\u1ea1i quy tr\u00ecnh duy tr\u00ec t\u00e0i li\u1ec7u ERD ch\u1ea5t l\u01b0\u1ee3ng cao trong h\u1ec7 th\u1ed1ng ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n:<\/p>\n<ul>\n<li><strong>Ngu\u1ed3n duy nh\u1ea5t c\u1ee7a s\u1ef1 th\u1eadt:<\/strong>Gi\u1eef s\u01a1 \u0111\u1ed3 v\u00e0 c\u00e1c t\u1eadp l\u1ec7nh trong c\u00f9ng m\u1ed9t kho l\u01b0u tr\u1eef.<\/li>\n<li><strong>C\u00e1c l\u1ea7n ghi commit nguy\u00ean t\u1eed:<\/strong>Ghi l\u1ea1i c\u00e1c thay \u0111\u1ed5i theo \u0111\u01a1n v\u1ecb logic, kh\u00f4ng ghi t\u1ea5t c\u1ea3 c\u00f9ng m\u1ed9t l\u00fac.<\/li>\n<li><strong>Th\u00f4ng \u0111i\u1ec7p r\u00f5 r\u00e0ng:<\/strong>Vi\u1ebft c\u00e1c th\u00f4ng \u0111i\u1ec7p commit gi\u1ea3i th\u00edch l\u00fd do<em>t\u1ea1i sao<\/em>.<\/li>\n<li><strong>Quy tr\u00ecnh xem x\u00e9t:<\/strong>Y\u00eau c\u1ea7u xem x\u00e9t b\u1edfi \u0111\u1ed3ng nghi\u1ec7p cho m\u1ecdi thay \u0111\u1ed5i c\u1ea5u tr\u00fac.<\/li>\n<li><strong>T\u1ef1 \u0111\u1ed9ng h\u00f3a:<\/strong>S\u1eed d\u1ee5ng c\u00e1c lu\u1ed3ng CI\/CD \u0111\u1ec3 x\u00e1c minh t\u00ednh nh\u1ea5t qu\u00e1n c\u1ee7a c\u1ea5u tr\u00fac.<\/li>\n<li><strong>\u0110\u1ecbnh d\u1ea1ng v\u0103n b\u1ea3n:<\/strong>\u01afu ti\u00ean c\u00e1c \u0111\u1ecbnh d\u1ea1ng s\u01a1 \u0111\u1ed3 d\u1ef1a tr\u00ean v\u0103n b\u1ea3n \u0111\u1ec3 c\u00f3 kh\u1ea3 n\u0103ng so s\u00e1nh (diff) t\u1ed1t h\u01a1n.<\/li>\n<li><strong>\u0110\u1ed3ng b\u1ed9 h\u00f3a t\u1eadp l\u1ec7nh:<\/strong>\u0110\u1ea3m b\u1ea3o c\u00e1c t\u1eadp l\u1ec7nh di chuy\u1ec3n kh\u1edbp ch\u00ednh x\u00e1c v\u1edbi s\u01a1 \u0111\u1ed3.<\/li>\n<\/ul>\n<h2>\ud83d\ude80 H\u01b0\u1edbng t\u1edbi t\u01b0\u01a1ng lai<\/h2>\n<p>Th\u1ef1c hi\u1ec7n c\u00e1c th\u1ef1c h\u00e0nh n\u00e0y \u0111\u00f2i h\u1ecfi s\u1ef1 k\u1ef7 lu\u1eadt, nh\u01b0ng ph\u1ea7n th\u01b0\u1edfng l\u00e0 m\u1ed9t ki\u1ebfn tr\u00fac d\u1eef li\u1ec7u b\u1ec1n b\u1ec9 v\u00e0 d\u1ec5 hi\u1ec3u. B\u1eb1ng c\u00e1ch coi s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 nh\u01b0 m\u00e3 ngu\u1ed3n, b\u1ea1n trao quy\u1ec1n cho \u0111\u1ed9i ng\u0169 c\u1ee7a m\u00ecnh qu\u1ea3n l\u00fd s\u1ef1 ph\u1ee9c t\u1ea1p m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ee5c ti\u00eau kh\u00f4ng ch\u1ec9 l\u00e0 ghi l\u1ea1i c\u01a1 s\u1edf d\u1eef li\u1ec7u hi\u1ec7n t\u1ea1i tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0o, m\u00e0 c\u00f2n \u0111\u1ea3m b\u1ea3o qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n c\u1ee7a c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e0y l\u00e0 c\u00f3 th\u1ec3 d\u1ef1 \u0111o\u00e1n, an to\u00e0n v\u00e0 \u0111\u01b0\u1ee3c ghi ch\u00e9p d\u00e0i h\u1ea1n.<\/p>\n<p>B\u1eaft \u0111\u1ea7u b\u1eb1ng vi\u1ec7c ki\u1ec3m tra kho l\u01b0u tr\u1eef hi\u1ec7n t\u1ea1i c\u1ee7a b\u1ea1n. Ki\u1ec3m tra xem s\u01a1 \u0111\u1ed3 c\u00f3 kh\u1edbp v\u1edbi c\u00e1c thao t\u00e1c di chuy\u1ec3n hay kh\u00f4ng. N\u1ebfu kh\u00f4ng, h\u00e3y \u01b0u ti\u00ean \u0111\u1ed3ng b\u1ed9 h\u00f3a. Khi \u0111\u00e3 \u0111\u1ed3ng b\u1ed9, h\u00e3y th\u1ef1c thi c\u00e1c ti\u00eau chu\u1ea9n commit \u0111\u01b0\u1ee3c n\u00eau \u1edf tr\u00ean. Theo th\u1eddi gian, s\u1ef1 k\u1ef7 lu\u1eadt n\u00e0y s\u1ebd tr\u1edf th\u00e0nh m\u1ed9t ph\u1ea7n c\u1ed1t l\u00f5i trong quy tr\u00ecnh l\u00e0m vi\u1ec7c, gi\u1ea3m thi\u1ec3u l\u1ed7i v\u00e0 c\u1ea3i thi\u1ec7n t\u1ed1c \u0111\u1ed9 l\u00e0m vi\u1ec7c c\u1ee7a \u0111\u1ed9i nh\u00f3m.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trong ki\u1ebfn tr\u00fac ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i, l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u quan tr\u1ecdng kh\u00f4ng k\u00e9m g\u00ec m\u00e3 ngu\u1ed3n \u1ee9ng d\u1ee5ng. Tuy nhi\u00ean, n\u00f3 th\u01b0\u1eddng b\u1ecb b\u1ecf qua trong&hellip;<\/p>\n","protected":false},"author":1,"featured_media":2012,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca","_yoast_wpseo_metadesc":"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.","fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[68],"tags":[89,92],"class_list":["post-2011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-design","tag-academic","tag-erd"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca<\/title>\n<meta name=\"description\" content=\"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca\" \/>\n<meta property=\"og:description\" content=\"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\" \/>\n<meta property=\"og:site_name\" content=\"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-06T21:19:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1664\" \/>\n\t<meta property=\"og:image:height\" content=\"928\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"vpadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi\" \/>\n\t<meta name=\"twitter:data1\" content=\"vpadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\"},\"author\":{\"name\":\"vpadmin\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/d69595112293b803501f7b381be28255\"},\"headline\":\"C\u00e1c Th\u1ef1c Ti\u1ec5n T\u1ed1t Nh\u1ea5t \u0111\u1ec3 Ghi Ch\u00e9p C\u00e1c Thay \u0110\u1ed5i trong S\u01a1 \u0110\u1ed3 M\u1ed1i Quan H\u1ec7 Th\u1ef1c Th\u1ec3 trong C\u00e1c Quy Tr\u00ecnh L\u00e0m Vi\u1ec7c D\u1ef1a tr\u00ean Git\",\"datePublished\":\"2026-04-06T21:19:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\"},\"wordCount\":3866,\"publisher\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\",\"keywords\":[\"academic\",\"erd\"],\"articleSection\":[\"Database Design\"],\"inLanguage\":\"vi\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\",\"url\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\",\"name\":\"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca\",\"isPartOf\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\",\"datePublished\":\"2026-04-06T21:19:59+00:00\",\"description\":\"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage\",\"url\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\",\"contentUrl\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg\",\"width\":1664,\"height\":928},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.viz-note.com\/vi\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00e1c Th\u1ef1c Ti\u1ec5n T\u1ed1t Nh\u1ea5t \u0111\u1ec3 Ghi Ch\u00e9p C\u00e1c Thay \u0110\u1ed5i trong S\u01a1 \u0110\u1ed3 M\u1ed1i Quan H\u1ec7 Th\u1ef1c Th\u1ec3 trong C\u00e1c Quy Tr\u00ecnh L\u00e0m Vi\u1ec7c D\u1ef1a tr\u00ean Git\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#website\",\"url\":\"https:\/\/www.viz-note.com\/vi\/\",\"name\":\"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.viz-note.com\/vi\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#organization\",\"name\":\"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates\",\"url\":\"https:\/\/www.viz-note.com\/vi\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2025\/03\/cropped-viz-note-logo.png\",\"contentUrl\":\"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2025\/03\/cropped-viz-note-logo.png\",\"width\":512,\"height\":512,\"caption\":\"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates\"},\"image\":{\"@id\":\"https:\/\/www.viz-note.com\/vi\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/d69595112293b803501f7b381be28255\",\"name\":\"vpadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g\",\"caption\":\"vpadmin\"},\"sameAs\":[\"https:\/\/www.viz-note.com\"],\"url\":\"https:\/\/www.viz-note.com\/vi\/author\/vpadmin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca","description":"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/","og_locale":"vi_VN","og_type":"article","og_title":"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca","og_description":"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.","og_url":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/","og_site_name":"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates","article_published_time":"2026-04-06T21:19:59+00:00","og_image":[{"width":1664,"height":928,"url":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg","type":"image\/jpeg"}],"author":"vpadmin","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"vpadmin","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"20 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#article","isPartOf":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/"},"author":{"name":"vpadmin","@id":"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/d69595112293b803501f7b381be28255"},"headline":"C\u00e1c Th\u1ef1c Ti\u1ec5n T\u1ed1t Nh\u1ea5t \u0111\u1ec3 Ghi Ch\u00e9p C\u00e1c Thay \u0110\u1ed5i trong S\u01a1 \u0110\u1ed3 M\u1ed1i Quan H\u1ec7 Th\u1ef1c Th\u1ec3 trong C\u00e1c Quy Tr\u00ecnh L\u00e0m Vi\u1ec7c D\u1ef1a tr\u00ean Git","datePublished":"2026-04-06T21:19:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/"},"wordCount":3866,"publisher":{"@id":"https:\/\/www.viz-note.com\/vi\/#organization"},"image":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage"},"thumbnailUrl":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg","keywords":["academic","erd"],"articleSection":["Database Design"],"inLanguage":"vi"},{"@type":"WebPage","@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/","url":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/","name":"C\u00e1c Th\u1ef1c h\u00e0nh T\u1ed1t nh\u1ea5t cho Thay \u0111\u1ed5i ERD trong Quy tr\u00ecnh Git \ud83d\udcca","isPartOf":{"@id":"https:\/\/www.viz-note.com\/vi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage"},"image":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage"},"thumbnailUrl":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg","datePublished":"2026-04-06T21:19:59+00:00","description":"H\u1ecdc c\u00e1ch ki\u1ec3m so\u00e1t phi\u00ean b\u1ea3n c\u00e1c s\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3. M\u1ed9t h\u01b0\u1edbng d\u1eabn v\u1ec1 qu\u1ea3n l\u00fd l\u01b0\u1ee3c \u0111\u1ed3, v\u1ec7 sinh commit v\u00e0 h\u1ee3p t\u00e1c trong c\u00e1c quy tr\u00ecnh l\u00e0m vi\u1ec7c d\u1ef1a tr\u00ean Git.","breadcrumb":{"@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#primaryimage","url":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg","contentUrl":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2026\/04\/erd-git-workflow-best-practices-infographic-sketch.jpg","width":1664,"height":928},{"@type":"BreadcrumbList","@id":"https:\/\/www.viz-note.com\/vi\/best-practices-documenting-erd-changes-git-workflows\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.viz-note.com\/vi\/"},{"@type":"ListItem","position":2,"name":"C\u00e1c Th\u1ef1c Ti\u1ec5n T\u1ed1t Nh\u1ea5t \u0111\u1ec3 Ghi Ch\u00e9p C\u00e1c Thay \u0110\u1ed5i trong S\u01a1 \u0110\u1ed3 M\u1ed1i Quan H\u1ec7 Th\u1ef1c Th\u1ec3 trong C\u00e1c Quy Tr\u00ecnh L\u00e0m Vi\u1ec7c D\u1ef1a tr\u00ean Git"}]},{"@type":"WebSite","@id":"https:\/\/www.viz-note.com\/vi\/#website","url":"https:\/\/www.viz-note.com\/vi\/","name":"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates","description":"","publisher":{"@id":"https:\/\/www.viz-note.com\/vi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.viz-note.com\/vi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.viz-note.com\/vi\/#organization","name":"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates","url":"https:\/\/www.viz-note.com\/vi\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.viz-note.com\/vi\/#\/schema\/logo\/image\/","url":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2025\/03\/cropped-viz-note-logo.png","contentUrl":"https:\/\/www.viz-note.com\/vi\/wp-content\/uploads\/sites\/10\/2025\/03\/cropped-viz-note-logo.png","width":512,"height":512,"caption":"Viz Note Vietnamese - AI Insights &amp; Software Industry Updates"},"image":{"@id":"https:\/\/www.viz-note.com\/vi\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/d69595112293b803501f7b381be28255","name":"vpadmin","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.viz-note.com\/vi\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56e0eb902506d9cea7c7e209205383146b8e81c0ef2eff693d9d5e0276b3d7e3?s=96&d=mm&r=g","caption":"vpadmin"},"sameAs":["https:\/\/www.viz-note.com"],"url":"https:\/\/www.viz-note.com\/vi\/author\/vpadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/posts\/2011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/comments?post=2011"}],"version-history":[{"count":0,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/posts\/2011\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/media\/2012"}],"wp:attachment":[{"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/media?parent=2011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/categories?post=2011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.viz-note.com\/vi\/wp-json\/wp\/v2\/tags?post=2011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}