Privacy & Compliance

POPIA/GDPR/CCPA compliance: breach management, consent tracking, SAR requests, data retention.

ahgPrivacyPlugin
0
privacy_approval_log
0
privacy_audit_log
1
privacy_breach
1
privacy_breach_i18n
0
privacy_breach_incident
0
privacy_breach_notification
1
privacy_complaint
119
privacy_compliance_rule
6
privacy_config
0
privacy_consent
0
privacy_consent_i18n
0
privacy_consent_log
0
privacy_consent_record
1
privacy_data_inventory
6
privacy_dsar
3
privacy_dsar_i18n
4
privacy_dsar_log
0
privacy_dsar_request
1
privacy_institution_config
6
privacy_jurisdiction
10
privacy_jurisdiction_registry
68
privacy_lawful_basis
0
privacy_notification
1
privacy_officer
1
privacy_paia_request
2
privacy_processing_activity
0
privacy_processing_activity_i18n
0
privacy_redaction_cache
71
privacy_request_type
100
privacy_retention_schedule
83
privacy_special_category
1
privacy_template
7
privacy_visual_redaction
Entity Relationship Diagram
Open Full Size
Foreign Key Relationships
Constraint Table Column References Referenced Column
fk_breach_i18n privacy_breach_i18n id privacy_breach id
fk_breach_notif privacy_breach_notification breach_id privacy_breach id
fk_consent_i18n privacy_consent_i18n id privacy_consent id
fk_consent_log privacy_consent_log consent_id privacy_consent id
fk_dsar_i18n privacy_dsar_i18n id privacy_dsar id
fk_processing_i18n privacy_processing_activity_i18n id privacy_processing_activity id
privacy_approval_log
9 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK entity_type varchar(50) NOT NULL -
entity_id int unsigned NOT NULL -
action varchar(50) NOT NULL - submitted, approved, rejected, comment
old_status varchar(50) NULL -
new_status varchar(50) NULL -
comment text NULL -
user_id int NOT NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_audit_log
10 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK entity_type varchar(50) NOT NULL -
entity_id int unsigned NOT NULL -
FK action varchar(50) NOT NULL -
FK user_id int NULL -
ip_address varchar(45) NULL -
old_values json NULL -
new_values json NULL -
notes text NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_breach
22 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference_number varchar(50) NOT NULL -
FK jurisdiction varchar(30) NOT NULL popia
breach_type varchar(48) NOT NULL - confidentiality, integrity, availability
FK severity varchar(34) NOT NULL medium low, medium, high, critical
FK status varchar(58) NOT NULL detected detected, investigating, contained, resolved, closed
detected_date datetime NOT NULL -
occurred_date datetime NULL -
contained_date datetime NULL -
resolved_date datetime NULL -
data_subjects_affected int NULL -
data_categories_affected text NULL -
notification_required tinyint(1) NOT NULL 0
regulator_notified tinyint(1) NOT NULL 0
regulator_notified_date datetime NULL -
subjects_notified tinyint(1) NOT NULL 0
subjects_notified_date datetime NULL -
risk_to_rights varchar(39) NULL - unlikely, possible, likely, high
assigned_to int NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_breach_i18n
8 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL -
PK culture varchar(16) NOT NULL en
title varchar(255) NULL -
description text NULL -
cause text NULL -
impact_assessment text NULL -
remedial_actions text NULL -
lessons_learned text NULL -
privacy_breach_incident
17 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference varchar(50) NOT NULL -
incident_date datetime NOT NULL -
discovered_date datetime NOT NULL -
breach_type varchar(100) NOT NULL -
description text NOT NULL -
data_affected text NULL -
individuals_affected int NULL -
severity varchar(50) NULL -
root_cause text NULL -
containment_actions text NULL -
regulator_notified tinyint(1) NULL 0
notification_date datetime NULL -
subjects_notified tinyint(1) NULL 0
FK status varchar(50) NULL open
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_breach_notification
10 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK breach_id int unsigned NOT NULL -
notification_type varchar(53) NOT NULL - regulator, data_subject, internal, third_party
recipient varchar(255) NOT NULL -
method varchar(45) NOT NULL - email, letter, portal, phone, in_person
sent_date datetime NULL -
acknowledged_date datetime NULL -
content text NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_complaint
15 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference_number varchar(50) NOT NULL -
jurisdiction varchar(20) NULL popia
complainant_name varchar(255) NOT NULL -
complainant_email varchar(255) NULL -
complainant_phone varchar(50) NULL -
complaint_type varchar(100) NOT NULL -
description text NULL -
date_of_incident date NULL -
status varchar(58) NULL received received, investigating, resolved, escalated, closed
assigned_to int NULL -
resolution text NULL -
resolved_date date NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_compliance_rule
14 columns 119 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK jurisdiction_code varchar(30) NOT NULL -
FK category varchar(50) NOT NULL - dsar, breach, ropa, consent, retention
code varchar(50) NOT NULL -
name varchar(255) NOT NULL -
description text NULL -
check_type varchar(50) NOT NULL - required_field, value_check, date_check, custom
field_name varchar(100) NULL -
condition varchar(255) NULL -
error_message text NULL -
legal_reference varchar(100) NULL -
severity varchar(28) NULL error error, warning, info
is_active tinyint(1) NULL 1
sort_order int NULL 0
privacy_config
13 columns 6 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK jurisdiction varchar(50) NOT NULL popia
organization_name varchar(255) NULL -
registration_number varchar(100) NULL -
privacy_officer_id int unsigned NULL -
data_protection_email varchar(255) NULL -
dsar_response_days int NOT NULL 30
breach_notification_hours int NOT NULL 72
retention_default_years int NOT NULL 5
is_active tinyint(1) NOT NULL 1
settings json NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_consent
9 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK consent_type varchar(86) NOT NULL - processing, marketing, profiling, third_party, cookies, research, special_category
FK purpose_code varchar(50) NOT NULL -
is_required tinyint(1) NOT NULL 0
is_active tinyint(1) NOT NULL 1
valid_from date NULL -
valid_until date NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_consent_i18n
5 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL -
PK culture varchar(16) NOT NULL en
name varchar(255) NOT NULL -
description text NULL -
purpose_description text NULL -
privacy_consent_log
12 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK consent_id int unsigned NOT NULL -
FK user_id int NULL -
FK subject_identifier varchar(255) NULL - Email or other identifier if not user
action varchar(43) NOT NULL - granted, withdrawn, expired, renewed
consent_given tinyint(1) NOT NULL 0
consent_date datetime NOT NULL -
withdrawal_date datetime NULL -
ip_address varchar(45) NULL -
user_agent text NULL -
consent_proof text NULL - Evidence of consent
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_consent_record
16 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK data_subject_id varchar(255) NOT NULL -
subject_name varchar(255) NULL -
subject_email varchar(255) NULL -
purpose varchar(255) NOT NULL -
consent_given tinyint(1) NULL 0
consent_method varchar(50) NULL form
consent_date datetime NULL -
withdrawal_date datetime NULL -
source varchar(100) NULL -
jurisdiction varchar(20) NULL popia
ip_address varchar(45) NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
status varchar(50) NULL active
withdrawn_date date NULL -
privacy_data_inventory
13 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
name varchar(255) NOT NULL -
description text NULL -
FK data_type varchar(88) NOT NULL - personal, special_category, children, criminal, financial, health, biometric, genetic
storage_location varchar(255) NULL -
storage_format varchar(31) NOT NULL electronic electronic, paper, both
encryption tinyint(1) NOT NULL 0
access_controls text NULL -
retention_years int NULL -
disposal_method varchar(100) NULL -
is_active tinyint(1) NOT NULL 1
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_dsar
26 columns 6 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference_number varchar(50) NOT NULL -
FK jurisdiction varchar(30) NOT NULL popia
request_type varchar(89) NOT NULL - access, rectification, erasure, portability, restriction, objection, withdraw_consent
requestor_name varchar(255) NOT NULL -
requestor_email varchar(255) NULL -
requestor_phone varchar(50) NULL -
requestor_id_type varchar(50) NULL -
requestor_id_number varchar(100) NULL -
requestor_address text NULL -
is_verified tinyint(1) NOT NULL 0
verified_at datetime NULL -
verified_by int NULL -
FK status varchar(81) NOT NULL received received, verified, in_progress, pending_info, completed, rejected, withdrawn
priority varchar(32) NOT NULL normal low, normal, high, urgent
received_date date NOT NULL -
FK due_date date NOT NULL -
completed_date date NULL -
FK assigned_to int NULL -
outcome varchar(58) NULL - granted, partially_granted, refused, not_applicable
refusal_reason text NULL -
fee_required decimal(10,2) NULL -
fee_paid tinyint(1) NOT NULL 0
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_dsar_i18n
5 columns 3 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL -
PK culture varchar(16) NOT NULL en
description text NULL -
notes text NULL -
response_summary text NULL -
privacy_dsar_log
7 columns 4 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK dsar_id int unsigned NOT NULL -
action varchar(100) NOT NULL -
details text NULL -
user_id int NULL -
ip_address varchar(45) NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_dsar_request
14 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference varchar(50) NOT NULL -
request_type varchar(50) NOT NULL -
data_subject_name varchar(255) NOT NULL -
data_subject_email varchar(255) NULL -
data_subject_id_type varchar(50) NULL -
received_date date NOT NULL -
FK deadline_date date NOT NULL -
completed_date date NULL -
FK status varchar(50) NULL pending
notes text NULL -
assigned_to int NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_institution_config
13 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ repository_id int NULL - NULL = global
FK jurisdiction_code varchar(30) NOT NULL -
organization_name varchar(255) NULL -
registration_number varchar(100) NULL -
privacy_officer_id int unsigned NULL -
data_protection_email varchar(255) NULL -
dsar_response_days int NULL - Override jurisdiction default
breach_notification_hours int NULL - Override jurisdiction default
retention_default_years int NULL 5
settings json NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_jurisdiction
17 columns 6 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ code varchar(30) NOT NULL -
name varchar(50) NOT NULL -
full_name varchar(255) NOT NULL -
country varchar(100) NOT NULL -
region varchar(50) NULL Africa
regulator varchar(255) NULL -
regulator_url varchar(255) NULL -
dsar_days int NULL 30
breach_hours int NULL 72
effective_date date NULL -
related_laws json NULL -
icon varchar(10) NULL -
is_active tinyint(1) NULL 1
sort_order int NULL 99
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_jurisdiction_registry
21 columns 10 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ code varchar(30) NOT NULL -
name varchar(50) NOT NULL -
full_name varchar(255) NOT NULL -
country varchar(100) NOT NULL -
FK region varchar(50) NULL International
regulator varchar(255) NULL -
regulator_url varchar(500) NULL -
dsar_days int NOT NULL 30
breach_hours int NOT NULL 72
effective_date date NULL -
related_laws json NULL -
icon varchar(10) NULL -
default_currency varchar(3) NULL USD
FK is_installed tinyint(1) NOT NULL 0
installed_at datetime NULL -
FK is_active tinyint(1) NOT NULL 0
sort_order int NULL 99
config_data json NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_lawful_basis
10 columns 68 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK jurisdiction_code varchar(30) NOT NULL -
code varchar(50) NOT NULL -
name varchar(255) NOT NULL -
description text NULL -
legal_reference varchar(100) NULL -
requires_consent tinyint(1) NULL 0
requires_lia tinyint(1) NULL 0 Legitimate Interest Assessment
is_active tinyint(1) NULL 1
sort_order int NULL 0
privacy_notification
14 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK user_id int NOT NULL -
FK entity_type varchar(50) NOT NULL - ropa, dsar, breach, consent
entity_id int unsigned NOT NULL -
notification_type varchar(50) NOT NULL - submitted, approved, rejected, comment, reminder
subject varchar(255) NOT NULL -
message text NULL -
link varchar(500) NULL -
is_read tinyint(1) NULL 0
read_at datetime NULL -
email_sent tinyint(1) NULL 0
email_sent_at datetime NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_officer
12 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK user_id int NULL -
name varchar(255) NOT NULL -
email varchar(255) NOT NULL -
phone varchar(50) NULL -
title varchar(100) NULL -
FK jurisdiction varchar(30) NOT NULL all
registration_number varchar(100) NULL - POPIA Information Regulator registration
appointed_date date NULL -
is_active tinyint(1) NOT NULL 1
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_paia_request
23 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
UQ reference_number varchar(50) NOT NULL -
FK paia_section varchar(64) NOT NULL - section_18, section_22, section_23, section_50, section_77
requestor_name varchar(255) NOT NULL -
requestor_email varchar(255) NULL -
requestor_phone varchar(50) NULL -
requestor_id_number varchar(100) NULL -
requestor_address text NULL -
record_description text NULL -
access_form varchar(27) NOT NULL copy inspect, copy, both
FK status varchar(84) NOT NULL received received, processing, granted, partially_granted, refused, transferred, appealed
outcome_reason text NULL -
refusal_grounds varchar(100) NULL - PAIA grounds for refusal section
fee_deposit decimal(10,2) NULL -
fee_access decimal(10,2) NULL -
fee_paid tinyint(1) NOT NULL 0
received_date date NOT NULL -
due_date date NOT NULL -
completed_date date NULL -
assigned_to int NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_processing_activity
32 columns 2 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
name varchar(255) NOT NULL -
description text NULL -
jurisdiction varchar(20) NULL popia
purpose text NOT NULL -
lawful_basis varchar(100) NULL -
lawful_basis_code varchar(50) NULL -
data_categories text NULL -
data_subjects text NULL -
recipients text NULL -
third_countries json NULL -
transfers text NULL -
retention_period varchar(100) NULL -
security_measures text NULL -
dpia_required tinyint(1) NULL 0
dpia_completed tinyint(1) NULL 0
dpia_date date NULL -
status varchar(50) NULL active
owner varchar(255) NULL -
department varchar(255) NULL -
created_by int NULL -
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL -
next_review_date date NULL -
submitted_at datetime NULL -
submitted_by int NULL -
approved_at datetime NULL -
approved_by int NULL -
rejected_at datetime NULL -
rejected_by int NULL -
rejection_reason text NULL -
assigned_officer_id int NULL -
privacy_processing_activity_i18n
5 columns 0 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL -
PK culture varchar(16) NOT NULL en
name varchar(255) NOT NULL -
purpose text NULL -
description text NULL -
privacy_redaction_cache
11 columns 0 rows
Column Type Nullable Default Extra Comment
PK id bigint unsigned NOT NULL - auto_increment
FK object_id int NOT NULL -
digital_object_id int NULL -
original_path varchar(500) NOT NULL -
redacted_path varchar(500) NOT NULL -
file_type varchar(20) NOT NULL pdf pdf, image
regions_hash varchar(64) NOT NULL - SHA256 of applied region IDs
region_count int NOT NULL 0
file_size bigint unsigned NULL -
generated_at datetime NOT NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
FK expires_at datetime NULL -
privacy_request_type
10 columns 71 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK jurisdiction_code varchar(30) NOT NULL -
code varchar(50) NOT NULL -
name varchar(255) NOT NULL -
description text NULL -
legal_reference varchar(100) NULL -
response_days int NULL - Override jurisdiction default
fee_allowed tinyint(1) NULL 0
is_active tinyint(1) NULL 1
sort_order int NULL 0
privacy_retention_schedule
11 columns 100 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
record_type varchar(255) NOT NULL -
description text NULL -
retention_period varchar(100) NOT NULL -
retention_years int NULL -
legal_basis varchar(255) NULL -
disposal_action varchar(42) NOT NULL destroy destroy, archive, anonymize, review
FK jurisdiction varchar(30) NOT NULL all
is_active tinyint(1) NOT NULL 1
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
privacy_special_category
9 columns 83 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK jurisdiction_code varchar(30) NOT NULL -
code varchar(50) NOT NULL -
name varchar(255) NOT NULL -
description text NULL -
legal_reference varchar(100) NULL -
requires_explicit_consent tinyint(1) NULL 1
is_active tinyint(1) NULL 1
sort_order int NULL 0
privacy_template
10 columns 1 rows
Column Type Nullable Default Extra Comment
PK id int unsigned NOT NULL - auto_increment
FK category varchar(50) NOT NULL -
name varchar(255) NOT NULL -
content text NOT NULL -
file_path varchar(500) NULL -
file_name varchar(255) NULL -
file_size int NULL -
mime_type varchar(100) NULL -
is_active tinyint(1) NULL 1
created_at datetime NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
privacy_visual_redaction
18 columns 7 rows
Column Type Nullable Default Extra Comment
PK id bigint unsigned NOT NULL - auto_increment
FK object_id int NOT NULL - information_object.id
FK digital_object_id int NULL - digital_object.id if specific
page_number int NOT NULL 1 Page number (1-indexed)
region_type varchar(36) NOT NULL rectangle rectangle, polygon, freehand
coordinates json NOT NULL - Normalized 0-1 coords: {x, y, width, height}
normalized tinyint(1) NOT NULL 1 Whether coords are normalized 0-1
FK source varchar(43) NOT NULL manual manual, auto_ner, auto_pii, imported
FK linked_entity_id bigint unsigned NULL - Links to ahg_ner_entity.id if from NER
label varchar(255) NULL - Optional label for the region
color varchar(7) NOT NULL #000000 Redaction color (hex)
FK status varchar(43) NOT NULL pending pending, approved, applied, rejected
created_by int NULL - user.id who created
reviewed_by int NULL - user.id who reviewed
reviewed_at datetime NULL -
applied_at datetime NULL - When redaction was applied to output
created_at datetime NOT NULL CURRENT_TIMESTAMP DEFAULT_GENERATED
updated_at datetime NOT NULL CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP
Notes

Log in to add notes.

Legend
PK Primary Key FK Foreign Key / Index UQ Unique Constraint
Table structures are read live from the database. Row counts reflect current data.