Business Central Table Structure: Types, Keys and Relations
Business Central stores data in tables defined as AL objects. This reference lists the table types, the functional patterns you meet again and again, how keys and TableRelation work, and where to look up table information in your own system.
| Concept | Group | What it means | Example or how to use it |
|---|---|---|---|
Normal table | Table type | Default table type. Stored in the Business Central database and shared by all users of the company. | Table 18 Customer, Table 27 Item |
Temporary table | Table type | A table variable or a table with the Temporary property. Lives in memory for the session and is not saved. | Record Item temporary; used for buffers and report data |
Virtual table | Table type | System-provided table that exposes metadata or runtime data rather than stored business data. | Table Information, Field, Object Metadata style tables |
System table | Table type | Platform tables in the 2,000,000,000 number range, such as users, companies and permissions. | User, Company; read with care, not meant for customization |
TableType property | Table type | AL property that marks a table as Normal, CRM, ExternalSQL, Exchange or MicrosoftGraph depending on where the data lives. | TableType = CRM for Dataverse-backed tables |
Master data table | Functional pattern | Long-lived business objects referenced by many documents. | Customer, Vendor, Item, G/L Account, Resource |
Setup table | Functional pattern | Single-record table with one row of company-wide configuration. Primary key is usually an empty code. | Sales & Receivables Setup, Inventory Setup |
Document header and line | Functional pattern | Open documents split into a header table and a line table linked by document type and number. | Sales Header 36 and Sales Line 37, Purchase Header 38 and Purchase Line 39 |
Posted document tables | Functional pattern | Posting moves an open document into read-only posted header and line tables. | Sales Invoice Header 112 and Sales Invoice Line 113 |
Ledger entry table | Functional pattern | Immutable transaction records written by posting. Identified by an Entry No. primary key. | G/L Entry 17, Cust. Ledger Entry 21, Item Ledger Entry 32 |
Detailed ledger entry | Functional pattern | Child table that stores the application and adjustment movements behind a ledger entry. | Detailed Cust. Ledg. Entry, Detailed Vendor Ledg. Entry |
Journal line table | Functional pattern | Work-in-progress lines that become ledger entries when posted, grouped by template and batch. | Gen. Journal Line, Item Journal Line |
Register table | Functional pattern | Records the range of entry numbers created by each posting run. | G/L Register 45 |
Primary key | Keys | First key listed in the AL keys section. Must be unique and cannot be removed. | keys { key(PK; "No.") { Clustered = true; } } |
Secondary key | Keys | Additional key used for sorting, filtering and performance. Each extra key costs write time and storage. | Add a key only for a filter used often in lists or reports |
SumIndexFields | Keys | Fields for which the server maintains running sums for a key, which makes FlowField sums fast on large ledgers. | Key with SumIndexFields = Amount for a Sum FlowField |
Clustered key | Keys | Determines physical row order in SQL Server. By default the primary key is clustered. | Clustered = true on the primary key |
TableRelation property | Relations | Field property that links a field to the primary key of another table, giving a lookup and referential check. | TableRelation = Customer."No." |
Conditional TableRelation | Relations | Relation that depends on another field using if, const, field and where. | TableRelation = if (Type = const(Item)) Item else if (Type = const(Resource)) Resource |
Filtered TableRelation | Relations | Adds a where clause so the lookup shows only related rows. | TableRelation = "Ship-to Address".Code where ("Customer No." = field("Sell-to Customer No.")) |
ValidateTableRelation | Relations | Property that decides whether a typed value must exist in the related table. | ValidateTableRelation = false allows free text with lookup |
FlowField | Field type | Calculated field, not stored. Defined with CalcFormula using Sum, Count, Exist, Lookup, Average, Min or Max. | Customer Balance as Sum of Detailed Cust. Ledg. Entry Amount |
FlowFilter | Field type | Filter field that is not stored, used to restrict what a FlowField calculates. | Date Filter on Customer or G/L Account |
Normal field | Field type | Stored field with a data type such as Code, Text, Decimal, Date, Option or Enum. | Field 2 Name in Customer |
Table number ranges | Where to look | Standard base application objects use low numbers. Per-tenant extensions use 50000 to 99999. AppSource and partner apps use assigned ranges above that. | Check app.json idRanges before adding an object |
Table Information page | Where to look | Search for Table Information to see records and size per table in the current company. | Find the largest tables before a performance review |
Page Inspection | Where to look | Press Ctrl+Alt+F1 on a page to see its source table, each field name and its table field number. | Identify the exact table and field behind a value on screen |
Tell Me search | Where to look | Search for Tables, Fields or Table Information to browse objects and fields in the web client. | Search 'Fields' and filter by table number |
AL symbols and Go to definition | Where to look | In VS Code with the AL extension, download symbols and use Go to definition on a table name. | Ctrl+click Customer to read the object source |
Table names, numbers and properties can differ by release, and extensions can add fields and keys to standard tables. Confirm in your own environment with Page Inspection or the AL symbols before writing code or reports.
Need reports or an AI assistant over Business Central data?
Optional: tell us your version and hosting and we will outline a read-only, permission-aware approach. Not needed to use the reference.
Optional. The tool and every export work without this. No spam.
How to use this reference
Filter by group to see only table types, key concepts or relation rules, or type a word such as ledger, TableRelation or FlowField in the search box. The example column gives a standard table or a short AL snippet. Export the filtered list to Excel to share with a report writer or a new developer. For a list of core table numbers, open the Business Central core table numbers reference linked below; this page explains how those tables are structured rather than listing them.
Table types and functional patterns
In AL, the TableType property says where data lives, but most conversations about types are really about patterns. Master data tables hold customers, vendors and items. Setup tables hold one row of configuration. Documents are split into a header and lines, and posting moves them to posted document tables. Ledger entries are the immutable result of posting, and detailed ledger entries store applications between them. Knowing the pattern tells you where a number came from and where not to write directly.
Keys, TableRelation and FlowFields
Every table has a primary key; other keys speed up sorting and filtering at a write cost. TableRelation links a field to the primary key of another table and drives lookups and validation. Conditional relations use if and const to switch table by another field, and where clauses filter the lookup. FlowFields calculate sums, counts or lookups on demand, and are only fast when a matching key with SumIndexFields exists. Keep these in mind when a list page loads slowly.
- Relations point to a primary key, not to any field
- FlowFields are not stored, so they cannot be used in SQL joins directly
- Extra keys add write cost, so add them for proven needs
Finding table information in your system
Use Page Inspection (Ctrl+Alt+F1) to see which table and field sit behind a value on screen. Search for Table Information to view row counts and size per table. In VS Code with the AL Language extension, download symbols and go to a table definition to read its fields, keys and relations. For reporting, remember that extension fields live in separate extension tables on the SQL side, and that web service and API pages are the supported way to read data, not direct SQL on SaaS.
Frequently Asked Questions
What types of tables are in Business Central?
Technically TableType can be Normal, CRM, ExternalSQL, Exchange or MicrosoftGraph, and tables can be temporary. Functionally you will see master, setup, document header and line, posted document, ledger entry, journal and register tables.
How does TableRelation work in Business Central?
TableRelation is a field property that points to the primary key of another table. It drives the lookup list and, unless ValidateTableRelation is false, checks that the value exists. It can be conditional with if and const, and filtered with where.
How do I find which table a field belongs to?
Open the page, press Ctrl+Alt+F1 for Page Inspection, and select the field. It shows the source table, field name and number. In VS Code, download symbols and use Go to definition on the table name.
Why are some Business Central values not in the SQL table?
FlowFields are calculated and not stored. Also, fields added by extensions are stored in separate extension tables joined by the primary key, so a query against the base table alone will not return them.
If your team wants to ask Business Central questions in plain language against its own tables, Netray can add a private AI layer that respects permissions. This reference does not need it.
Related Tools
Business Central Core Table Numbers Reference
Look up the base application table number and name for ledger entries, documents, master data and manufacturing objects in Business Central and NAV.
Microsoft DynamicsBusiness Central API v2.0 URL Builder
Generate correct Business Central API v2.0 endpoints, OData query strings, the OAuth token request and a test call for SaaS or on-premises.
Developer ToolsBusiness Central AL Extension Skeleton Generator
Fill in publisher, prefix and ID range to get app.json, a table extension, a page extension, an event subscriber codeunit and a permission set.
Microsoft DynamicsBusiness Central Permission Set Design Worksheet
Map roles to objects and permission levels before you build permission sets, and flag segregation of duties risks early.
Microsoft DynamicsBusiness Central Posting Groups Setup Worksheet
Map general business and product posting groups to the G/L accounts they should post to before you configure General Posting Setup.
More Microsoft Dynamics tools
See all- Business Central SaaS vs On-Premises TCO Calculator
- Business Central Implementation Estimate Worksheet
- Business Central User Access Request Form Template
- Business Central Setup Checklist (Finance and Manufacturing)
- D365 F&O Manufacturing Data Entities Reference
- D365 F&O OData URL Builder
- D365 Production Order Status Reference
- D365 Data Management Import Worksheet Template
- D365 Batch Job Checklist
Keep exploring
Free tools
- Business Central Core Table Numbers ReferenceLook up the base application table number and name for ledger entries, documents, master data and manufacturing objects in Business Central and NAV.
- Business Central Item Setup Options ReferencePlain-language meaning of the item card options in Business Central that drive costing and planning, with guidance on when each fits.
- Business Central Setup Checklist (Finance and Manufacturing)A step-by-step checklist for the first setup of a Business Central company, covering finance, inventory, manufacturing, users and go-live basics.
ERP fixes and how-tos
- Business Central Manufacturing Setup: Items, BOMs, Routings and Production OrdersSet up Business Central manufacturing: Manufacturing Setup, work centers, production BOMs, routings, item settings, manufacturing policy and demo data.
- Business Central Item Templates and Customer TemplatesCreate and use item templates and customer templates in Business Central to default posting groups, costing method and dimensions on every new record.
- CalcFormula in Business Central: FlowFields With Sum, Count, Exist and LookupCalcFormula in Business Central AL explained: Sum, Count, Exist, Lookup, Average, Min and Max with syntax, FlowFilters, CalcFields and performance caveats.
AI on your ERP
- AI for Dynamics 365 Business Central in Discrete ManufacturingGrounded AI for Dynamics 365 Business Central discrete manufacturers: production orders, planning worksheets, routings and costing, on a private LLM.
- AI for Business Central manufacturing operations, beyond CopilotAI for Business Central manufacturing beyond Copilot: grounded answers on production orders, routings, and capacity via APIs v2.0, on-prem capable.
Integrations
- How to add AI agents to Dynamics 365 Business CentralHow to add AI agents to Dynamics 365 Business Central: API v2.0 and custom API pages as the tool layer, approval gates, SaaS vs on-prem, and build options.
- How to use ChatGPT with Dynamics 365 Business CentralUse ChatGPT with Business Central: custom GPT actions over the API, exports vs live access, enterprise data controls, and when a private model fits better.
Software
- Microsoft Dynamics 365 Business CentralDynamics 365 Business Central explained for manufacturers: modules, APIs, AL extensions, deployment, strengths, limits and alternatives for small and mid-size firms.
- Microsoft Dynamics 365 Finance and Supply ChainDynamics 365 Finance and Supply Chain Management explained for manufacturers: modules, data entities, OData, deployment, strengths, limits and alternatives.