Data Modeling and Records
What to know
A record type is Appian's core data design object: it defines fields and their types, a data source, relationships, and security, and it powers record lists, record views, and record actions. Fields can be Text, Integer, Date, Boolean, a CDT, or another record type. The data source says where rows actually live - a database table reached through a data source, a web service, a process-backed record, or a data store entity. Relationships (one-to-many, many-to-one, many-to-many) let you traverse from one record to related records; you define a relationship once and Appian exposes the reciprocal one.
Traps
- CDT vs record type. A CDT is only a data structure; a record type adds querying, relationships, security, and record views. If a question asks how to get row-level security or related-record navigation, the answer is record type.
- Direction of cardinality. Read the relationship from the record type you are editing. 'Customer has many orders' is a one-to-many relationship defined on Customer.
- Record-level security is not object security. Object security decides who can open the record type in the designer; record-level security filters which rows a user can see.
Worked example
Modelling Customers and Orders: on the Customer record type, add a one-to-many relationship to Order using the foreign key. The Order record type automatically shows the reciprocal many-to-one relationship. In an interface you can then display ri!customer.orders or count related orders without a second query - cheaper and less error-prone than re-querying.
Rule of thumb: define the relationship on the 'one' side as one-to-many and let the reciprocal be generated; never define both halves by hand.