Foundations
Before moving on, we will introduce some terms, used in Universal Data Model [UDM].
The record structure of a table or the "record structure" of a view, is called an entity.
A Product, a Party and a VAT Category are all entities.
VAT Category is a simple entity, because it is represented by only one table in theu data model.
On the contrary, a Party is a complex entity, because it is represented by many tables (or a view) in the data models.
Tables in the data models are divided into 4 categories:
- Base tables - like Customers, Products and Contacts
- Document tables - like Invoices, Orders and Shipments
- Dimension tables - like VAT Categories, Colors and Payment terms
- Transaction tables - like Inventory, AR, AP and Accounting transactions
Base and Document tables are usually complex entities and Dimension and Transaction tables are simple tables.
A Primary Key (PK) is a field in a table which uniquely identifies each row (or record) in the table.
All PKs in the data models are GUIDs - universally unique Unicode strings - with a few exceptions.
Every row (or record) must have a PK, although sometimes it may look "strange" to add one.
A Foreign Key (FK) is a field (or a collection of fields) in one table that uniquely identifies a row of another table. They are used to "connect" records from one table, with records of another "related" table. They are also Unicode strings.
A Transaction is a set of operations - inserts, updates and/or deletions of records in one or more tables.
Either ALL of these operations must be performed successfully or NONE.
The classic example is a banking application where we transfer money from one account to another.
Here we actually have 2 operations:
- Reduce the money in one account
- and Increase the money in another account
To ensure integrity, both the operations - or the set of operations - must be performed, otherwise NONE should be performed.
An important issue with Transactions is the Isolation Mode of your RDBMs. This is available in C/S RDBMs (HFSQL C/S, SQL Server etc) but not in Classic HFSQL.