These are fields that the users do not see or if they see them, it is for information/display purposes only, they are not able to edit them, and if the application is coded protectively – even with hack-y methods.
Integer based Ids – They need little to no storage and could save really big integers ( 263 ) – saved in 4 bytes. In the same time in 4 bytes you can save “abcd” text - top. They are better for sorting, indexing and doing all kinds of mathematical aggregations and operations. That’s why in majority of cases they are used for Primary & Foreign Keys, because the work/load on them is very very big. But, their uniqueness is limited only to a specific type of records. The moment a record is out, you must know this or that ID – of what type it started out, otherwise it may get mixed. The problem I’m pointing here is in situations where the same type of records is created in multiple different places – found actually often in today’s multi-device world and in cases when the back-end database system scales up and requires more than one instance of the database (with write permission on it).
GUIDs – Guid is Universally unique identifier [0f273c17-02a0-474f-8ba1-152a0ed19f8e]– long 128 bits and is considered randomly enough so different instances of the same application to create new different ones. Collisions are possible, but acceptably small enough chance for every, big or small corporation, company or developer to use it. For need of such “Global” uniqueness – they could be used as primary keys or for browser based applications - to hide the number of records and make it more secure.
Flags – Applications often need some boolean or enum types that describe the state of the records that are often not directly displayed to the users, but taken into account in the queries. Example flags or states are – “Is Synchronized”, “Is Deleted”, states – [Active, Inactive], [Verified, Not Verified, Blocked].
Timestamps – Moments in time when something has happened in software systems are popular and populated automatically – generally used in a lot of cases – Date Created, Date Modified, Date Logged, Date Logged Out, Expiration Date, Valid [for example Activation Link] Until, etc.