{"id":2102,"date":"2026-05-26T08:05:43","date_gmt":"2026-05-26T08:05:43","guid":{"rendered":"https:\/\/www.vpascode.com\/vn\/docs\/uncategorized\/mermaid-js-erd-syntax-guide\/"},"modified":"2026-05-26T08:05:43","modified_gmt":"2026-05-26T08:05:43","slug":"mermaid-js-erd-syntax-guide","status":"publish","type":"ld_docs","link":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/","title":{"rendered":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p ERD c\u1ee7a Mermaid.js"},"content":{"rendered":"<h2>\u0110i\u1ec3m quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD) l\u00e0 g\u00ec?<\/h2>\n<p>M\u1ed9t <strong>S\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD)<\/strong> l\u00e0 b\u1ea3n v\u1ebd c\u1ea5u tr\u00fac \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 thi\u1ebft k\u1ebf, t\u00e0i li\u1ec7u h\u00f3a v\u00e0 ph\u00e2n t\u00edch c\u00e1c l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7. N\u00f3 m\u00f4 t\u1ea3 c\u00e1c b\u1ea3ng d\u1eef li\u1ec7u c\u1ee5 th\u1ec3 (th\u1ef1c th\u1ec3) trong m\u1ed9t \u1ee9ng d\u1ee5ng, c\u00e1c c\u1ed9t (thu\u1ed9c t\u00ednh) \u0111\u01b0\u1ee3c nh\u00fang b\u00ean trong c\u00e1c b\u1ea3ng \u0111\u00f3, v\u00e0 c\u00e1c quy t\u1eafc to\u00e0n v\u1eb9n tham chi\u1ebfu k\u1ebft n\u1ed1i ch\u00fang l\u1ea1i v\u1edbi nhau. \u0110\u01b0\u1ee3c vi\u1ebft b\u1eb1ng k\u00fd hi\u1ec7u ti\u00eau chu\u1ea9n <strong>k\u00fd hi\u1ec7u K\u1ef9 thu\u1eadt Th\u00f4ng tin (IE)<\/strong>, n\u00f3 tri\u1ec3n khai r\u00f5 r\u00e0ng <strong>k\u00fd hi\u1ec7u ch\u00e2n chim<\/strong> c\u00e1c \u0111\u1ea7u \u0111\u1ec3 th\u1ec3 hi\u1ec7n c\u00e1c r\u00e0ng bu\u1ed9c d\u1eef li\u1ec7u v\u00e0 c\u00e1c ph\u1ee5 thu\u1ed9c gi\u1eefa nhi\u1ec1u b\u1ea3ng.<\/p>\n<p>V\u1edbi <strong>Mermaid.js<\/strong>, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a ch\u1ec9 m\u1ee5c b\u1ea3ng s\u1ea3n xu\u1ea5t, ki\u1ec3u d\u1eef li\u1ec7u v\u00e0 c\u00e1c k\u1ebft n\u1ed1i kh\u00f3a ngo\u1ea1i b\u1eb1ng m\u1ed9t kh\u1ed1i v\u0103n b\u1ea3n r\u00f5 r\u00e0ng, khai b\u00e1o. B\u1ed9 x\u1eed l\u00fd t\u1ef1 \u0111\u1ed9ng x\u1eed l\u00fd k\u00edch th\u01b0\u1edbc cho c\u00e1c container b\u1ed1 c\u1ee5c nhi\u1ec1u c\u1ed9t v\u00e0 \u0111\u1ecbnh tuy\u1ebfn c\u00e1c \u0111\u01b0\u1eddng n\u1ed1i m\u00e0 kh\u00f4ng \u0111\u1ec3 nh\u00e3n v\u0103n b\u1ea3n ch\u1ed3ng l\u1ea5n l\u00ean nhau.<\/p>\n<h2>H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p c\u1ed1t l\u00f5i: C\u00e1c th\u00e0nh ph\u1ea7n v\u00e0 c\u1ea5u tr\u00fac<\/h2>\n<p>X\u00e2y d\u1ef1ng m\u1ed9t l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u h\u1ee3p l\u1ec7, ho\u00e0n to\u00e0n c\u00f3 th\u1ec3 ch\u1ea1y \u0111\u01b0\u1ee3c trong Mermaid ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c kh\u1ed1i th\u1ef1c th\u1ec3 c\u1ea5u tr\u00fac, \u00e1nh x\u1ea1 ki\u1ec3u d\u1eef li\u1ec7u, nh\u00e3n ch\u1ec9 m\u1ee5c v\u00e0 to\u00e1n t\u1eed c\u1ea5p \u0111\u1ed9.<\/p>\n<h3>1. Khai b\u00e1o c\u00e1c th\u1ef1c th\u1ec3 v\u00e0 c\u1ed9t b\u1ea3ng<\/h3>\n<p>B\u1ea1n kh\u1edfi t\u1ea1o b\u1ea3ng ERD \u1edf d\u00f2ng \u0111\u1ea7u ti\u00ean b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a <code>erDiagram<\/code> t\u1eeb kh\u00f3a. \u0110\u1ec3 \u0111\u1ecbnh ngh\u0129a m\u1ed9t b\u1ea3ng, h\u00e3y vi\u1ebft t\u00ean th\u1ef1c th\u1ec3 theo sau l\u00e0 d\u1ea5u ngo\u1eb7c nh\u1ecdn m\u1edf, li\u1ec7t k\u00ea c\u00e1c c\u1ea5u h\u00ecnh c\u1ed9t c\u1ee7a b\u1ea1n theo th\u1ee9 t\u1ef1 tr\u00ean t\u1eebng d\u00f2ng ri\u00eang bi\u1ec7t:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghWoIBwQy80oUMlMQ\/OKSosy8dIXU3MTMHIRoSWZuanFJYm6BQnJRamJJakp8YglEthYAu7UZoQ==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghWoIBwQy80oUMlMQ\/OKSosy8dIXU3MTMHIRoSWZuanFJYm6BQnJRamJJakp8YglEthYAu7UZoQ==\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">erDiagram\r\n    USERS {\r\n        int id\r\n        string email\r\n        timestamp created_at\r\n    }<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghWoIBwQy80oUMlMQ\/OKSosy8dIXU3MTMHIRoSWZuanFJYm6BQnJRamJJakp8YglEthYAu7UZoQ==\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghWoIBwQy80oUMlMQ\/OKSosy8dIXU3MTMHIRoSWZuanFJYm6BQnJRamJJakp8YglEthYAu7UZoQ==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"VkXootV\"><img alt=\"\" class=\"alignnone size-full wp-image-629\" decoding=\"async\" height=\"187\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903a383fb3.png\" width=\"221\"\/><\/p>\n<h3>2. \u0110\u00e1nh d\u1ea5u kh\u00f3a ch\u00ednh, kh\u00f3a ngo\u1ea1i v\u00e0 ch\u00fa th\u00edch<\/h3>\n<p>\u0110\u1ed9ng c\u01a1 ERD c\u1ee7a Mermaid cho ph\u00e9p b\u1ea1n g\u00e1n c\u00e1c th\u1ebb ch\u1ec9 m\u1ee5c c\u1ea5u tr\u00fac ngay sau t\u00ean c\u1ed9t v\u00e0 \u0111\u1ecbnh ngh\u0129a ki\u1ec3u d\u1eef li\u1ec7u. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 th\u00eam m\u1ed9t ch\u00fa th\u00edch v\u0103n b\u1ea3n t\u00f9y ch\u1ecdn cho m\u1ed9t c\u1ed9t b\u1eb1ng c\u00e1ch bao quanh n\u00f3 b\u1eb1ng d\u1ea5u ngo\u1eb7c k\u00e9p:<\/p>\n<ul>\n<li><code>PK<\/code> \u2014 \u0110\u00e1nh d\u1ea5u r\u00f5 r\u00e0ng m\u1ed9t c\u1ed9t l\u00e0 Kh\u00f3a ch\u00ednh c\u1ee7a b\u1ea3ng.<\/li>\n<li><code>FK<\/code> \u2014 \u0110\u00e1nh d\u1ea5u m\u1ed9t c\u1ed9t l\u00e0 Kh\u00f3a ngo\u1ea1i li\u00ean k\u1ebft v\u1edbi m\u1ed9t b\u1ea3ng cha.<\/li>\n<\/ul>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAAv8gF9egYIVqCA8EMvNKFDJTFAK8UYVKi1OL4oHibt4KSj6ZednFCiX5CqHBQM16mSlKCLXFJUWZeekKyfmlBfl58cn5KakQuVoAct0gOw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAAv8gF9egYIVqCA8EMvNKFDJTFAK8UYVKi1OL4oHibt4KSj6Zh1flKWQ\/3LW\/ROHIRCCVpxAaDDRGLzNFCaGruKQoMy9dITm\/tCA\/Lz45PyUVIlcLAKqIJ10=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">erDiagram\r\n    ORDERS {\r\n        int id PK\r\n        int user_id FK \"Li\u00ean k\u1ebft \u0111\u1ebfn USERS.id\"\r\n        string coupon_code\r\n    }<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAAv8gF9egYIVqCA8EMvNKFDJTFAK8UYVKi1OL4oHibt4KSj6Zh1flKWQ\/3LW\/ROHIRCCVpxAaDDRGLzNFCaGruKQoMy9dITm\/tCA\/Lz45PyUVIlcLAKqIJ10=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAAv8gF9egYIVqCA8EMvNKFDJTFAK8UYVKi1OL4oHibt4KSj6ZednFCiX5CqHBQM16mSlKCLXFJUWZeekKyfmlBfl58cn5KakQuVoAct0gOw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"aCCwRBw\"><img fetchpriority=\"high\" alt=\"\" class=\"alignnone size-full wp-image-632\" decoding=\"async\" fetchpriority=\"high\" height=\"817\" sizes=\"(max-width: 268px) 100vw, 268px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451.png 268w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451-98x300.png 98w\" width=\"268\"\/><\/p>\n<h3>3. Th\u00e0nh th\u1ea1o c\u00e1c b\u1ed9 \u0111\u1ecbnh danh t\u00ednh ch\u1ea5t ki\u1ec3u ch\u00e2n chim<\/h3>\n<p>\u0110\u1ec3 k\u1ebft n\u1ed1i c\u00e1c b\u1ea3ng v\u00e0 th\u1ef1c thi c\u00e1c quy t\u1eafc to\u00e0n v\u1eb9n tham chi\u1ebfu, h\u00e3y \u00e1nh x\u1ea1 c\u00e1c m\u1ed1i quan h\u1ec7 c\u1ee7a ch\u00fang b\u1eb1ng c\u00e1c to\u00e1n t\u1eed \u0111\u01b0\u1eddng \u0111\u1eb7c bi\u1ec7t. C\u00e1c \u0111\u1ea7u k\u00fd t\u1ef1 t\u1ea1o th\u00e0nh h\u00ecnh d\u1ea1ng h\u00ecnh chim ch\u00f3c tr\u1ef1c quan, x\u00e1c \u0111\u1ecbnh c\u00e1c r\u00e0ng bu\u1ed9c b\u1ed9i s\u1ed1 d\u1eef li\u1ec7u:<\/p>\n<ul>\n<li><code>||--||<\/code> **Ch\u00ednh x\u00e1c m\u1ed9t \u0111\u1ebfn ch\u00ednh x\u00e1c m\u1ed9t:** M\u1ed9t \u00e1nh x\u1ea1 1:1 nghi\u00eam ng\u1eb7t, b\u1eaft bu\u1ed9c.<\/li>\n<li><code>||--o|<\/code> **Ch\u00ednh x\u00e1c m\u1ed9t \u0111\u1ebfn kh\u00f4ng ho\u1eb7c m\u1ed9t:** M\u1ed9t m\u1ed1i quan h\u1ec7 1:1 t\u00f9y ch\u1ecdn.<\/li>\n<li><code>||--|{<\/code> **Ch\u00ednh x\u00e1c m\u1ed9t \u0111\u1ebfn m\u1ed9t ho\u1eb7c nhi\u1ec1u:** M\u1ed9t li\u00ean k\u1ebft cha con 1:N b\u1eaft bu\u1ed9c.<\/li>\n<li><code>||--o{<\/code> **Ch\u00ednh x\u00e1c m\u1ed9t \u0111\u1ebfn kh\u00f4ng, m\u1ed9t ho\u1eb7c nhi\u1ec1u:** M\u1ed9t m\u1ed1i quan h\u1ec7 1:N ti\u00eau chu\u1ea9n, t\u00f9y ch\u1ecdn.<\/li>\n<\/ul>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghZoaXd38agX\/IBcQz0pBqSAnMTm1WAkAMZMNNw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghZoaXd38agX\/IBcQz0pB6cjEh7u2lygBADmRDto=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">erDiagram\r\n    USERS ||--o{ ORDERS : \"\u0111\u1eb7t\" <\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghZoaXd38agX\/IBcQz0pB6cjEh7u2lygBADmRDto=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNpLLXLJTEwvSszl5VIAgtBg16BghZoaXd38agX\/IBcQz0pBqSAnMTm1WAkAMZMNNw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><img alt=\"\" class=\"alignnone size-full wp-image-631\" decoding=\"async\" height=\"285\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903aca991c.png\" width=\"116\"\/><\/p>\n<h2>C\u00e1c th\u1ef1c h\u00e0nh t\u1ed1t nh\u1ea5t cho c\u00e1c l\u01b0\u1ee3c \u0111\u1ed3 d\u1eef li\u1ec7u quan h\u1ec7<\/h2>\n<ul>\n<li><strong>Duy tr\u00ec c\u00e1ch vi\u1ebft hoa th\u01b0\u1eddng xuy\u00ean cho c\u00e1c b\u1ea3ng:<\/strong> Gi\u1eef t\u00ean th\u1ef1c th\u1ec3 d\u1ec5 d\u1ef1 \u0111o\u00e1n. S\u1eed d\u1ee5ng chu\u1ed7i vi\u1ebft hoa to\u00e0n b\u1ed9 (v\u00ed d\u1ee5 nh\u01b0 <code>USER_ACCOUNTS<\/code>) ho\u1eb7c snake_case vi\u1ebft th\u01b0\u1eddng nghi\u00eam ng\u1eb7t (v\u00ed d\u1ee5 nh\u01b0 <code>user_accounts<\/code>) \u0111\u1ec3 ph\u00f9 h\u1ee3p v\u1edbi m\u00e3 c\u01a1 s\u1edf h\u1ea1 t\u1ea7ng SQL th\u1ef1c t\u1ebf c\u1ee7a b\u1ea1n.<\/li>\n<li><strong>Lu\u00f4n lu\u00f4n bao g\u1ed3m ki\u1ec3u d\u1eef li\u1ec7u:<\/strong> Tr\u00e1nh khai b\u00e1o v\u0103n b\u1ea3n c\u1ed9t th\u00f4 m\u00e0 kh\u00f4ng c\u00f3 ki\u1ec3u. Li\u1ec7t k\u00ea r\u00f5 r\u00e0ng c\u00e1c \u0111\u1ecbnh ngh\u0129a nh\u01b0 <code>int<\/code>, <code>varchar<\/code>, ho\u1eb7c <code>boolean<\/code> \u0111\u1ea3m b\u1ea3o c\u00e1c bi\u1ec3u \u0111\u1ed3 ki\u1ebfn tr\u00fac c\u1ee7a b\u1ea1n ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t t\u00e0i li\u1ec7u tham kh\u1ea3o k\u1ef9 thu\u1eadt ch\u00ednh x\u00e1c.<\/li>\n<li><strong>Gi\u1eef nh\u00e3n m\u1ed1i quan h\u1ec7 d\u01b0\u1edbi d\u1ea1ng \u0111\u1ed9ng t\u1eeb:<\/strong> Khi li\u00ean k\u1ebft c\u00e1c th\u00e0nh ph\u1ea7n, h\u00e3y cung c\u1ea5p m\u1ed9t chu\u1ed7i \u0111\u1ed9ng t\u1eeb ng\u1eafn g\u1ecdn, vi\u1ebft th\u01b0\u1eddng b\u00ean trong g\u00e1n m\u1ed1i quan h\u1ec7 c\u1ee7a b\u1ea1n (v\u00ed d\u1ee5, <code>||--o{ : \"ch\u1ee9a\"<\/code>) \u0111\u1ec3 ghi ch\u00fa b\u1ea3n \u0111\u1ed3 logic kinh doanh.<\/li>\n<\/ul>\n<h2>V\u00ed d\u1ee5 bi\u1ec3u \u0111\u1ed3 ERD Mermaid.js trong th\u1ebf gi\u1edbi th\u1ef1c<\/h2>\n<h3>V\u00ed d\u1ee5 1: M\u00f4 h\u00ecnh giao d\u1ecbch c\u1ed1t l\u00f5i th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed (Kh\u00f3a &amp; B\u1ea3n \u0111\u1ed3)<\/h3>\n<p>B\u1ea3n thi\u1ebft k\u1ebf ch\u1ee9c n\u0103ng n\u00e0y m\u00f4 ph\u1ecfng v\u00f2ng l\u1eb7p giao d\u1ecbch c\u01a1 s\u1edf d\u1eef li\u1ec7u th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed c\u1ed1t l\u00f5i, cho th\u1ea5y c\u00e1ch ng\u01b0\u1eddi d\u00f9ng, \u0111\u01a1n h\u00e0ng v\u00e0 h\u1ec7 th\u1ed1ng theo d\u00f5i thanh to\u00e1n \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi nhau b\u1eb1ng c\u00e1c r\u00e0ng bu\u1ed9c ki\u1ec3u ch\u00e2n chim nghi\u00eam ng\u1eb7t.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkM0KwjAQhO+C7xB69wW8iVURfyptPYelXWuwSSS7RcT67qZU8aeC7inMJJlvB12ooHCg+z3hZ7xN0mg1iRNxaYVmlGGhcrFZPCVip0whUIMqO+oRiE7W5XIPtG\/da7\/XHqI4\/P17I2UVsdXopPemL16OmdJQCrYMpQRtK8MdAmLgij6i03i0TkbjdB6t5XISzv7j8Ht0Ie4xDnfo0GQo2R7QdPwCGE9w\/uB4dlzXg4G9PDoZiuBYQoYUvFXVXKrrr\/T+RYEGnY+h4Aa9SHin\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkE0KwjAQhfeCdwjdewF3YlXEn0pb12FoxxpsEkmmiFgP4RE8heDai3gTW6r4U0FnNbw3yXzz0LgCEgOy2WBFdedB6E16fsB2lVCWUMREzGajp2TJCJUwlCDSmroGazfaxHwJdlm5+2ajajzf\/f17KUWZJS3R8MLrv3gxRkJCykgTpBykzhTVCCwBZfZjdeh3pkGnGw69KR\/33MF\/HMUddYj7GoMLNKgi5KRXqGp+AoQb2H5wPDPO81ZL7x6ZtJlzOVzPJ3LeoiqH8vwrffGCruejZgacG6gaep4=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">erDiagram\r\n    CUSTOMERS {\r\n        int id PK\r\n        string email\r\n        string password_hash\r\n    }\r\n\r\n    ORDERS {\r\n        int id PK\r\n        int customer_id FK\r\n        decimal total_amount\r\n        string status\r\n    }\r\n\r\n    TRANSACTION_LEDGERS {\r\n        int id PK\r\n        int order_id FK\r\n        string reference_token\r\n        string gateway\r\n    }\r\n\r\n    CUSTOMERS ||--o{ ORDERS : \"\u0111\u1eb7t\"\r\n    ORDERS ||--|| TRANSACTION_LEDGERS : \"t\u1ea1o ra\" <\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkE0KwjAQhfeCdwjdewF3YlXEn0pb12FoxxpsEkmmiFgP4RE8heDai3gTW6r4U0FnNbw3yXzz0LgCEgOy2WBFdedB6E16fsB2lVCWUMREzGajp2TJCJUwlCDSmroGazfaxHwJdlm5+2ajajzf\/f17KUWZJS3R8MLrv3gxRkJCykgTpBykzhTVCCwBZfZjdeh3pkGnGw69KR\/33MF\/HMUddYj7GoMLNKgi5KRXqGp+AoQb2H5wPDPO81ZL7x6ZtJlzOVzPJ3LeoiqH8vwrffGCruejZgacG6gaep4=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkM0KwjAQhO+C7xB69wW8iVURfyptPYelXWuwSSS7RcT67qZU8aeC7inMJJlvB12ooHCg+z3hZ7xN0mg1iRNxaYVmlGGhcrFZPCVip0whUIMqO+oRiE7W5XIPtG\/da7\/XHqI4\/P17I2UVsdXopPemL16OmdJQCrYMpQRtK8MdAmLgij6i03i0TkbjdB6t5XISzv7j8Ht0Ie4xDnfo0GQo2R7QdPwCGE9w\/uB4dlzXg4G9PDoZiuBYQoYUvFXVXKrrr\/T+RYEGnY+h4Aa9SHin\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"qqEcCcA\"><img fetchpriority=\"high\" alt=\"\" class=\"alignnone size-full wp-image-632\" decoding=\"async\" fetchpriority=\"high\" height=\"817\" sizes=\"(max-width: 268px) 100vw, 268px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451.png 268w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903b8be451-98x300.png 98w\" width=\"268\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> B\u1ea3n thi\u1ebft k\u1ebf n\u00e0y \u00e1nh x\u1ea1 r\u00f5 r\u00e0ng c\u00e1c ranh gi\u1edbi giao d\u1ecbch. C\u00e1c quy t\u1eafc \u00e1nh x\u1ea1 quy \u0111\u1ecbnh r\u1eb1ng m\u1ed9t kh\u00e1ch h\u00e0ng c\u00f3 th\u1ec3 \u0111\u1eb7t t\u1eeb 0 \u0111\u1ebfn nhi\u1ec1u \u0111\u01a1n h\u00e0ng theo th\u1eddi gian (<code>||--o{<\/code>), trong khi m\u1ed7i b\u1ea3n ghi \u0111\u01a1n h\u00e0ng ph\u1ea3i t\u1ea1o ra \u0111\u00fang m\u1ed9t m\u1ee5c ghi s\u1ed5 giao d\u1ecbch t\u01b0\u01a1ng \u1ee9ng (<code>||--||<\/code>).<\/p>\n<h3>V\u00ed d\u1ee5 2: B\u1ea3n thi\u1ebft k\u1ebf H\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd n\u1ed9i dung doanh nghi\u1ec7p (Giao \u0111i\u1ec3m nhi\u1ec1u-\u0111a)<\/h3>\n<p>B\u1ea3n thi\u1ebft k\u1ebf c\u01a1 s\u1edf d\u1eef li\u1ec7u n\u00e2ng cao n\u00e0y m\u00f4 t\u1ea3 ki\u1ebfn tr\u00fac n\u1ec1n t\u1ea3ng qu\u1ea3n l\u00fd n\u1ed9i dung. N\u00f3 chi ti\u1ebft c\u00e1ch gi\u1ea3i quy\u1ebft c\u00e1c c\u1ea5u h\u00ecnh nhi\u1ec1u-\u0111a ph\u1ee9c t\u1ea1p b\u1eb1ng c\u00e1ch gi\u1edbi thi\u1ec7u m\u1ed9t th\u1ef1c th\u1ec3 \u00e1nh x\u1ea1 c\u1ea7u n\u1ed1i r\u00f5 r\u00e0ng.<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">Mermaid<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkU1uwjAQhfdI3GHEulygO9QGhFBIRNh0ZU0d14wU25E9SCDo3RuTtjQ1FZ2VPT9+\/t4o\/0yoPZrxCLooi2pbwam\/xCDLQDWUq2sqsCergYkblWRDs9fXJKsDw6urj0I6y8pyX3ofj\/rD02ybLYrNMvunpkWTStYqSE8tk7O\/no804lPjReSzslyuF4lU6wKLi94DzFfDmkRW2vnjrTqTUYHRtIAhkLaqFpgAFnmere9a+vMb8xQb97xzXgzpL95KZ0xnq4ge34Cv4HyeTt3pLyceYRIXg2TDJNnI\/dEmgr+R+hoeSH6jd53IjHLX9X0AN3qkJw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 8px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n            <div class=\"vpascode-viewer-container vpascode-fancy-active\">\r\n                                <div class=\"vpascode-header\">\r\n                    <span class=\"vpascode-lang-label\">Mermaid<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkUFOwzAQRfeVeodR1vQC7CpIq6pKE5FuWFnGsZIRsR3ZU4mq5RAcAVaw4AKwDBfpTUgaRCkOKrOy\/9jz\/L+lvUSeW66GA2gqidNlCptu0xZqAswgmR8kRxZ1DoRUSk915So\/iCTvCG5MtmbCaJKautb9cNAtLsbLcBpfzcJ\/MjVXPjKTTlisCI3+Nb51w74Y1ywaJ8lsMfVQlXHE9rwzmMyPe4KTzI1d9\/UJlXTEVQXcOcy1zBj3DMZRFC5ORvrzGRPfNl9RYSw7dr\/PVhilmlhZm3GP+RS229HIbP5K4hwCUezeX3jg\/cfJi1VRP2koze7tEYMe5Lf15uzHQ\/2qC7itn1XwCcjJqQ8=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 8px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-mermaid\"><code class=\"language-mermaid\" data-language=\"mermaid\" class=\"language-mermaid\">erDiagram\r\n    POSTS {\r\n        int id PK\r\n        string title\r\n        string slug\r\n        text body_content\r\n    }\r\n\r\n    CATEGORIES {\r\n        int id PK\r\n        string name\r\n        string description\r\n    }\r\n\r\n    POST_CATEGORY_MAPPINGS {\r\n        int post_id PK, FK\r\n        int category_id PK, FK\r\n        timestamp assigned_at\r\n    }\r\n\r\n    COMMENTS {\r\n        int id PK\r\n        int post_id FK\r\n        string author_name\r\n        text comment_body\r\n    }\r\n\r\n    POSTS ||--o{ POST_CATEGORY_MAPPINGS : \"ch\u1ee9a\"\r\n    CATEGORIES ||--o{ POST_CATEGORY_MAPPINGS : \"ph\u00e2n lo\u1ea1i\"\r\n    POSTS ||--o{ COMMENTS : \"\u0111\u00ednh k\u00e8m\" <\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkUFOwzAQRfeVeodR1vQC7CpIq6pKE5FuWFnGsZIRsR3ZU4mq5RAcAVaw4AKwDBfpTUgaRCkOKrOy\/9jz\/L+lvUSeW66GA2gqidNlCptu0xZqAswgmR8kRxZ1DoRUSk915So\/iCTvCG5MtmbCaJKautb9cNAtLsbLcBpfzcJ\/MjVXPjKTTlisCI3+Nb51w74Y1ywaJ8lsMfVQlXHE9rwzmMyPe4KTzI1d9\/UJlXTEVQXcOcy1zBj3DMZRFC5ORvrzGRPfNl9RYSw7dr\/PVhilmlhZm3GP+RS229HIbP5K4hwCUezeX3jg\/cfJi1VRP2koze7tEYMe5Lf15uzHQ\/2qC7itn1XwCcjJqQ8=\" \r\n                       target=\"_blank\" \r\n                       rel=\"noopener noreferrer\" \r\n                       class=\"vpascode-fancy-btn\">\r\n                        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"margin-right: 6px;\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg>\r\n                        <span>Edit Mermaid in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n            <\/div>\r\n            \n<\/p><\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#mermaid:eNqNkU1uwjAQhfdI3GHEulygO9QGhFBIRNh0ZU0d14wU25E9SCDo3RuTtjQ1FZ2VPT9+\/t4o\/0yoPZrxCLooi2pbwam\/xCDLQDWUq2sqsCergYkblWRDs9fXJKsDw6urj0I6y8pyX3ofj\/rD02ybLYrNMvunpkWTStYqSE8tk7O\/no804lPjReSzslyuF4lU6wKLi94DzFfDmkRW2vnjrTqTUYHRtIAhkLaqFpgAFnmere9a+vMb8xQb97xzXgzpL95KZ0xnq4ge34Cv4HyeTt3pLyceYRIXg2TDJNnI\/dEmgr+R+hoeSH6jd53IjHLX9X0AN3qkJw==\" rel=\"noopener noreferrer\" target=\"_blank\"><br \/>\n<svg fill=\"none\" height=\"14\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\" style=\"margin-right: 6px;\" viewbox=\"0 0 24 24\" width=\"14\"><path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path><\/svg><br \/>\n<span>Ch\u1ec9nh s\u1eeda Mermaid trong VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p id=\"NkBriQB\"><img loading=\"lazy\" alt=\"\" class=\"alignnone size-full wp-image-633\" decoding=\"async\" height=\"545\" loading=\"lazy\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" src=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903d115d5e.png\" srcset=\"https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903d115d5e.png 709w, https:\/\/www.vpascode.com\/wp-content\/uploads\/2026\/05\/img_6a1903d115d5e-300x231.png 300w\" width=\"709\"\/><\/p>\n<p><strong>Ph\u00e2n t\u00edch c\u00fa ph\u00e1p:<\/strong> \u0110\u1ec3 x\u1eed l\u00fd m\u1ed1i quan h\u1ec7 nhi\u1ec1u-\u0111a gi\u1eefa `POSTS` v\u00e0 `CATEGORIES`, \u0111o\u1ea1n m\u00e3 gi\u1edbi thi\u1ec7u m\u1ed9t b\u1ea3ng giao \u0111i\u1ec3m (`POST_CATEGORY_MAPPINGS`). H\u1ed9p \u00e1nh x\u1ea1 n\u00e0y s\u1eed d\u1ee5ng kh\u00f3a h\u1ee3p th\u00e0nh v\u1eeba \u0111\u00f3ng vai tr\u00f2 kh\u00f3a ch\u00ednh v\u1eeba kh\u00f3a ngo\u1ea1i (<code>PK FK<\/code>), k\u1ebft n\u1ed1i c\u00e1c n\u00fat b\u00ean ngo\u00e0i v\u1edbi nhau b\u1eb1ng c\u00e1c k\u1ebft n\u1ed1i ki\u1ec3u ch\u00e2n chim m\u1ed9t-\u0111a ti\u00eau chu\u1ea9n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0110i\u1ec3m quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD) l\u00e0 g\u00ec? M\u1ed9t S\u01a1 \u0111\u1ed3 quan h\u1ec7 th\u1ef1c th\u1ec3 (ERD) l\u00e0 b\u1ea3n v\u1ebd c\u1ea5u tr\u00fac \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 thi\u1ebft k\u1ebf, t\u00e0i li\u1ec7u h\u00f3a v\u00e0 ph\u00e2n t\u00edch c\u00e1c l\u01b0\u1ee3c \u0111\u1ed3 c\u01a1 s\u1edf d\u1eef li\u1ec7u&#8230;<\/p>\n","protected":false},"author":4,"featured_media":2103,"parent":0,"menu_order":4,"template":"","meta":{"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}}},"ld_collection":[14],"class_list":["post-2102","ld_docs","type-ld_docs","status-publish","has-post-thumbnail","hentry","ld_collection-vpascode-docs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide<\/title>\n<meta name=\"description\" content=\"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.\" \/>\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.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide\" \/>\n<meta property=\"og:description\" content=\"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"VPasCode\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/05\/img_6a1903d115d5e-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"709\" \/>\n\t<meta property=\"og:image:height\" content=\"545\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/\",\"name\":\"Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/05\\\/img_6a1903d115d5e-1.png\",\"datePublished\":\"2026-05-26T08:05:43+00:00\",\"description\":\"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/05\\\/img_6a1903d115d5e-1.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/05\\\/img_6a1903d115d5e-1.png\",\"width\":709,\"height\":545},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/vpascode-docs\\\/mermaid-js-erd-syntax-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lean Docs\",\"item\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/docs\\\/%ld_collection%\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p ERD c\u1ee7a Mermaid.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#website\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"name\":\"VPasCode\",\"description\":\"by Visual Paradigm\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#organization\",\"name\":\"VPasCode\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"vi\",\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"contentUrl\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/wp-content\\\/uploads\\\/sites\\\/12\\\/2026\\\/06\\\/cropped-vp-online-logo-v1.png\",\"width\":128,\"height\":138,\"caption\":\"VPasCode\"},\"image\":{\"@id\":\"https:\\\/\\\/www.vpascode.com\\\/vn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide","description":"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.","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.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/","og_locale":"vi_VN","og_type":"article","og_title":"Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide","og_description":"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.","og_url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/","og_site_name":"VPasCode","og_image":[{"width":709,"height":545,"url":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/05\/img_6a1903d115d5e-1.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"4 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/","url":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/","name":"Mermaid ERD Diagram Syntax | VPasCode Text to Diagram Guide","isPartOf":{"@id":"https:\/\/www.vpascode.com\/vn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/05\/img_6a1903d115d5e-1.png","datePublished":"2026-05-26T08:05:43+00:00","description":"Draft database schemas effortlessly using Mermaid entity relationship diagrams in VPasCode, your text to diagram tool.","breadcrumb":{"@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/"]}]},{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/#primaryimage","url":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/05\/img_6a1903d115d5e-1.png","contentUrl":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/05\/img_6a1903d115d5e-1.png","width":709,"height":545},{"@type":"BreadcrumbList","@id":"https:\/\/www.vpascode.com\/vn\/docs\/vpascode-docs\/mermaid-js-erd-syntax-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vpascode.com\/vn\/"},{"@type":"ListItem","position":2,"name":"Lean Docs","item":"https:\/\/www.vpascode.com\/vn\/docs\/%ld_collection%\/"},{"@type":"ListItem","position":3,"name":"H\u01b0\u1edbng d\u1eabn c\u00fa ph\u00e1p ERD c\u1ee7a Mermaid.js"}]},{"@type":"WebSite","@id":"https:\/\/www.vpascode.com\/vn\/#website","url":"https:\/\/www.vpascode.com\/vn\/","name":"VPasCode","description":"by Visual Paradigm","publisher":{"@id":"https:\/\/www.vpascode.com\/vn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vpascode.com\/vn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"},{"@type":"Organization","@id":"https:\/\/www.vpascode.com\/vn\/#organization","name":"VPasCode","url":"https:\/\/www.vpascode.com\/vn\/","logo":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/","url":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","contentUrl":"https:\/\/www.vpascode.com\/vn\/wp-content\/uploads\/sites\/12\/2026\/06\/cropped-vp-online-logo-v1.png","width":128,"height":138,"caption":"VPasCode"},"image":{"@id":"https:\/\/www.vpascode.com\/vn\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs\/2102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_docs"}],"about":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/types\/ld_docs"}],"author":[{"embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/users\/4"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/media\/2103"}],"wp:attachment":[{"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/media?parent=2102"}],"wp:term":[{"taxonomy":"ld_collection","embeddable":true,"href":"https:\/\/www.vpascode.com\/vn\/wp-json\/wp\/v2\/ld_collection?post=2102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}