{
  "schemaVersion": "0.1",
  "diagramFamily": "entityRelationship",
  "scene": {
    "id": "blog-er",
    "title": "Blog Entity Relationship",
    "units": "px",
    "canvas": { "width": 1100, "height": 600 }
  },
  "layoutStrategy": {
    "algorithm": "hierarchical",
    "direction": "LR",
    "nodeSpacing": 60,
    "rankSpacing": 140
  },
  "elements": [
    {
      "id": "user",
      "kind": "node",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Users",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "username", "type": "varchar" },
          { "name": "email", "type": "varchar" },
          { "name": "created_at", "type": "timestamp" }
        ]
      }
    },
    {
      "id": "post",
      "kind": "node",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Posts",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "author_id", "type": "int", "fk": true },
          { "name": "title", "type": "varchar" },
          { "name": "body", "type": "text" }
        ]
      }
    },
    {
      "id": "comment",
      "kind": "node",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Comments",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "post_id", "type": "int", "fk": true },
          { "name": "user_id", "type": "int", "fk": true },
          { "name": "body", "type": "text" }
        ]
      }
    },
    {
      "id": "tag",
      "kind": "node",
      "nodeType": "er.entity",
      "shape": "rect",
      "label": "Tags",
      "extensions": {
        "columns": [
          { "name": "id", "type": "int", "pk": true },
          { "name": "name", "type": "varchar" }
        ]
      }
    },
    {
      "id": "e-writes",
      "kind": "edge",
      "edgeType": "er.relationship",
      "from": { "elementId": "post", "column": "author_id" },
      "to": { "elementId": "user" },
      "router": "orthogonal"
    },
    {
      "id": "e-comments",
      "kind": "edge",
      "edgeType": "er.relationship",
      "from": { "elementId": "comment", "column": "user_id" },
      "to": { "elementId": "user" },
      "router": "orthogonal"
    },
    {
      "id": "e-has-comments",
      "kind": "edge",
      "edgeType": "er.relationship",
      "from": { "elementId": "comment", "column": "post_id" },
      "to": { "elementId": "post" },
      "router": "orthogonal"
    },
    {
      "id": "e-tagged",
      "kind": "edge",
      "edgeType": "er.relationship",
      "from": { "elementId": "post" },
      "to": { "elementId": "tag", "cardinality": "many" },
      "router": "orthogonal",
      "label": "tagged"
    }
  ]
}
