{"id":12288,"date":"2026-10-13T13:27:33","date_gmt":"2026-10-13T05:27:33","guid":{"rendered":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"modified":"2026-10-14T13:09:00","modified_gmt":"2026-10-14T05:09:00","slug":"uml-class-diagrams-for-data-modeling-with-plantuml","status":"publish","type":"post","link":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/","title":{"rendered":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML"},"content":{"rendered":"<p data-nodeid=\"15366\">Diagram klas UML <a href=\"https:\/\/www.visual-paradigm.com\/guide\/uml-unified-modeling-language\/uml-class-diagram-tutorial\/\">opisuje struktur\u0119 systemu: elementy, kt\u00f3re modeluje, ich w\u0142a\u015bciwo\u015bci oraz spos\u00f3b, w jaki s\u0105 ze sob\u0105 powi\u0105zane.<\/a><strong data-nodeid=\"15522\"><\/strong> dla modelowania danych mo\u017ce przechwytywa\u0107 koncepcje domenowe i ograniczenia zanim przyst\u0105pisz do tworzenia tabel lub kodu aplikacji.<\/p>\n<p><img alt=\"Diagram klas UML modeluj\u0105cy encje Klient, Zam\u00f3wienie i Produkt wraz z sk\u0142adni\u0105 PlantUML oraz czterokrokowym przep\u0142ywem pracy do modelowania danych z kontrol\u0105 wersji.\" class=\"alignnone size-full wp-image-21887\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47.jpeg\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47.jpeg 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-300x240.jpeg 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-1024x819.jpeg 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbee446b47-768x615.jpeg 768w\" width=\"1402\"\/><\/p>\n<p data-nodeid=\"15367\"><a href=\"https:\/\/www.visual-paradigm.com\/features\/plantuml-editor\/\">PlantUML<\/a> sprawia, \u017ce diagram jest powtarzalny: piszesz tekst, generujesz go, przegl\u0105dasz zmiany w systemie kontroli wersji i aktualizujesz go wraz z ewolucj\u0105 modelu. Uzupe\u0142nia on \u2013 nie zast\u0119puje \u2013 schemat\u00f3w baz danych, migracji oraz szczeg\u00f3\u0142owych regu\u0142 biznesowych.<\/p>\n<h2 data-nodeid=\"15368\">1. Wybierz poziom modelowania<\/h2>\n<p data-nodeid=\"15369\">Przydatny diagram modelowania danych zazwyczaj skupia si\u0119 na jednym poziomie naraz:<\/p>\n<p><img alt=\"Diagram ilustruj\u0105cy trzy poziomy modelowania danych: koncepcyjny, logiczny i fizyczny, pokazuj\u0105cy rosn\u0105cy poziom szczeg\u00f3\u0142owo\u015bci od koncepcji biznesowych do implementacji SQL.\" class=\"alignnone size-full wp-image-21890\" decoding=\"async\" height=\"941\" loading=\"lazy\" sizes=\"auto, (max-width: 1672px) 100vw, 1672px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc.png 1672w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-300x169.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-1024x576.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-768x432.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf51130bc-1536x864.png 1536w\" width=\"1672\"\/><\/p>\n<ul data-nodeid=\"15370\">\n<li data-nodeid=\"15371\">\n<p data-nodeid=\"15372\"><strong data-nodeid=\"15534\">Koncepcyjny:<\/strong> koncepcje biznesowe i relacje, z minimalnym szczeg\u00f3\u0142em technicznym. Przyk\u0142ad: <code data-backticks=\"1\" data-nodeid=\"15530\">Klient<\/code> sk\u0142ada <code data-backticks=\"1\" data-nodeid=\"15532\">Zam\u00f3wienie<\/code>.<\/p>\n<\/li>\n<li data-nodeid=\"15373\">\n<p data-nodeid=\"15374\"><strong data-nodeid=\"15539\">Logiczny:<\/strong> atrybuty, identyfikatory, mno\u017cno\u015bci i regu\u0142y, bez powi\u0105zania modelu z konkretn\u0105 baz\u0105 danych.<\/p>\n<\/li>\n<li data-nodeid=\"15375\">\n<p data-nodeid=\"15376\"><strong data-nodeid=\"15544\">Fizyczny:<\/strong> szczeg\u00f3\u0142y implementacyjne, takie jak typy kolumn SQL, indeksy i ograniczenia specyficzne dla bazy danych.<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15377\">Poni\u017cszy przyk\u0142ad to <strong data-nodeid=\"15556\">logiczny model domenowy<\/strong>. Typy takie jak <code data-backticks=\"1\" data-nodeid=\"15550\">UUID<\/code>, <code data-backticks=\"1\" data-nodeid=\"15552\">Money<\/code>, oraz <code data-backticks=\"1\" data-nodeid=\"15554\">DateTime<\/code> s\u0105 przyk\u0142adowe; zdecyduj o ich konkretnych reprezentacjach przy wyborze technologii.<\/p>\n<h2 data-nodeid=\"15378\">2. Podstawy PlantUML<\/h2>\n<p data-nodeid=\"15379\">Klasa ma nazw\u0119 i mo\u017ce wymienia\u0107 atrybuty oraz operacje:<\/p>\n<p id=\"pCSWdAu\"><img alt=\"Interfejs VPasCode wy\u015bwietlaj\u0105cy sk\u0142adni\u0119 PlantUML dla klasy Klient wraz z wyrenderowanym diagramem pokazuj\u0105cym atrybuty i operacje.\" class=\"alignnone size-full wp-image-21891\" decoding=\"async\" height=\"871\" loading=\"lazy\" sizes=\"auto, (max-width: 1916px) 100vw, 1916px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781.png 1916w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-1024x466.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-768x349.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbf7ebe781-1536x698.png 1536w\" width=\"1916\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" 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>Edytuj PlantUML w 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15380\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml\r\nclass Customer {\r\n  -id: UUID\r\n  +name: String\r\n  +email: String\r\n  +changeEmail(newEmail: String): void\r\n}\r\n@enduml\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" \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 PlantUML 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\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoWkIImgAStDuULApaaiBbPmBYqkoSzDBLAevkLIKD3DJB5I20trT05njFCISrEj589BYZBpqi42gRc9cJae8iaPYNdfgQuWSOsyr79NP0MQLWfb-Pafl5orl5mEgNafG5i1\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15381\">Markery widoczno\u015bci s\u0105 opcjonalnymi wskaz\u00f3wkami modelowania:<\/p>\n<p><img alt=\"Infografika znacznik\u00f3w widoczno\u015bci UML pokazuj\u0105ca symbole plus, minus, kratka i tylda dla poziom\u00f3w dost\u0119pu: publiczny, prywatny, chroniony i pakietowy.\" class=\"alignnone size-full wp-image-21893\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdbfd2a37c7-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ul data-nodeid=\"15382\">\n<li data-nodeid=\"15383\">\n<p data-nodeid=\"15384\"><code data-backticks=\"1\" data-nodeid=\"15560\">+<\/code> public<\/p>\n<\/li>\n<li data-nodeid=\"15385\">\n<p data-nodeid=\"15386\"><code data-backticks=\"1\" data-nodeid=\"15562\">-<\/code> private<\/p>\n<\/li>\n<li data-nodeid=\"15387\">\n<p data-nodeid=\"15388\"><code data-backticks=\"1\" data-nodeid=\"15564\">#<\/code> protected<\/p>\n<\/li>\n<li data-nodeid=\"15389\">\n<p data-nodeid=\"15390\"><code data-backticks=\"1\" data-nodeid=\"15566\">~<\/code> widoczno\u015b\u0107 pakietu<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15391\">Dla diagramu domenowego lub danych najwa\u017cniejsze s\u0105 atrybuty. Do\u0142\u0105czaj operacje tylko wtedy, gdy wyja\u015bniaj\u0105 istotne zachowanie; unikaj zamieniania diagramu w pe\u0142ny listing kodu.<\/p>\n<h2 data-nodeid=\"15392\">3. Relacje i mnogo\u015b\u0107<\/h2>\n<p data-nodeid=\"15393\">Najbardziej przydatne notacje relacji do modelowania danych to:<\/p>\n<p><img alt=\"Diagram UML ilustruj\u0105cy typy relacji, takie jak asocjacja i agregacja, wraz z notacjami mno\u017cno\u015bci takimi jak 0..1 i 0..* na przyk\u0142adzie relacji klient-zam\u00f3wienie.\" class=\"alignnone size-full wp-image-21894\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc017126a5-768x615.png 768w\" width=\"1402\"\/><\/p>\n<table data-nodeid=\"15395\">\n<thead data-nodeid=\"15396\">\n<tr data-nodeid=\"15397\">\n<th data-nodeid=\"15399\">Relacja<\/th>\n<th data-nodeid=\"15400\">PlantUML<\/th>\n<th data-nodeid=\"15401\">Znaczenie<\/th>\n<\/tr>\n<\/thead>\n<tbody data-nodeid=\"15405\">\n<tr data-nodeid=\"15406\">\n<td data-nodeid=\"15407\">Asocjacja<\/td>\n<td data-nodeid=\"15408\"><code data-backticks=\"1\" data-nodeid=\"15575\">A -- B<\/code><\/td>\n<td data-nodeid=\"15409\">Mi\u0119dzy A i B istnieje relacja<\/td>\n<\/tr>\n<tr data-nodeid=\"15410\">\n<td data-nodeid=\"15411\">Asocjacja skierowana<\/td>\n<td data-nodeid=\"15412\"><code data-backticks=\"1\" data-nodeid=\"15578\">A --&gt; B<\/code><\/td>\n<td data-nodeid=\"15413\">Relacja nawigowalna lub skierowana<\/td>\n<\/tr>\n<tr data-nodeid=\"15414\">\n<td data-nodeid=\"15415\">Agregacja<\/td>\n<td data-nodeid=\"15416\"><code data-backticks=\"1\" data-nodeid=\"15581\">A o-- B<\/code><\/td>\n<td data-nodeid=\"15417\">A ma cz\u0119\u015b\u0107, ale ta cz\u0119\u015b\u0107 mo\u017ce istnie\u0107 niezale\u017cnie<\/td>\n<\/tr>\n<tr data-nodeid=\"15418\">\n<td data-nodeid=\"15419\">Kompozycja<\/td>\n<td data-nodeid=\"15420\"><code data-backticks=\"1\" data-nodeid=\"15584\">A *-- B<\/code><\/td>\n<td data-nodeid=\"15421\">A posiada cz\u0119\u015b\u0107, kt\u00f3rej cykl \u017cycia zale\u017cy od niej<\/td>\n<\/tr>\n<tr data-nodeid=\"15422\">\n<td data-nodeid=\"15423\">Uog\u00f3lnienie<\/td>\n<td data-nodeid=\"15424\">`Dziecko \u2014<\/td>\n<td data-nodeid=\"15425\">&gt; Rodzic`<\/td>\n<\/tr>\n<tr data-nodeid=\"15427\">\n<td data-nodeid=\"15428\">Realizacja interfejsu<\/td>\n<td data-nodeid=\"15429\">`Klasa ..<\/td>\n<td data-nodeid=\"15430\">&gt; Interfejs`<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p data-nodeid=\"15432\">Etykiety mnogo\u015bci znajduj\u0105 si\u0119 blisko ko\u0144c\u00f3w asocjacji:<\/p>\n<ul data-nodeid=\"15433\">\n<li data-nodeid=\"15434\">\n<p data-nodeid=\"15435\"><code data-backticks=\"1\" data-nodeid=\"15597\">1<\/code> \u2014 dok\u0142adnie jeden<\/p>\n<\/li>\n<li data-nodeid=\"15436\">\n<p data-nodeid=\"15437\"><code data-backticks=\"1\" data-nodeid=\"15599\">0..1<\/code> \u2014 opcjonalnie, najwy\u017cej jeden<\/p>\n<\/li>\n<li data-nodeid=\"15438\">\n<p data-nodeid=\"15439\"><code data-backticks=\"1\" data-nodeid=\"15601\">*<\/code> lub <code data-backticks=\"1\" data-nodeid=\"15603\">0..*<\/code> \u2014 zero lub wi\u0119cej<\/p>\n<\/li>\n<li data-nodeid=\"15440\">\n<p data-nodeid=\"15441\"><code data-backticks=\"1\" data-nodeid=\"15605\">1..*<\/code> \u2014 jeden lub wi\u0119cej<\/p>\n<\/li>\n<li data-nodeid=\"15442\">\n<p data-nodeid=\"15443\"><code data-backticks=\"1\" data-nodeid=\"15607\">2..5<\/code> \u2014 ograniczony zakres<\/p>\n<\/li>\n<\/ul>\n<p data-nodeid=\"15444\">Na przyk\u0142ad:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" 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>Edytuj PlantUML w 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:yyx9JCqhKL0oL5BGrLLGCj3Jqr9IY4hCFRov72YHcQfWfL2QcvbQN9LSbGW0\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15445\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">Klient \"1\" -- \"0..*\" Zam\u00f3wienie : umieszcza\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:yyx9JCqhKL0oL5BGrLLGCj3Jqr9IY4hCFRov72YHcQfWfL2QcvbQN9LSbGW0\" \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 PlantUML 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\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:SoujBidFJIrIK39KKj3LLL0oqDFJKbBmBqe1Ybaf5EGa9gSM0m00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15446\">Uwa\u017cnie przeczytaj etykiety na obu ko\u0144cach: jeden klient mo\u017ce z\u0142o\u017cy\u0107 zero lub wi\u0119cej zam\u00f3wie\u0144; ka\u017cde zam\u00f3wienie jest powi\u0105zane dok\u0142adnie z jednym klientem. Etykiety opisuj\u0105 relacj\u0119, a niekoniecznie implementacj\u0119 klucza obcego w konkretnej bazie danych.<\/p>\n<h2 data-nodeid=\"15447\">4. Przyk\u0142ad praktyczny: sklep internetowy<\/h2>\n<p data-nodeid=\"15448\">Ten model obejmuje klient\u00f3w, zam\u00f3wienia, pozycje zam\u00f3wie\u0144, produkty i zapisy p\u0142atno\u015bci. Ilustruje identyfikatory, typy podobne do warto\u015bci, wyliczenia, kompozycj\u0119 i mno\u017cno\u015bci.<\/p>\n<p id=\"uuxvPiM\"><img alt=\"Kod PlantUML i wynikowy diagram klas UML pokazuj\u0105cy model sklepu internetowego z encjami Klient, Zam\u00f3wienie, Linia Zam\u00f3wienia, Produkt i P\u0142atno\u015b\u0107.\" class=\"alignnone size-full wp-image-21896\" decoding=\"async\" height=\"867\" loading=\"lazy\" sizes=\"auto, (max-width: 1913px) 100vw, 1913px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931.png 1913w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-300x136.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-1024x464.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-768x348.png 768w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc05b51931-1536x696.png 1536w\" width=\"1913\"\/><\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" 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>Edytuj PlantUML w 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLHBRvj04BxpAqO-fhALN54K1HcxHNKTP9jBgXxMxCHim-xItI6HK_M_TtU1W5FrnEmylc-Ut5jYXbfPmxxIJQeb4ogopq8rp309PSsiJOYCEBQ4MQdLNhmXN4zSRCMuVXNg14-ijXX5bU084gdIt4PHG81bQqbBDF0x0lXKzg-Cnr0KMUfrw9Zh65R-at1kq5glvi8sDJjlcSGOzYuFTOh-3AWFXW-GsejJF1TL8ayeXfGH7eH4htNLKclZBd8V7bvDcfWZ_wOLdZ_0RuJ2Zg9sqhQLHpGnP8hmXCQhVxLCaQ1p3BcsWiGBJeoj4fGRKU8_uBdHl2sfWswwnpH_-zowWhyMNbRJwaF_Z47rFs1sbixO0tUFAJ2JkbKqX4rwqWUENMcOk6WWVBzUB6v-Z5G10cvlNrZT8kZZJopfxgvZ7cXIB8LazPXswJgrxAMbvkZXKBLoEfC0aUwIzS5zyqsoNFdKyoHKi2uswsop2QfbibskWZoWN5GHSFBLDissdvsK58Sl3xliiG_D3yKkYEiaw-1sgtMnJJkqzvMTtSnWFeUPA_vgrkzS366_RDGzlSkLzxaPVSBYnE1EXjnDzPv1sIFDvtSXSDY460m-eR50UW8xCW-3TTozn8XGDZHauG6dYpq4UFtbSCTSlAqROmn-MQ7nItKHEfYxYKQHqeHWnAaYq4zZhQvzmoc0TBs38yB9eDiT0rGn1Mzej7DwFmaGhjGAEqOeMKEjGUuyNYjKmHAEshjrn-m6pC6pVyoXxw2VTISjfXS2afsXT1cSSE5SCWAkqNeWr_20F1QnUCzkCRBTEydz8Vy2\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15449\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">@startuml ShopDomain\nskinparam classAttributeIconSize 0\nskinparam shadowing false\n\nhide methods\n\nclass Customer {\n  +customerId: UUID\n  +email: EmailAddress\n  +displayName: String\n}\n\nclass Order {\n  +orderId: UUID\n  +placedAt: DateTime\n  +status: OrderStatus\n  +total: Money\n}\n\nclass OrderLine {\n  +lineNumber: Integer\n  +quantity: PositiveInteger\n  +unitPrice: Money\n}\n\nclass Product {\n  +productId: UUID\n  +sku: SKU\n  +name: String\n  +currentPrice: Money\n}\n\nclass Payment {\n  +paymentId: UUID\n  +amount: Money\n  +status: PaymentStatus\n  +paidAt: DateTime [0..1]\n}\n\nclass Money &lt;&lt;value object&gt;&gt; {\n  +amount: Decimal\n  +currency: CurrencyCode\n}\n\nenum OrderStatus {\n  DRAFT\n  PLACED\n  PAID\n  FULFILLED\n  CANCELLED\n}\n\nenum PaymentStatus {\n  PENDING\n  AUTHORIZED\n  CAPTURED\n  FAILED\n  REFUNDED\n}\n\nCustomer \"1\" -- \"0..*\" Order : places\nOrder \"1\" *-- \"1..*\" OrderLine : contains\nOrderLine \"0..*\" --&gt; \"1\" Product : refers to\nOrder \"1\" -- \"0..*\" Payment : payment attempts\nOrder --&gt; OrderStatus\nPayment --&gt; PaymentStatus\nOrderLine --&gt; Money : unit price\nPayment --&gt; Money : amount\n\nnote right of OrderLine\n  quantity must be greater than zero\n  unitPrice is the price captured\n  when the order is placed\nend note\n\nnote right of Product\n  Product.currentPrice may change.\n  It does not replace OrderLine.unitPrice.\nend note\n@enduml<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:TLHBRvj04BxpAqO-fhALN54K1HcxHNKTP9jBgXxMxCHim-xItI6HK_M_TtU1W5FrnEmylc-Ut5jYXbfPmxxIJQeb4ogopq8rp309PSsiJOYCEBQ4MQdLNhmXN4zSRCMuVXNg14-ijXX5bU084gdIt4PHG81bQqbBDF0x0lXKzg-Cnr0KMUfrw9Zh65R-at1kq5glvi8sDJjlcSGOzYuFTOh-3AWFXW-GsejJF1TL8ayeXfGH7eH4htNLKclZBd8V7bvDcfWZ_wOLdZ_0RuJ2Zg9sqhQLHpGnP8hmXCQhVxLCaQ1p3BcsWiGBJeoj4fGRKU8_uBdHl2sfWswwnpH_-zowWhyMNbRJwaF_Z47rFs1sbixO0tUFAJ2JkbKqX4rwqWUENMcOk6WWVBzUB6v-Z5G10cvlNrZT8kZZJopfxgvZ7cXIB8LazPXswJgrxAMbvkZXKBLoEfC0aUwIzS5zyqsoNFdKyoHKi2uswsop2QfbibskWZoWN5GHSFBLDissdvsK58Sl3xliiG_D3yKkYEiaw-1sgtMnJJkqzvMTtSnWFeUPA_vgrkzS366_RDGzlSkLzxaPVSBYnE1EXjnDzPv1sIFDvtSXSDY460m-eR50UW8xCW-3TTozn8XGDZHauG6dYpq4UFtbSCTSlAqROmn-MQ7nItKHEfYxYKQHqeHWnAaYq4zZhQvzmoc0TBs38yB9eDiT0rGn1Mzej7DwFmaGhjGAEqOeMKEjGUuyNYjKmHAEshjrn-m6pC6pVyoXxw2VTISjfXS2afsXT1cSSE5SCWAkqNeWr_20F1QnUCzkCRBTEydz8Vy2\" \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 PlantUML 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\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:VLHBRzim3Bu7o7yWSkoGeBqQHL4ZZyrObWP9VDcmWs8piLPByYIwHJhilqyFExRNOIVp-P7yIFdH4DDKYnBsXQeMIZ0knoFpp6N5D1EGbSoOc4ZpOqsOP4hk-Hl2RJ_652nNhroUuSHAW-FHU5Jm744W5IetJlSmCAyDAO4QVer701-oHato2D8qMNWZsWxA29Rk4-UvHcEyFUUcAjbbmmH6iBVzoFDuzBl3VjBv5LWvUO1gKpFCOufWmGWFNA0ts-6fDb58tdl5sqaHiqryKH8lxwkikSIcKcd5JIsEg2D89E4PjRV_h9aaJfS8jifmuY_OzzQIqrRp3FzLOgjLNcVK5AY2DXZ6FDUMWi-fL-I04C-grYZ_WyykmlfR_A0Dy9bGjQHhRe-d9hV7LCNuW5RuTZkRtNqVLFGuS7__mieQGHr_O4OF3qq3RR45PbomiZT2PjcRDz9SvTXWegn5Vs41Px6BLmSdRDVnVEddsCPXdbMwNYNhTJ3Euyry6PGERJ1MmDikDujayz69SNhuzBHBlhO0sqEw2_8gJXhOtNALRXPNrEkXJ-ucC9t2n99oCsbkD09_ZPQ_eBkO6nTqrmNv4ul0FZUo3x8DzTO6Qpfzy9djkKIWyOJQ0Aa-S5UytRijtqYC24L5rqOSvE0bj2dEyTVgktwSCsmu0dVOKBdB6oQt_h1inv1KXA3vkI1GfsvcnsNxTa1O5k68SDPehqi35Kp26shbegvl2BYTkS1G5Z9MKQqnTo6l1Khlyly35nT-0sxhERWEtdVIqEbF88Yp_eC2mIwGsJxEE7Cn2K6kq3Wmox-7xuQPNNkSzKi-Mj7-SFy0\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15450\"><strong data-nodeid=\"15619\">Dlaczego modelowa\u0107<code data-backticks=\"1\" data-nodeid=\"15615\">OrderLine<\/code> jawnie?<\/strong> Relacja mi\u0119dzy zam\u00f3wieniem a produktem posiada w\u0142asne dane \u2014 ilo\u015b\u0107 i cen\u0119 w momencie zakupu. Sprawia to, \u017ce jest to koncepcja domenowa, a nie zwyk\u0142e po\u0142\u0105czenie.<\/p>\n<p data-nodeid=\"15451\"><strong data-nodeid=\"15628\">Dlaczego kompozycja od<code data-backticks=\"1\" data-nodeid=\"15622\">Order<\/code> do<code data-backticks=\"1\" data-nodeid=\"15624\">OrderLine<\/code>?<\/strong> Przyk\u0142ad zak\u0142ada, \u017ce pozycja zam\u00f3wienia nale\u017cy do jednego zam\u00f3wienia i nie ma samodzielnego znaczenia. U\u017cywaj kompozycji tylko wtedy, gdy regu\u0142a w\u0142asno\u015bci i cyklu \u017cycia jest prawdziwa w Twojej domenie; notacja UML nie wymusza tego w bazie danych.<\/p>\n<p data-nodeid=\"15452\"><strong data-nodeid=\"15633\">Dlaczego rozr\u00f3\u017cnia\u0107 ceny bie\u017c\u0105ce i historyczne?<\/strong>Cena produktu mo\u017ce si\u0119 zmieni\u0107 po z\u0142o\u017ceniu zam\u00f3wienia. Przechowywanie ceny z momentu zakupu na pozycji zam\u00f3wienia zachowuje historyczn\u0105 kwot\u0119.<\/p>\n<h2 data-nodeid=\"15453\">5. Decyzje modelowania, kt\u00f3re maj\u0105 znaczenie<\/h2>\n<p><img alt=\"Infografika modelowania danych UML ilustruj\u0105ca sze\u015b\u0107 kluczowych decyzji: identyfikatory, warto\u015bci opcjonalne, obiekty warto\u015bci, wyliczenia, model versus implementacja oraz czytelno\u015b\u0107.\" class=\"alignnone size-full wp-image-21897\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc0b054731-768x615.png 768w\" width=\"1402\"\/><\/p>\n<p data-nodeid=\"15454\"><strong data-nodeid=\"15643\">Identyfikatory:<\/strong> Oznaczaj identyfikatory konsekwentnie, np.<code data-backticks=\"1\" data-nodeid=\"15639\">customerId<\/code> lub<code data-backticks=\"1\" data-nodeid=\"15641\">orderId<\/code>. UML nie definiuje jednej uniwersalnej notacji dla kluczy g\u0142\u00f3wnych, wi\u0119c wybierz konwencj\u0119 i udokumentuj j\u0105. Stereotyp lub notatka mog\u0105 to uczyni\u0107 jawnym:<\/p>\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<div class=\"vpascode-code-wrapper\">\n<div class=\"vpascode-viewer-container vpascode-fancy-active\">\n<div class=\"vpascode-header\">\n<span class=\"vpascode-lang-label\">PlantUML<\/span><br \/>\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" 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>Edytuj PlantUML w 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\">PlantUML<\/span>\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" \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 PlantUML in VPasCode<\/span>\r\n                    <\/a>\r\n                <\/div>\r\n                                <div class=\"vpascode-code-wrapper\">\r\n                    <pre class=\"lang-plantuml\" data-nodeid=\"15455\"><code class=\"language-plantuml\" data-language=\"plantuml\" class=\"language-plantuml\">class Customer {\r\n  +customerId: UUID &lt;&lt;PK&gt;&gt;\r\n  +email: EmailAddress\r\n}\r\n<\/code><\/pre>                <\/div>\r\n                <div class=\"vpascode-actions\">\r\n                    <a href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" \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 PlantUML 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\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"vpascode-actions\">\n<a class=\"vpascode-fancy-btn\" href=\"https:\/\/www.vpascode.com\/editor\/#plantuml:Iyv9B2vMS2ujBidFJIrIgERbKb3GJePoFLEi5493FLqKR6m2lEtim7AfkOcPELOAhY3ACIMbABMuc9Uh5W00\" 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>Edytuj PlantUML w VPasCode<\/span><br \/>\n<\/a>\n<\/div>\n<\/div>\n<p data-nodeid=\"15456\"><strong data-nodeid=\"15652\">Warto\u015bci opcjonalne:<\/strong> U\u017cyj <code data-backticks=\"1\" data-nodeid=\"15648\">[0..1]<\/code> dla atrybutu opcjonalnego, gdy jest to jasne dla Twoich odbiorc\u00f3w, lub zaznacz regu\u0142\u0119. Na przyk\u0142ad p\u0142atno\u015b\u0107 mo\u017ce nie mie\u0107 <code data-backticks=\"1\" data-nodeid=\"15650\">paidAt<\/code> znacznika czasu, dop\u00f3ki nie zostanie zako\u0144czona pomy\u015blnie.<\/p>\n<p data-nodeid=\"15457\"><strong data-nodeid=\"15661\">Obiekty warto\u015bciowe:<\/strong> Typ taki jak <code data-backticks=\"1\" data-nodeid=\"15657\">Money<\/code> lub <code data-backticks=\"1\" data-nodeid=\"15659\">EmailAddress<\/code> mo\u017ce reprezentowa\u0107 koncepcj\u0119 z w\u0142asn\u0105 walidacj\u0105 lub semantyk\u0105. Zdecyduj, czy powinien pojawi\u0107 si\u0119 jako osobna klasa, typ atrybutu, czy struktura bazy danych, w zale\u017cno\u015bci od odbiorc\u00f3w i poziomu szczeg\u00f3\u0142owo\u015bci.<\/p>\n<p data-nodeid=\"15458\"><strong data-nodeid=\"15666\">Wyliczenia i warto\u015bci kontrolowane:<\/strong> U\u017cyj wyliczenia, gdy dopuszczalny zbi\u00f3r jest ma\u0142y i wzgl\u0119dnie stabilny. Je\u015bli warto\u015bci wymagaj\u0105 niezale\u017cnych opis\u00f3w, cyklu \u017cycia lub administracji, modeluj je jako klas\u0119.<\/p>\n<p data-nodeid=\"15459\"><strong data-nodeid=\"15673\">Normalizacja i implementacja:<\/strong> Diagram klas komunikuje koncepcje i regu\u0142y; nie rozstrzyga on ka\u017cdego szczeg\u00f3\u0142u relacyjnego. Na przyk\u0142ad, czy <code data-backticks=\"1\" data-nodeid=\"15671\">Money<\/code> stanie si\u0119 dwoma kolumnami, osobn\u0105 tabel\u0105 czy typem specyficznym dla bazy danych, jest decyzj\u0105 implementacyjn\u0105.<\/p>\n<p data-nodeid=\"15460\"><strong data-nodeid=\"15678\">Utrzymuj czytelno\u015b\u0107 diagram\u00f3w:<\/strong> Podziel du\u017cy obszar na skoncentrowane diagramy \u2013 takie jak zam\u00f3wienia, magazyn i to\u017csamo\u015b\u0107 \u2013 i u\u017cywaj pakiet\u00f3w do grupowania powi\u0105zanych klas. Pokazuj tylko atrybuty istotne dla pytania, na kt\u00f3re ma odpowiada\u0107 diagram.<\/p>\n<h2 data-nodeid=\"15461\">6. Zbuduj model na podstawie wymaga\u0144<\/h2>\n<p><img alt=\"Sze\u015bciokrokowa infografika ilustruj\u0105ca, jak zbudowa\u0107 model UML na podstawie wymaga\u0144, obejmuj\u0105ca ekstrakcj\u0119 koncepcji, wyja\u015bnianie regu\u0142 i przegl\u0105d przypadk\u00f3w brzegowych.\" class=\"alignnone size-full wp-image-21900\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc15b38d4a-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ol data-nodeid=\"15462\">\n<li data-nodeid=\"15463\">\n<p data-nodeid=\"15464\"><strong data-nodeid=\"15684\">Wyodr\u0119bnij kandyduj\u0105ce koncepcje<\/strong> z j\u0119zyka domenowego: rzeczowniki cz\u0119sto sugeruj\u0105 klasy; czasowniki cz\u0119sto sugeruj\u0105 relacje lub zachowanie.<\/p>\n<\/li>\n<li data-nodeid=\"15465\">\n<p data-nodeid=\"15466\"><strong data-nodeid=\"15689\">U\u015bci\u015blij regu\u0142y<\/strong> z konkretnymi pytaniami: Czy zam\u00f3wienie mo\u017ce istnie\u0107 bez klienta? Czy mo\u017ce mie\u0107 zero pozycji? Czy p\u0142atno\u015b\u0107 mo\u017ce zosta\u0107 ponowiona?<\/p>\n<\/li>\n<li data-nodeid=\"15467\">\n<p data-nodeid=\"15468\"><strong data-nodeid=\"15694\">Wybierz poziom modelowania<\/strong> i utrzymuj techniczne decyzje dotycz\u0105ce bazy danych poza diagramem koncepcyjnym.<\/p>\n<\/li>\n<li data-nodeid=\"15469\">\n<p data-nodeid=\"15470\"><strong data-nodeid=\"15699\">Dodaj atrybuty i identyfikatory<\/strong> tylko wtedy, gdy pomagaj\u0105 wyja\u015bni\u0107 model.<\/p>\n<\/li>\n<li data-nodeid=\"15471\">\n<p data-nodeid=\"15472\"><strong data-nodeid=\"15704\">Ustal mno\u017cno\u015bci<\/strong> z regu\u0142 biznesowych, sprawdzaj\u0105c oba ko\u0144ce ka\u017cdej relacji.<\/p>\n<\/li>\n<li data-nodeid=\"15473\">\n<p data-nodeid=\"15474\"><strong data-nodeid=\"15709\">Przejrzyj przypadki brzegowe<\/strong>: usuwanie, rekordy historyczne, pola opcjonalne, powtarzane pr\u00f3by i zmieniaj\u0105ce si\u0119 warto\u015bci.<\/p>\n<\/li>\n<li data-nodeid=\"15475\">\n<p data-nodeid=\"15476\"><strong data-nodeid=\"15714\">Wygeneruj i przeanalizuj<\/strong> diagram z ekspertami domenowymi i implementatorami. Traktuj go jako model do walidacji, a nie jedynie jako obrazek do zatwierdzenia.<\/p>\n<\/li>\n<\/ol>\n<h2 data-nodeid=\"15477\">7. U\u017cyj VPasCode i Visual Paradigm<\/h2>\n<p data-nodeid=\"15478\"><a href=\"https:\/\/www.visual-paradigm.com\/features\/vpascode\/\"><strong data-nodeid=\"15720\">VPasCode<\/strong><\/a> to przegl\u0105darkowy<a href=\"https:\/\/www.visual-paradigm.com\/features\/diagram-as-code-tool\/\"> edytor tekstu do diagramu z obs\u0142ug\u0105 PlantUML<\/a> oraz podgl\u0105d na \u017cywo. Jego opis funkcji wymienia r\u00f3wnie\u017c generowanie i modyfikacj\u0119 kodu diagramu przy u\u017cyciu AI, a tak\u017ce pomoc w sk\u0142adni. Praktyczny przep\u0142yw pracy wygl\u0105da nast\u0119puj\u0105co:<\/p>\n<p><img alt=\"Diagram pi\u0119ciokrokowego przep\u0142ywu pracy pokazuj\u0105cy, jak pisa\u0107, podgl\u0105da\u0107, udoskonala\u0107, generowa\u0107 i walidowa\u0107 diagramy klas UML przy u\u017cyciu VPasCode i Visual Paradigm.\" class=\"alignnone size-full wp-image-21906\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f.png\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f.png 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-300x240.png 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-1024x819.png 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1b31fa5f-768x615.png 768w\" width=\"1402\"\/><\/p>\n<ol data-nodeid=\"15479\">\n<li data-nodeid=\"15480\">\n<p data-nodeid=\"15481\">Otw\u00f3rz VPasCode i wybierz lub wprowad\u017a PlantUML.<\/p>\n<\/li>\n<li data-nodeid=\"15482\">\n<p data-nodeid=\"15483\">Wklej powy\u017cszy przyk\u0142ad i sprawd\u017a wygenerowany diagram.<\/p>\n<\/li>\n<li data-nodeid=\"15484\">\n<p data-nodeid=\"15485\">Iteruj nad \u017ar\u00f3d\u0142em PlantUML; zachowaj tekst jako wersjonowalny artefakt.<\/p>\n<\/li>\n<li data-nodeid=\"15486\">\n<p data-nodeid=\"15487\">U\u017cyj asystenta AI, je\u015bli jest dost\u0119pny w Twoim \u015brodowisku pracy, aby przygotowa\u0107 lub poprawi\u0107 pierwsz\u0105 wersj\u0119.<\/p>\n<\/li>\n<li data-nodeid=\"15488\">\n<p data-nodeid=\"15489\">Sam zweryfikuj ka\u017cd\u0105 wygenerowan\u0105 klas\u0119, relacj\u0119, mno\u017cno\u015b\u0107 i regu\u0142\u0119 biznesow\u0105.<\/p>\n<\/li>\n<\/ol>\n<p data-nodeid=\"15490\">Narz\u0119dzia do diagram\u00f3w wspomagane przez AI w Visual Paradigm mog\u0105 generowa\u0107 edytowalne diagramy na podstawie opis\u00f3w w j\u0119zyku naturalnym. Opublikowany przep\u0142yw pracy opisuje generowanie diagramu klas na podstawie polecenia, a nast\u0119pnie dopracowanie jego element\u00f3w i relacji. Traktuj wynik AI jako<strong data-nodeid=\"15735\">szkic<\/strong>: mo\u017ce on wnioskowa\u0107 o nieprawid\u0142owym w\u0142asno\u015bci, brakuj\u0105cych ograniczeniach lub nieuzasadnionych klasach. Poprawno\u015b\u0107 modelu nadal zale\u017cy od jego walidacji wzgl\u0119dem wymaga\u0144.<\/p>\n<p data-nodeid=\"15491\">Na przyk\u0142ad, podaj asystentowi AI polecenie:<\/p>\n<blockquote data-nodeid=\"15492\">\n<p data-nodeid=\"15493\">Stw\u00f3rz logiczny diagram klas UML dla sklepu internetowego. Klienci sk\u0142adaj\u0105 zam\u00f3wienia. Ka\u017cde zam\u00f3wienie zawiera jedn\u0105 lub wi\u0119cej pozycji zam\u00f3wienia. Ka\u017cda pozycja zam\u00f3wienia odnosi si\u0119 do jednego produktu i przechowuje ilo\u015b\u0107 oraz cen\u0119 jednostkow\u0105 w momencie zakupu. Zam\u00f3wienia mog\u0105 mie\u0107 wiele pr\u00f3b p\u0142atno\u015bci. Uwzgl\u0119dnij identyfikatory, mno\u017cno\u015bci oraz wyliczenia statusu zam\u00f3wienia i p\u0142atno\u015bci. Wygeneruj wy\u0142\u0105cznie kod PlantUML.<\/p>\n<\/blockquote>\n<p data-nodeid=\"15494\">Nast\u0119pnie przeanalizuj wynik pod k\u0105tem wymaga\u0144 przed jego zaakceptowaniem. Aby uzyska\u0107 lepsze wyniki, okre\u015bl za\u0142o\u017cenia wprost \u2013 na przyk\u0142ad, czy zam\u00f3wienia mog\u0105 by\u0107 szkicami bez pozycji oraz czy p\u0142atno\u015bci mog\u0105 by\u0107 zwracane.<\/p>\n<p data-nodeid=\"15495\">Visual Paradigm opisuje<a href=\"https:\/\/blog.visual-paradigm.com\/comprehensive-guide-to-the-benefits-of-vpascode-editor-in-visual-paradigms-ecosystem\/\">VPasCode<\/a> jako <a href=\"https:\/\/guides.visual-paradigm.com\/vpascode-ai-assisted-diagram-as-code-with-plantuml\/\">edytor obs\u0142uguj\u0105cy PlantUML<\/a> z podgl\u0105dem na \u017cywo i <a href=\"https:\/\/www.visual-paradigm.com\/guide\/mastering-vpascode-the-ultimate-guide-to-ai-powered-diagram-as-code-with-multi-engine-support\/\">generowaniem lub modyfikacj\u0105 wspieran\u0105 przez AI<\/a>. Dost\u0119pno\u015b\u0107 i narz\u0119dzia mog\u0105 si\u0119 r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od wersji produktu lub \u015brodowiska pracy.<\/p>\n<h2 data-nodeid=\"15496\">8. Zwi\u0119z\u0142a lista kontrolna przegl\u0105du<\/h2>\n<p data-nodeid=\"15497\">Przed udost\u0119pnieniem lub wdro\u017ceniem diagramu klas sprawd\u017a:<\/p>\n<p><img alt=\"Infografika z list\u0105 kontroln\u0105 przegl\u0105du diagramu klas UML wymieniaj\u0105ca osiem kryteri\u00f3w walidacji dla modeli PlantUML, w tym koncepcje domenowe, atrybuty oraz zale\u017cno\u015bci cyklu \u017cycia.\" class=\"alignnone size-full wp-image-21907\" decoding=\"async\" height=\"1122\" loading=\"lazy\" sizes=\"auto, (max-width: 1402px) 100vw, 1402px\" src=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700.jpeg\" srcset=\"https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700.jpeg 1402w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-300x240.jpeg 300w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-1024x819.jpeg 1024w, https:\/\/www.cybermedian.com\/wp-content\/uploads\/2026\/10\/img_6acdc1e4ca700-768x615.jpeg 768w\" width=\"1402\"\/><\/p>\n<ul data-nodeid=\"15498\">\n<li data-nodeid=\"15499\">\n<p data-nodeid=\"15500\">Czy ka\u017cda klasa reprezentuje znacz\u0105c\u0105 koncepcj\u0119 domenow\u0105?<\/p>\n<\/li>\n<li data-nodeid=\"15501\">\n<p data-nodeid=\"15502\">Czy identyfikatory i istotne atrybuty s\u0105 jasne?<\/p>\n<\/li>\n<li data-nodeid=\"15503\">\n<p data-nodeid=\"15504\">Czy etykiety relacji i mno\u017cno\u015bci s\u0105 poprawne na <strong data-nodeid=\"15751\">oba<\/strong>ko\u0144cach?<\/p>\n<\/li>\n<li data-nodeid=\"15505\">\n<p data-nodeid=\"15506\">Czy kompozycja odzwierciedla rzeczywist\u0105 zale\u017cno\u015b\u0107 cyklu \u017cycia?<\/p>\n<\/li>\n<li data-nodeid=\"15507\">\n<p data-nodeid=\"15508\">Czy fakty historyczne s\u0105 zachowane tam, gdzie warto\u015bci bie\u017c\u0105ce mog\u0105 si\u0119 zmienia\u0107?<\/p>\n<\/li>\n<li data-nodeid=\"15509\">\n<p data-nodeid=\"15510\">Czy warto\u015bci opcjonalne i ograniczenia biznesowe s\u0105 widoczne?<\/p>\n<\/li>\n<li data-nodeid=\"15511\">\n<p data-nodeid=\"15512\">Czy diagram jest wystarczaj\u0105co skupiony na odbiorcach?<\/p>\n<\/li>\n<li data-nodeid=\"15513\">\n<p data-nodeid=\"15514\">Czy wygenerowana tre\u015b\u0107 zosta\u0142a sprawdzona wzgl\u0119dem rzeczywistych wymaga\u0144?<\/p>\n<\/li>\n<\/ul>\n<p class=\"\" data-nodeid=\"15515\">Najlepszy przep\u0142yw pracy diagram-as-code to <strong data-nodeid=\"15762\">AI do stworzenia szkicu, PlantUML do precyzyjnych edycji i historii wersji oraz recenzja ludzka pod k\u0105tem poprawno\u015bci domenowej<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Diagram klas UML opisuje struktur\u0119 systemu: elementy, kt\u00f3re modeluje, ich w\u0142a\u015bciwo\u015bci oraz spos\u00f3b, w jaki s\u0105 ze sob\u0105 powi\u0105zane. dla<\/p>\n","protected":false},"author":11,"featured_media":12289,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","source_url":"","source_h1_title":"","fifu_image_url":"","fifu_image_alt":"","_fifu_image_alt":"","fifu_alt":"","_fifu_alt":"","fifu_image_title":"","_fifu_image_title":"","fifu_input_alt":"","vp_image_hash":"","footnotes":""},"categories":[3,86,121],"tags":[],"asset-category":[],"class_list":["post-12288","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unified-modeling-language","category-visual-paradigm","category-vpascode-editor"],"source_url":"","source_h1_title":"","fifu_image_url":"","fifu_image_alt":"","vp_image_hash":"","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana<\/title>\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.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana\" \/>\n<meta property=\"og:description\" content=\"Diagram klas UML opisuje struktur\u0119 systemu: elementy, kt\u00f3re modeluje, ich w\u0142a\u015bciwo\u015bci oraz spos\u00f3b, w jaki s\u0105 ze sob\u0105 powi\u0105zane. dla\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\" \/>\n<meta property=\"og:site_name\" content=\"Cybermediana\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-13T05:27:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T05:09:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1402\" \/>\n\t<meta property=\"og:image:height\" content=\"1122\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"curtis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"curtis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"},\"author\":{\"name\":\"curtis\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"headline\":\"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML\",\"datePublished\":\"2026-10-13T05:27:33+00:00\",\"dateModified\":\"2026-10-14T05:09:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"},\"wordCount\":1422,\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg\",\"articleSection\":[\"Unified Modeling Language\",\"Visual Paradigm\",\"VPasCode Editor\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\",\"url\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\",\"name\":\"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana\",\"isPartOf\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg\",\"datePublished\":\"2026-10-13T05:27:33+00:00\",\"dateModified\":\"2026-10-14T05:09:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage\",\"url\":\"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg\",\"contentUrl\":\"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg\",\"width\":1402,\"height\":1122},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cybermedian.com\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#website\",\"url\":\"https:\/\/www.cybermedian.com\/pl\/\",\"name\":\"Cybermediana\",\"description\":\"Uczenie si\u0119 jednej nowej rzeczy ka\u017cdego dnia\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cybermedian.com\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d\",\"name\":\"curtis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g\",\"caption\":\"curtis\"},\"url\":\"https:\/\/www.cybermedian.com\/pl\/author\/curtis\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana","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.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/","og_locale":"pl_PL","og_type":"article","og_title":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana","og_description":"Diagram klas UML opisuje struktur\u0119 systemu: elementy, kt\u00f3re modeluje, ich w\u0142a\u015bciwo\u015bci oraz spos\u00f3b, w jaki s\u0105 ze sob\u0105 powi\u0105zane. dla","og_url":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/","og_site_name":"Cybermediana","article_published_time":"2026-10-13T05:27:33+00:00","article_modified_time":"2026-10-14T05:09:00+00:00","og_image":[{"width":1402,"height":1122,"url":"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg","type":"image\/jpeg"}],"author":"curtis","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"curtis","Szacowany czas czytania":"7 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#article","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"author":{"name":"curtis","@id":"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"headline":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML","datePublished":"2026-10-13T05:27:33+00:00","dateModified":"2026-10-14T05:09:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/"},"wordCount":1422,"image":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg","articleSection":["Unified Modeling Language","Visual Paradigm","VPasCode Editor"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/","url":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/","name":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML - Cybermediana","isPartOf":{"@id":"https:\/\/www.cybermedian.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"image":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg","datePublished":"2026-10-13T05:27:33+00:00","dateModified":"2026-10-14T05:09:00+00:00","author":{"@id":"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d"},"breadcrumb":{"@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#primaryimage","url":"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg","contentUrl":"https:\/\/www.cybermedian.com\/pl\/wp-content\/uploads\/sites\/16\/2026\/10\/img_6acdbee446b47.jpeg","width":1402,"height":1122},{"@type":"BreadcrumbList","@id":"https:\/\/www.cybermedian.com\/pl\/uml-class-diagrams-for-data-modeling-with-plantuml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cybermedian.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Diagramy klas UML do modelowania danych z u\u017cyciem PlantUML"}]},{"@type":"WebSite","@id":"https:\/\/www.cybermedian.com\/pl\/#website","url":"https:\/\/www.cybermedian.com\/pl\/","name":"Cybermediana","description":"Uczenie si\u0119 jednej nowej rzeczy ka\u017cdego dnia","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cybermedian.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/016578d8c88d35825fd3fbafc4f76b4d","name":"curtis","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.cybermedian.com\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6910084565fcc601ec03c6693bb8ea480c1e52ccaa0efb299eb038bb6a1edc87?s=96&d=mm&r=g","caption":"curtis"},"url":"https:\/\/www.cybermedian.com\/pl\/author\/curtis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/posts\/12288","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/comments?post=12288"}],"version-history":[{"count":0,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/posts\/12288\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/media\/12289"}],"wp:attachment":[{"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/media?parent=12288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/categories?post=12288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/tags?post=12288"},{"taxonomy":"asset-category","embeddable":true,"href":"https:\/\/www.cybermedian.com\/pl\/wp-json\/wp\/v2\/asset-category?post=12288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}