Normalization done well
@ -1,6 +1,6 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
|
||||
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
|
||||
<mxGraphModel dx="1687" dy="2767" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<mxGraphModel dx="989" dy="2326" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@ -13,7 +13,7 @@
|
||||
<mxPoint x="680" y="-371" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T?" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T1" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="340" y="-1530" width="150" height="506" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="<b>Роль id</b>" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
@ -88,10 +88,10 @@
|
||||
<mxCell id="TstbxcchZz1pR3d-lyST-122" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-121" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-5" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-5" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
<mxGeometry y="306" width="150" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-6" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="-Q3yDpWV8JF3GJ1VOMCk-5">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-6" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="-Q3yDpWV8JF3GJ1VOMCk-5" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-36" value="Користувач id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
@ -142,8 +142,8 @@
|
||||
<mxCell id="TstbxcchZz1pR3d-lyST-115" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-114" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="8" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T?" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="610" y="-1460" width="150" height="384" as="geometry" />
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T2" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="600" y="-1467" width="150" height="384" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="26" width="150" height="26" as="geometry" />
|
||||
@ -291,56 +291,56 @@
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-58" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="610" y="-1420" as="sourcePoint" />
|
||||
<mxPoint x="570" y="-1420" as="targetPoint" />
|
||||
<mxPoint x="600" y="-1427" as="sourcePoint" />
|
||||
<mxPoint x="560" y="-1427" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-59" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1394" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1394" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1401" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1401" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-60" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1368" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1368" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1375" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1375" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-61" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1341" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1341" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1348" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1348" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-62" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1314" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1314" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1321" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1321" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-63" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1287" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1287" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1294" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1294" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-64" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1260" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1260" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1267" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1267" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-65" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1210" as="sourcePoint" />
|
||||
<mxPoint x="570" y="-1420" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1217" as="sourcePoint" />
|
||||
<mxPoint x="560" y="-1427" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-67" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1237" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1237" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1244" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1244" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-68" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
@ -405,32 +405,32 @@
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1176" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1176" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1183" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1183" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1150" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1150" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1157" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1157" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1123" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1123" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1130" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1130" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1094" as="sourcePoint" />
|
||||
<mxPoint x="610" y="-1094" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1101" as="sourcePoint" />
|
||||
<mxPoint x="600" y="-1101" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-19" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="570" y="-1093" as="sourcePoint" />
|
||||
<mxPoint x="570" y="-1220" as="targetPoint" />
|
||||
<mxPoint x="560" y="-1100" as="sourcePoint" />
|
||||
<mxPoint x="560" y="-1227" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
@ -471,107 +471,107 @@
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="761" y="-1202" as="sourcePoint" />
|
||||
<mxPoint x="801" y="-1202" as="targetPoint" />
|
||||
<mxPoint x="751" y="-1209" as="sourcePoint" />
|
||||
<mxPoint x="791" y="-1209" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="801" y="-1175" as="sourcePoint" />
|
||||
<mxPoint x="761" y="-1175" as="targetPoint" />
|
||||
<mxPoint x="791" y="-1182" as="sourcePoint" />
|
||||
<mxPoint x="751" y="-1182" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="801" y="-1149" as="sourcePoint" />
|
||||
<mxPoint x="761" y="-1149" as="targetPoint" />
|
||||
<mxPoint x="791" y="-1156" as="sourcePoint" />
|
||||
<mxPoint x="751" y="-1156" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="801" y="-1122" as="sourcePoint" />
|
||||
<mxPoint x="761" y="-1122" as="targetPoint" />
|
||||
<mxPoint x="791" y="-1129" as="sourcePoint" />
|
||||
<mxPoint x="751" y="-1129" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="801" y="-1092" as="sourcePoint" />
|
||||
<mxPoint x="761" y="-1092" as="targetPoint" />
|
||||
<mxPoint x="791" y="-1099" as="sourcePoint" />
|
||||
<mxPoint x="751" y="-1099" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="801" y="-1092" as="sourcePoint" />
|
||||
<mxPoint x="801" y="-1202" as="targetPoint" />
|
||||
<mxPoint x="791" y="-1099" as="sourcePoint" />
|
||||
<mxPoint x="791" y="-1209" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-7" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-7" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="490" y="-1288" as="sourcePoint" />
|
||||
<mxPoint x="530" y="-1288" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-8" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-8" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="-1262" as="sourcePoint" />
|
||||
<mxPoint x="490" y="-1262" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-9" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-9" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="-1239" as="sourcePoint" />
|
||||
<mxPoint x="490" y="-1239" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-10" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-10" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="-1238" as="sourcePoint" />
|
||||
<mxPoint x="530" y="-1289" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-11" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-11" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1200" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1200" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-12" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-12" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1236" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1236" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-14" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-14" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1149" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1149" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-15" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1122" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1122" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-16" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1095" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1095" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-17" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1068" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1068" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-18" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1040" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1040" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-19" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="-Q3yDpWV8JF3GJ1VOMCk-19" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="300" y="-1175" as="sourcePoint" />
|
||||
<mxPoint x="340" y="-1175" as="targetPoint" />
|
@ -1,6 +1,6 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
|
||||
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
|
||||
<mxGraphModel dx="989" dy="2326" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<mxGraphModel dx="819" dy="2218" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@ -91,7 +91,7 @@
|
||||
<mxPoint x="680" y="-371" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T?" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T3" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="680" y="-1040" width="150" height="280" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="<b>Роль id</b>" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
@ -154,7 +154,7 @@
|
||||
<mxCell id="TstbxcchZz1pR3d-lyST-167" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="TstbxcchZz1pR3d-lyST-166" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T?" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-1" value="T2" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="450" y="-910" width="150" height="384" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-14" value="Пакунок id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;fontStyle=1" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
@ -223,34 +223,34 @@
|
||||
<mxPoint y="258" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="270" width="150" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="37LQwTKnvuf_VbudVwVU-4">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-5" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-4" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-6" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-6" value="Опис" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="296" width="150" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-7" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="37LQwTKnvuf_VbudVwVU-6">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-7" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-6" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-8" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-8" value="Дата створення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="322" width="150" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-9" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="37LQwTKnvuf_VbudVwVU-8">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-9" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-8" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-10" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-10" value="Дата оновлення" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="348" width="150" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="37LQwTKnvuf_VbudVwVU-10">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-11" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-10" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-12" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="abOVGPFW28QzTePHPfqQ-1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-12" value="" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="abOVGPFW28QzTePHPfqQ-1" vertex="1">
|
||||
<mxGeometry y="374" width="150" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-13" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="37LQwTKnvuf_VbudVwVU-12">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-13" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="37LQwTKnvuf_VbudVwVU-12" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
@ -445,103 +445,103 @@
|
||||
<mxPoint x="640" y="-910" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-15" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="-626" as="sourcePoint" />
|
||||
<mxPoint x="450" y="-626" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-16" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="-600" as="sourcePoint" />
|
||||
<mxPoint x="450" y="-600" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-17" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="-573" as="sourcePoint" />
|
||||
<mxPoint x="450" y="-573" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-18" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="-544" as="sourcePoint" />
|
||||
<mxPoint x="450" y="-544" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-19" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-19" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="-543" as="sourcePoint" />
|
||||
<mxPoint x="410" y="-670" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-21" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="830" y="-888" as="sourcePoint" />
|
||||
<mxPoint x="870" y="-888" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-22" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-22" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="870" y="-861" as="sourcePoint" />
|
||||
<mxPoint x="830" y="-861" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-23" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="870" y="-835" as="sourcePoint" />
|
||||
<mxPoint x="830" y="-835" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-24" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-24" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="870" y="-808" as="sourcePoint" />
|
||||
<mxPoint x="830" y="-808" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-25" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-25" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="870" y="-778" as="sourcePoint" />
|
||||
<mxPoint x="830" y="-778" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-26" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-26" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="870" y="-778" as="sourcePoint" />
|
||||
<mxPoint x="870" y="-888" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-27" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="601" y="-652" as="sourcePoint" />
|
||||
<mxPoint x="641" y="-652" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-28" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="641" y="-625" as="sourcePoint" />
|
||||
<mxPoint x="601" y="-625" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-29" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="641" y="-599" as="sourcePoint" />
|
||||
<mxPoint x="601" y="-599" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-30" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="641" y="-572" as="sourcePoint" />
|
||||
<mxPoint x="601" y="-572" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-31" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="641" y="-542" as="sourcePoint" />
|
||||
<mxPoint x="601" y="-542" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-32" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="37LQwTKnvuf_VbudVwVU-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="641" y="-542" as="sourcePoint" />
|
||||
<mxPoint x="641" y="-652" as="targetPoint" />
|
@ -1,6 +1,6 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.0.9 Chrome/128.0.6613.186 Electron/32.3.0 Safari/537.36" version="26.0.9">
|
||||
<diagram name="Page-1" id="e56a1550-8fbb-45ad-956c-1786394a9013">
|
||||
<mxGraphModel dx="989" dy="2326" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<mxGraphModel dx="1434" dy="2607" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
@ -13,7 +13,7 @@
|
||||
<mxPoint x="680" y="-371" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T?" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-1" value="T" style="swimlane;html=1;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;fontFamily=Verdana;fontSize=14;swimlaneLine=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="510" y="-1620" width="150" height="724" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="PkgUqFx-XmgoDWfw4lMe-10" value="<b>Роль id</b>" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
@ -88,10 +88,10 @@
|
||||
<mxCell id="abOVGPFW28QzTePHPfqQ-31" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="abOVGPFW28QzTePHPfqQ-30" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="10" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-1" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" vertex="1" parent="PkgUqFx-XmgoDWfw4lMe-1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-1" value="База пакунку id" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
<mxGeometry y="306" width="150" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-2" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" vertex="1" connectable="0" parent="VLBbV8p_sqR4Kir-txfg-1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-2" value="" style="shape=partialRectangle;top=0;left=0;bottom=0;html=1;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;" parent="VLBbV8p_sqR4Kir-txfg-1" vertex="1" connectable="0">
|
||||
<mxGeometry width="30" height="26" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="okuSX89Ro8Y6cY_jQ_8G-4" value="Назва" style="shape=partialRectangle;top=0;left=0;right=0;bottom=0;html=1;align=left;verticalAlign=top;fillColor=none;spacingLeft=34;spacingRight=4;whiteSpace=wrap;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;" parent="PkgUqFx-XmgoDWfw4lMe-1" vertex="1">
|
||||
@ -418,199 +418,199 @@
|
||||
<mxPoint x="510" y="-1047" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-11" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-11" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="470" y="-1299" as="sourcePoint" />
|
||||
<mxPoint x="510" y="-1299" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-20" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-20" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="660" y="-1580" as="sourcePoint" />
|
||||
<mxPoint x="700" y="-1580" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-21" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-21" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1554" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1554" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-22" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-22" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1275" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1275" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-23" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-23" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1249" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1249" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-24" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-24" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1222" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1222" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-25" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-25" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1191" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1191" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-26" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-26" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1299" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1299" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-27" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-27" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="710" y="-1519" as="sourcePoint" />
|
||||
<mxPoint x="750" y="-1519" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-28" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-28" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1493" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1493" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-29" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-29" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1467" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1467" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-30" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-30" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1440" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1440" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-31" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-31" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1413" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1413" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-32" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-32" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1386" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1386" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-33" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-33" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1359" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1359" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-34" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-34" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1336" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1336" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-37" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-37" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1275" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1275" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-38" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-38" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1249" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1249" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-39" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-39" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1222" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1222" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-40" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-40" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1191" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1191" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-41" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-41" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1299" as="sourcePoint" />
|
||||
<mxPoint x="710" y="-1299" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-42" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-42" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-920" as="sourcePoint" />
|
||||
<mxPoint x="700" y="-1580" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-43" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-43" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="750" y="-1190" as="sourcePoint" />
|
||||
<mxPoint x="750" y="-1520" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-44" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-44" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1073" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1073" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-45" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-45" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1047" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1047" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-46" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-46" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1021" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1021" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-47" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-47" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-994" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-994" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-48" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-48" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-967" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-967" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-49" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-49" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-940" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-940" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-50" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-50" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-920" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-920" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-52" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-52" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1156" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1156" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-53" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-53" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1130" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1130" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-54" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxCell id="VLBbV8p_sqR4Kir-txfg-54" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="700" y="-1107" as="sourcePoint" />
|
||||
<mxPoint x="660" y="-1107" as="targetPoint" />
|
Before Width: | Height: | Size: 259 KiB After Width: | Height: | Size: 259 KiB |
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 261 KiB |
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 62 KiB |
BIN
3/coursework/img/normal/normal.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
3/coursework/img/normal/normal_er_frag.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
3/coursework/img/normal/normal_link.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
3/coursework/img/normal/normal_t.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
3/coursework/img/normal/normal_t12.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
3/coursework/img/normal/normal_t23.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
3/coursework/img/normal/normal_t_dep.png
Normal file
After Width: | Height: | Size: 71 KiB |
@ -117,19 +117,19 @@
|
||||
|
||||
При відвідуванні головної сторінки AUR @aur_main можна побачити статиску свого акаунту, всього репозиторію а також останні оновлення пакунків. За допомогою поля пошуку можна перейти до сторінки пошуку пакунків @aur_search.
|
||||
|
||||
#img("img/aur_main.png", "Головна сторінка AUR")
|
||||
#img("img/aur/aur_main.png", "Головна сторінка AUR")
|
||||
|
||||
#img("img/aur_search.png", "Сторінка пошуку AUR")
|
||||
#img("img/aur/aur_search.png", "Сторінка пошуку AUR")
|
||||
|
||||
Зі сторінки пошуку пакунків можна перейти до сторінки інформації пакунку, або ж до сторінки користувача який супроводжує пакунку. На сторінці інформації пакунку @aur_package можна побачити що пакунок має базу пакунку, пошукові слова, ліцензії, різні ролі користувачів, інформацію про залежності, тощо. На сторінці інформації про користувача @aur_user можна побачити різні атрибути пов'язані з акаунтом.
|
||||
|
||||
#img("img/aur_package.png", "Деталі пакунку в AUR")
|
||||
#img("img/aur/aur_package.png", "Деталі пакунку в AUR")
|
||||
|
||||
#img("img/aur_user.png", "Деталі користувача в AUR")
|
||||
#img("img/aur/aur_user.png", "Деталі користувача в AUR")
|
||||
|
||||
Навігація по репозиторію здебільного здійснюється за допомогою гіперпосилань на сторінку пошуку де можна обрати досить багато критерій пошуку. Наприклад, при натисканні посилання "View this user's packages" в профілі користувача lsf, можна побачити всі пакунки котрі цей користувач підтримує @aur_search_func.
|
||||
|
||||
#img("img/aur_search_func.png", "Фунціонал пошуку AUR")
|
||||
#img("img/aur/aur_search_func.png", "Фунціонал пошуку AUR")
|
||||
|
||||
В контексті розробки пакункового репозиторію важливо визначити основні ролі користувачів та їхні потреби. Розробники пакунків виступають основними користувачами системи, створюючи та підтримуючи програмні компоненти, в той час як інші учасники можуть долучатися до процесу тестування, рецензування та вдосконалення пакунків.
|
||||
|
||||
@ -222,6 +222,7 @@
|
||||
+ інформація про залежності та відносини кожного пакунку з іншими пакунками;
|
||||
+ інформація про пакунки кожного користувача та рівень прав який цей користувач має для цих пакунків.
|
||||
|
||||
|
||||
= Проектування бази даних
|
||||
#v(-spacing)
|
||||
== Побудова ER-діаграми
|
||||
@ -343,50 +344,58 @@
|
||||
|
||||
== Побудова логічної моделі бази даних шляхом нормалізаці
|
||||
|
||||
Нормалізація структури даних відіграє фундаментальну роль у процесі проектування сучасних інформаційних систем, оскільки забезпечує створення раціональної архітектури даних, що ефективно запобігає надлишковості інформації та можливим аномаліям. В контексті розробки інформаційної системи пакункового репозиторію, нормалізація набуває особливої значущості через комплексну природу зв'зків між пакунками у репозиторіях.
|
||||
Нормалізація структури даних відіграє фундаментальну роль у процесі проектування сучасних інформаційних систем, оскільки забезпечує створення раціональної архітектури даних, що ефективно запобігає надлишковості інформації та можливим аномаліям. В контексті розробки інформаційної системи пакункового репозиторію, нормалізація набуває особливої значущості через комплексну природу зв'зків між пакунками.
|
||||
|
||||
Розмір ER-діаграми інформаційної системи містить понад 25 атрибутів, тому згідно з методичними вказівками з курсового
|
||||
проектування було обрано частину, що охоплює 5 взаємопов'язаних сутностей: "Користувач", "Пакунок", "База пакунку", "Тип ролі" та "Роль" @er_diagram_frag. Така декомпозиція дозволяє детально опрацювати найбільш критичні аспекти системи, забезпечуючи при цьому можливість подальшого масштабування.
|
||||
Розмір ER-діаграми інформаційної системи містить понад 25 атрибутів, тому згідно з методичними вказівками з курсового проектування було обрано частину, що охоплює 5 взаємопов'язаних сутностей: "Користувач", "Пакунок", "База пакунку", "Тип ролі" та "Роль" @normal_er_frag. Така декомпозиція дозволяє детально опрацювати найбільш критичні аспекти системи, забезпечуючи при цьому можливість подальшого масштабування.
|
||||
|
||||
#img("img/er_diagram_frag.png", "Фрагмент ER-діаграми (рисунок виконаний самостійно)")
|
||||
#img("img/normal/normal_er_frag.png", "Фрагмент ER-діаграми (рисунок виконаний самостійно)")
|
||||
|
||||
Відповідно до теорії реляційних баз даних, відношення вважається нормалізованим до першої нормальної форми (1НФ) за умови дотримання наступних критичних вимог: атомарності даних (кожне поле містить лише одне значення), унікальності ідентифікації записів через первинні ключі, відсутності порожніх значень у ключових полях, та незалежності від фізичного порядку розташування записів.
|
||||
|
||||
Для практичної перевірки відповідності 1НФ, створимо універсальне відношення T @normal_t, що інтегрує атрибути всіх релевантних сутностей. Це відношення формує фундаментальну структуру для подальшої нормалізації даних.
|
||||
|
||||
При визначенні первинного ключа особлива увага приділяється семантичному аналізу даних, зокрема є потреба бачити яку роль має користувач для кожної бази пакунку. Можемо зробити висновок що найкращим ключовими атрибутами стануть "База пакунку id", "Користувач id" та "Роль id". Ці атрибути надають можливість унікально ідентифікувати універсальне відношення.
|
||||
При визначенні первинного ключа особлива увага приділяється семантичному аналізу даних. Зокрема можна помітити потребу бачити яку роль має користувач для кожного пакунку. Тому що найкращим ключовими атрибутами стануть "Пакунок id" та "Роль id". Ці атрибути надають можливість унікально ідентифікувати універсальне відношення та їх сполучення охоплює всі атрибути відношення.
|
||||
|
||||
#img("img/normal_t.png", "Універсальне відношення T (рисунок виконаний самостійно)")
|
||||
#img("img/normal/normal_t.png", "Універсальне відношення T (рисунок виконаний самостійно)")
|
||||
|
||||
Всі визначені атрибути є неподільними, а значення атомарні. Первиний ключ {База пакунку id, Користувач id, Роль id} дозволяє унікально ідентифікувати кожний кортеж. Ключові поля не мають порожніх значень, кортежі не мають фіксованого порядку. Тому, універсальне вдношення Т знаходиться в 1НФ.
|
||||
Всі визначені атрибути є неподільними, а значення атомарні. Сполучений первиний ключ який складаєтсья з "Пакунок id" та "Роль id" дозволяє унікально ідентифікувати кожний кортеж. Ключові поля не мають порожніх значень, кортежі не мають фіксованого порядку, тому, універсальне вдношення Т знаходиться в першій нормальній формі.
|
||||
|
||||
Щоб перевірити універсальне відношення Т на відповідність 2НФ потрібно проаналізувати його на існування частковий функціональних залежностей неключових атрибутів від частини первинного ключа.
|
||||
Щоб перевірити універсальне відношення Т на відповідність другій нормальній формі (2НФ), потрібно проаналізувати його на існування часткових функціональних залежностей неключових атрибутів від частини первинного ключа.
|
||||
|
||||
Для перевірки чи знаходиться відношення Т в другій нормальній формі визначимо функціональні залежності атрибутів @normal_t_dep.
|
||||
|
||||
Можемо зробити висновок, що відношення не знаходиться в другій нормальній формі, адже деякі атрибути мають неповні функціональні залежності (залежать лише від частини ключа). Для приведення універсального відношення Т до другої нормальної форми виділимо з нього три універсальних відношення T1, T2 та T3 виходячи з помічених раніше неповних функціональних залежностей @normal_t123.
|
||||
Можемо зробити висновок, що відношення не знаходиться в другій нормальній формі, адже деякі атрибути мають неповні функціональні залежності (залежать лише від частини ключа). Для приведення універсального відношення Т до другої нормальної форми виділимо з нього три універсальних відношення T1 та T2 виходячи з помічених раніше неповних функціональних залежностей @normal_t12.
|
||||
|
||||
Відношення зберігають першу нормальну форму та не містять неповних функціональних залежностей, оскільки кожне з них має лише один ключовий атрибут. Таким чином, можна зробити висновок, що ці відношення відповідають вимогам другої нормальної форми.
|
||||
|
||||
#img("img/normal_t_dep.png", "Універсальне відношення T із визначеними залежностями (рисунок виконаний самостійно)")
|
||||
#img("img/normal/normal_t_dep.png", "Універсальне відношення T із визначеними залежностями (рисунок виконаний самостійно)")
|
||||
|
||||
#img("img/normal_t123.png", "Універсальні відношення T1, Т2 та T3 (рисунок виконаний самостійно)")
|
||||
#img("img/normal/normal_t12.png", "Універсальні відношення T1 та Т2 (рисунок виконаний самостійно)")
|
||||
|
||||
Для досягнення третьої нормальної форми таблиці мають бути в другій нормальній формі, a також в відношеннях не має бути транзитивних залежностей, тобто кожен неключовий атрибут повинен залежати безпосередньо від первинного ключа, а не через інші неключові атрибути.
|
||||
Для досягнення третьої нормальної форми (3НФ) таблиці мають бути в другій нормальній формі, a також в відношеннях не має бути транзитивних залежностей, тобто кожен неключовий атрибут повинен залежати безпосередньо від первинного ключа, а не через інші неключові атрибути.
|
||||
|
||||
Проаналізувавши відношення Т1, Т2 і Т3 можемо побачити, що всі атрибути в них залежать від ключів "База пакунку id", "Користувач id" та "Роль id" відповідно, але ще існують інші залежності:
|
||||
- "Користувач id" - "Ім'я", "Електронна пошта", "Пароль", "Дата логіну", "Дата створення", "Дата оновлення";
|
||||
- "Пакунок id" - "Назва", "Версія", "Опис", "Веб-покликання", "Дата позначення", "Дата створення", "Дата оновлення";
|
||||
- "Тип ролі id" - "Назва", "Опис";
|
||||
Проаналізувавши відношення Т1 та Т2 можемо побачити, що всі атрибути в них залежать від ключів "Пакунок id" та "Роль id" відповідно, але ще існують інші залежності:
|
||||
- "База пакунку id" - "Назва", "Опис", "Дата створення", "Дата оновлення";
|
||||
- "Роль id" - "Коментар".
|
||||
- "Тип ролі id" - "Назва", "Опис";
|
||||
- "Користувач id" - "Ім'я", "Електронна пошта", "Пароль", "Дата логіну", "Дата створення", "Дата оновлення";
|
||||
|
||||
Спочатку винесемо відношення "Пакунок" за допомогою ключа "Пакунок id" та виділимо відношення "База пакунку" з відношення Т2 за допомогою ключа "База пакунку id", після чого сформуємо відношення T4 та T5 в котрих залишимо зовнішній ключ "Пакунок id" @normal_pb45.
|
||||
Винесемо з відношення Т1 два відношення "Тип ролі" та "Користувач" за допомогою ключів "Тип ролі id" та "Користувач id" відповідно. Після чого сформуємо відношення T3 в котрому залишимо тільки зовнішні ключі "Тип ролі id" та "Користувач id" @normal_t23.
|
||||
|
||||
#img("img/normal_pb45.png", [Відношення "Пакунок", "База пакунку", Т4, Т5 (рисунок виконаний самостійно)])
|
||||
#img("img/normal/normal_t23.png", [Відношення "Тип ролі", "Користувач", Т2 та Т3 (рисунок виконаний самостійно)])
|
||||
|
||||
Тепер з відношень Т4 та Т5 виділимо відношення "Тип ролі" за допомогою ключа "Тип ролі id"
|
||||
Можна помітити, що відношення Т2 та Т3 мають спільне відношення "База пакунку id". Утворимо відношення "Пакунок" та "Роль" виділив з відношень Т2 та Т3 відповідно відношення "База пакунку", залишимо на його місці ключ "База пакунку id".
|
||||
|
||||
😫
|
||||
#img("img/normal/normal.png", [Відношення "Користувач", "Пакунок", "База пакунку", "Тип ролі" та "Роль" (рисунок виконаний самостійно)])
|
||||
|
||||
Тепер необхідно перевірити отримані відношення на відповідність третій нормальній формі.
|
||||
|
||||
Всі відношення мають первинні ключі, їх атрибути є атомарними, тому відношення відповідають вимогам першої нормальної форми. Крім того, всі атрибути кожного відношення повністю функціонально залежать від первинного ключа, що у поєднанні з відповідністю першій нормальній формі дозволяє зробити висновок, що відношення відповідають другій нормальній формі. Оскільки жодне відношення не містить транзитивних залежностей, а також відповідає вимогам другої нормальної форми, можна зробити висновок, що відношення знаходяться у третій нормальній формі.
|
||||
|
||||
Побудуємо схему даних та позначимо зв'язки між сутностями @normal_link. Після цього порівняємо отриману схему даних з початковою ER-діаграмою для подальшого аналізу.
|
||||
|
||||
#img("img/normal/normal_link.png", "Побудована схема даних (рисунок виконаний самостійно)")
|
||||
|
||||
Порівняння отриманої схеми даних з початковою ER-діаграмою @er_diagram показує їхню повну відповідність, що свідчить про успішну нормалізацію схеми даних до третьої нормальної форми. Це значить, що всі сутності, атрибути та зв'язки між ними були правильно ідентифіковані, а всі непотрібні залежності та повторення даних були усунуті. Це забезпечить ефективність та масштабованість інформаційної системи.
|
||||
|
||||
|
||||
= Опис програми
|
||||
|