Relational Data Model Entity

An entity (table) definition in a relational data model, including its attributes, primary key, and relationships to other entities.

Data ArchitectureDatabase DesignEntity RelationshipNormalizationSQLSchema DesignData Modeling

Properties

Name Type Description
name string The name of the entity/table.
description string Description of the entity and its purpose.
schema string Database schema the entity belongs to.
attributes array List of attributes (columns) in the entity.
primaryKey array List of attribute names forming the primary key.
foreignKeys array Foreign key relationships to other entities.
indexes array Additional indexes on the entity.
normalForm string The highest normal form this entity satisfies.
View JSON Schema on GitHub

JSON Schema

relational-data-modeling-entity-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/relational-data-modeling/main/json-schema/relational-data-modeling-entity-schema.json",
  "title": "Relational Data Model Entity",
  "description": "An entity (table) definition in a relational data model, including its attributes, primary key, and relationships to other entities.",
  "type": "object",
  "required": ["name", "attributes"],
  "properties": {
    "name": {
      "type": "string",
      "description": "The name of the entity/table.",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "description": "Description of the entity and its purpose."
    },
    "schema": {
      "type": "string",
      "description": "Database schema the entity belongs to."
    },
    "attributes": {
      "type": "array",
      "description": "List of attributes (columns) in the entity.",
      "items": {
        "$ref": "#/$defs/Attribute"
      },
      "minItems": 1
    },
    "primaryKey": {
      "type": "array",
      "description": "List of attribute names forming the primary key.",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "foreignKeys": {
      "type": "array",
      "description": "Foreign key relationships to other entities.",
      "items": {
        "$ref": "#/$defs/ForeignKey"
      }
    },
    "indexes": {
      "type": "array",
      "description": "Additional indexes on the entity.",
      "items": {
        "$ref": "#/$defs/Index"
      }
    },
    "normalForm": {
      "type": "string",
      "description": "The highest normal form this entity satisfies.",
      "enum": ["1NF", "2NF", "3NF", "BCNF", "4NF", "5NF"]
    }
  },
  "$defs": {
    "Attribute": {
      "type": "object",
      "required": ["name", "dataType"],
      "properties": {
        "name": {
          "type": "string",
          "description": "The attribute/column name."
        },
        "dataType": {
          "type": "string",
          "description": "SQL data type (e.g., VARCHAR, INTEGER, BOOLEAN, DATE)."
        },
        "nullable": {
          "type": "boolean",
          "description": "Whether the attribute can be NULL.",
          "default": true
        },
        "unique": {
          "type": "boolean",
          "description": "Whether the attribute must be unique.",
          "default": false
        },
        "default": {
          "description": "Default value for the attribute."
        },
        "description": {
          "type": "string",
          "description": "Description of the attribute."
        },
        "isPrimaryKey": {
          "type": "boolean",
          "description": "Whether this attribute is part of the primary key.",
          "default": false
        }
      }
    },
    "ForeignKey": {
      "type": "object",
      "required": ["columns", "referencedEntity", "referencedColumns"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the foreign key constraint."
        },
        "columns": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Columns in this entity forming the foreign key."
        },
        "referencedEntity": {
          "type": "string",
          "description": "Name of the referenced entity."
        },
        "referencedColumns": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Columns in the referenced entity."
        },
        "onDelete": {
          "type": "string",
          "enum": ["CASCADE", "SET NULL", "RESTRICT", "NO ACTION"],
          "description": "Action on delete."
        },
        "onUpdate": {
          "type": "string",
          "enum": ["CASCADE", "SET NULL", "RESTRICT", "NO ACTION"],
          "description": "Action on update."
        }
      }
    },
    "Index": {
      "type": "object",
      "required": ["name", "columns"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the index."
        },
        "columns": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Columns included in the index."
        },
        "unique": {
          "type": "boolean",
          "description": "Whether the index enforces uniqueness.",
          "default": false
        },
        "type": {
          "type": "string",
          "enum": ["BTREE", "HASH", "GIN", "GIST", "BRIN"],
          "description": "Index implementation type."
        }
      }
    }
  }
}