mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-14 12:15:59 +00:00
* Add draw-io diagram generator skill for awesome github copilot * Add comprehensive shape libraries and style reference documentation for draw.io - Introduced a new markdown file for draw.io shape libraries detailing various built-in shapes, their style keys, and usage. - Added a complete style reference for `<mxCell>` elements, including universal style keys, shape-specific keys, edge styles, and color palettes. - Included examples for common styles and shapes to aid users in creating diagrams effectively. * Add draw-io diagram validation and shape addition scripts * Add new diagram templates for flowchart, sequence, and UML class diagrams - Created a flowchart template with a structured layout including start, steps, decision points, and end. - Added a sequence diagram template illustrating interactions between a client, API server, and database with activation boxes and message arrows. - Introduced a UML class diagram template featuring an interface, classes, attributes, methods, and relationships, including composition and realization. * Add draw-io diagram generator skill to README with detailed usage instructions and bundled assets * Add draw.io instructions with workflow, XML structure rules, style conventions, and validation checklist * Add draw.io diagram standards to README instructions for enhanced diagram creation and editing * Moving diagram templates to assets/ to follow agentskills structure - Moved flowchart template with start, steps, decision points, and end nodes. - Moved sequence diagram template illustrating interactions between a client, API server, and database. - Moved UML class diagram template featuring an interface, classes, attributes, methods, and relationships. * Clarify installation instructions for draw.io VS Code extension in SKILL.md
376 lines
26 KiB
Plaintext
376 lines
26 KiB
Plaintext
<mxfile host="Electron" modified="2026-03-25T00:00:00.000Z" version="26.0.0">
|
|
<diagram id="er-diagram" name="ER Diagram">
|
|
<mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1"
|
|
tooltips="1" connect="1" arrows="1" fold="1"
|
|
page="1" pageScale="1" pageWidth="1169" pageHeight="827"
|
|
math="0" shadow="0">
|
|
<root>
|
|
<mxCell id="0" />
|
|
<mxCell id="1" parent="0" />
|
|
|
|
<!-- TITLE -->
|
|
<mxCell id="2" value="Entity Relationship Diagram"
|
|
style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="300" y="20" width="570" height="40" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- ====== TABLE: users ====== -->
|
|
<!-- Table container -->
|
|
<mxCell id="tbl_users" value="users"
|
|
style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="80" y="120" width="260" height="210" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- Header row (already part of container via startSize, add column headers) -->
|
|
<mxCell id="tbl_users_r0" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=1;"
|
|
vertex="1" parent="tbl_users">
|
|
<mxGeometry y="30" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r0_c1" value="PK"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r0">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r0_c2" value="id (UUID)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r0">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r0_c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_users_r0">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_users_r1" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_users">
|
|
<mxGeometry y="60" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r1_c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r1">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r1_c2" value="email (VARCHAR 255)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r1">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r1_c3" value="UNIQUE"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_users_r1">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_users_r2" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_users">
|
|
<mxGeometry y="90" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r2_c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r2">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r2_c2" value="name (VARCHAR 100)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r2">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r2_c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_users_r2">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_users_r3" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_users">
|
|
<mxGeometry y="120" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r3_c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r3">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r3_c2" value="created_at (TIMESTAMP)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r3">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r3_c3" value="DEFAULT NOW()"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_users_r3">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_users_r4" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_users">
|
|
<mxGeometry y="150" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r4_c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r4">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r4_c2" value="updated_at (TIMESTAMP)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r4">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="tbl_users_r4_c3" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_users_r4">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<!-- ====== TABLE: orders ====== -->
|
|
<mxCell id="tbl_orders" value="orders"
|
|
style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="460" y="120" width="260" height="240" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_orders_r0" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=1;"
|
|
vertex="1" parent="tbl_orders">
|
|
<mxGeometry y="30" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t2r0c1" value="PK"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r0">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r0c2" value="id (UUID)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r0">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r0c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_orders_r0">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_orders_r1" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_orders">
|
|
<mxGeometry y="60" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t2r1c1" value="FK"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=2;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r1">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r1c2" value="user_id (UUID)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r1">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r1c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_orders_r1">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_orders_r2" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_orders">
|
|
<mxGeometry y="90" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t2r2c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r2">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r2c2" value="status (VARCHAR 20)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r2">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r2c3" value="DEFAULT 'pending'"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_orders_r2">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_orders_r3" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_orders">
|
|
<mxGeometry y="120" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t2r3c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r3">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r3c2" value="total (DECIMAL 10,2)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r3">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r3c3" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r3">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_orders_r4" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_orders">
|
|
<mxGeometry y="150" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t2r4c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r4">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r4c2" value="created_at (TIMESTAMP)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_orders_r4">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t2r4c3" value="DEFAULT NOW()"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_orders_r4">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<!-- ====== TABLE: order_items ====== -->
|
|
<mxCell id="tbl_items" value="order_items"
|
|
style="shape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;align=center;resizeLast=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;"
|
|
vertex="1" parent="1">
|
|
<mxGeometry x="460" y="430" width="260" height="240" as="geometry" />
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_items_r0" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=1;"
|
|
vertex="1" parent="tbl_items">
|
|
<mxGeometry y="30" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t3r0c1" value="PK"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r0">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r0c2" value="id (UUID)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r0">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r0c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_items_r0">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_items_r1" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_items">
|
|
<mxGeometry y="60" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t3r1c1" value="FK"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;fontStyle=2;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r1">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r1c2" value="order_id (UUID)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r1">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r1c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_items_r1">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_items_r2" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_items">
|
|
<mxGeometry y="90" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t3r2c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r2">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r2c2" value="product_name (VARCHAR)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r2">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r2c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_items_r2">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_items_r3" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_items">
|
|
<mxGeometry y="120" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t3r3c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r3">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r3c2" value="quantity (INT)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r3">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r3c3" value="CHECK (> 0)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_items_r3">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<mxCell id="tbl_items_r4" value=""
|
|
style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;top=0;left=0;right=0;bottom=0;"
|
|
vertex="1" parent="tbl_items">
|
|
<mxGeometry y="150" width="260" height="30" as="geometry" />
|
|
</mxCell>
|
|
<mxCell id="t3r4c1" value=""
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r4">
|
|
<mxGeometry width="50" height="30" as="geometry"><mxRectangle width="50" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r4c2" value="unit_price (DECIMAL 10,2)"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;"
|
|
vertex="1" parent="tbl_items_r4">
|
|
<mxGeometry x="50" width="140" height="30" as="geometry"><mxRectangle width="140" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
<mxCell id="t3r4c3" value="NOT NULL"
|
|
style="shape=partialRectangle;connectable=0;fillColor=none;top=0;left=0;bottom=0;right=0;overflow=hidden;fontStyle=2;"
|
|
vertex="1" parent="tbl_items_r4">
|
|
<mxGeometry x="190" width="70" height="30" as="geometry"><mxRectangle width="70" height="30" as="alternateBounds" /></mxGeometry>
|
|
</mxCell>
|
|
|
|
<!-- ====== RELATIONSHIPS ====== -->
|
|
|
|
<!-- users 1 → orders (one-to-many): ERone on users side, ERmanyToOne on orders side -->
|
|
<mxCell id="rel1" value=""
|
|
style="edgeStyle=entityRelationEdgeStyle;html=1;endArrow=ERmany;startArrow=ERone;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;"
|
|
edge="1" source="tbl_users_r1" target="tbl_orders_r1" parent="1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
<!-- orders 1 → order_items (one-to-many) -->
|
|
<mxCell id="rel2" value=""
|
|
style="edgeStyle=entityRelationEdgeStyle;html=1;endArrow=ERmany;startArrow=ERone;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;"
|
|
edge="1" source="tbl_orders_r0" target="tbl_items_r1" parent="1">
|
|
<mxGeometry relative="1" as="geometry" />
|
|
</mxCell>
|
|
|
|
</root>
|
|
</mxGraphModel>
|
|
</diagram>
|
|
</mxfile>
|