Open to thoughtful data problems

Kitt Parker SQL Developer

I turn complicated data into structures people can trust, queries that move quickly, and answers that are easy to understand.

01 SELECT clarity, consistency, speed FROM data; Query complete
5
modeling patterns
3
performance levers
1
goal: reliable answers
Core toolkit

01 / Data modeling

Relationships,
made legible.

A good schema says what belongs together, what repeats, and where the truth lives.

1 : 1

One-to-one

One row pairs with exactly one other row. Ideal for optional or sensitive details.

user user_id
11
profile user_id
profile.user_id → user.user_id
1 : N

One-to-many

One parent owns many children; each child points back to one parent.

customer customer_id
1
orders customer_id
orders.customer_id → customer.customer_id
N : N

Many-to-many

Both sides can repeat. A junction table turns the relationship into two clean one-to-many links.

authorauthor_id
author_bookauthor_idbook_id
bookbook_id
PRIMARY KEY (author_id, book_id)
POLY N : N

Polymorphic many-to-many

One shared concept connects to multiple entity types through an ID and a type discriminator.

tagtag_id
taggabletag_idtype + id
postpost_id
videovideo_id
(taggable_type, taggable_id)
ANALYTICS

Star schema

A central fact table stores measurable events. Small dimension tables add the who, what, and when for fast, understandable reporting.

SUM(fact_sales.amount) BY dimensions
DIMdate
DIMproduct
FACTsalesamountquantity
DIMcustomer
DIMstore

02 / Performance

Make less work
feel like more.

Speed comes from reducing the data read, the operations performed, and the work repeated.

01

Indexes

Give frequent lookups a shorter path to the rows they need.

Target selective filters, joins, and sorts. Cover important queries, then remove redundant indexes that slow writes.

INDEX (customer_id, ordered_at)
02

Partitions

Split very large tables into manageable pieces with a useful boundary.

Date-based partitions can reduce scanned data, simplify archival, and make maintenance predictable.

PARTITION BY RANGE (sale_date)
03

Query design

Make the efficient route possible before adding more hardware.

Read execution plans, keep predicates searchable, return only needed columns, and avoid repeated work.

EXPLAIN / actual plan

03 / Profile

Clear logic.
Useful results.

I care about the full path from raw records to a trusted answer: sound structure, explicit business rules, readable SQL, and reporting that respects the person using it.

View my Gitea
Model
Make relationships explicit.
Measure
Use plans and evidence.
Explain
Leave the next person clarity.