app.people
TableRow level security on
One human, linked to at most one sign-in (Section 4.8.1). Global across orgs; profile facts live with A30 person profiles, which must not restate full_name.
Primary key: id
| Column | Type | Nullable | Description |
|---|---|---|---|
| id | uuid | No | Person id. |
| user_id | uuid | Yes | Supabase Auth user this person signs in as. Null once the sign-in is deleted.References auth.users.id |
| full_name | text | Yes | The name the person gives for themselves. Null until the person provides it. |
| created_at | timestamp with time zone | No | When the row was inserted. Set by the database. |
| created_by | uuid | Yes | Person who inserted the row, or null for a platform process. Set by the database.References app.people.id |
| updated_at | timestamp with time zone | No | When the row last changed. Set by the database. |
| updated_by | uuid | Yes | Person who last changed the row, or null for a platform process. Set by the database.References app.people.id |
| deleted_at | timestamp with time zone | Yes | Soft delete time. A row with deleted_at set is ignored by every access helper. |
| given_name | text | Yes | Optional given name, as the person writes it (Section 15). Used for formal address and sorting, never to rebuild the full name. |
| family_name | text | Yes | Optional family name, as the person writes it (Section 15). Sorting uses it when present; the platform never assumes it comes last. |