Your Cart (0)

Total

Checkout

, Option
← Back Published on

House of Mirrors — A Narrative SQL Data Model

Overview

House of Mirrors is a narrative SQL project designed to model the psychological and emotional dynamics of a dream world controlled by a manipulative figure known as the Dream Architect. Inspired by themes of triangulation, narcissistic abuse, and fragmented memory, the schema uses relational tables to track character interactions, story events, shifting loyalties, and hidden truths.

Purpose

To analyze and investigate the psychological effects of narcissistic abuse, particularly through triangulation, using a fictional dataset and beginner-to-intermediate SQL queries. This project combines narrative design with data analysis to explore emotional patterns and relational dynamics through structured query language.

The So What?

The methods used in narcissistic abuse can often mirror patterns observed when investigating data manipulation, omission, misdirection, and cycles of repetition. Just as victims of narcissistic abuse are led to question their reality, flawed data can lead analysts to question the truth. Recognizing these parallels allows us to interrogate not just the numbers, but the narratives they support.

Data Used

  • Original dream interpretation
  • The Story Oracle: A Creative Writing Inspiration Deck by Katherine Furman
  • ChatGPT-assisted content generation

Process

1. Created the SQL database based on a fictional narrative from a dream interpretation

2. Cleaned and structured data

  • Used ALTER TABLE to update, add, or remove unnecessary columns
  • Standardized key values across tables for relational accuracy

3. Wrote SQL queries for insight generation (beginner to intermediate level)

Snippet of Logic 

-- 1. Characters table

CREATE TABLE characters (

character_id INTEGER PRIMARY KEY,

name TEXT,

personality TEXT,

goal TEXT,

secret TEXT

);

-- 2. Character Events table

CREATE TABLE character_events (

character_event_id INTEGER PRIMARY KEY,

character_id INTEGER,

event_id INTEGER,

description TEXT,

FOREIGN KEY (character_id) REFERENCES characters(character_id),

FOREIGN KEY (event_id) REFERENCES story_events(event_id)

);

-- 3. Story Events table

CREATE TABLE story_events (

event_id INTEGER PRIMARY KEY,

description TEXT

);

-- 4. Portals table

CREATE TABLE portals (

portal_id INTEGER PRIMARY KEY,

portal_name TEXT,

is_glitched BOOLEAN,

method_of_access TEXT,

cost_description TEXT,

loops_back_to_architect BOOLEAN,

);

-- 5. Locations table

CREATE TABLE locations (

location_id INTEGER PRIMARY KEY,

name TEXT NOT NULL,

type TEXT,

tone TEXT,

description TEXT,

is_dream_realm BOOLEAN,

connected_portal_id INTEGER,

FOREIGN KEY (connected_portal_id) REFERENCES portals(portal_id)

);

The full project can be found on my github.