Relational Data Modeling · Schema
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. |
JSON Schema
{
"$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."
}
}
}
}
}