<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 (&gt; 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>
