Skip to the content.

Data model v0.3

This document describes the conceptual data model for music-production-data-lab.

Version 1 uses CSV files only. Later versions can transform these CSV files into a relational SQLite database.

Core idea

The project models a music production setup as a set of related entities:

equipment
-> music references
-> soundchains
-> soundchain equipment links
-> boards and workflows
-> analyses and dashboards

Current CSV entities

Version 1.2 uses four public-safe CSV files:

data/public/equipment_public.csv
data/public/music_references_public.csv
data/public/soundchains_public.csv
data/public/soundchain_equipment_public.csv

These files are sample datasets. They are not the full private inventory.

Entity: equipment

equipment_public.csv stores public-safe equipment items.

Examples:

Primary key:

equipment_id

SQLite preparation:

equipment_id TEXT PRIMARY KEY
category TEXT NOT NULL
subcategory TEXT
brand TEXT
model TEXT
public_name TEXT NOT NULL
status_public TEXT
is_hardware INTEGER
is_software INTEGER

Entity: music_references

music_references_public.csv stores public-safe reference artists, bands or sound concepts.

These entries connect learning goals, sound design ideas and workflow decisions.

Primary key:

reference_id

SQLite preparation:

reference_id TEXT PRIMARY KEY
artist_or_band TEXT NOT NULL
sound_axis TEXT NOT NULL
importance_public TEXT
reference_role TEXT

Entity: soundchains

soundchains_public.csv stores public-safe workflow or signal-chain concepts.

A soundchain is not just a list of devices. It describes a target sound or workflow.

Primary key:

soundchain_id

SQLite preparation:

soundchain_id TEXT PRIMARY KEY
chain_name TEXT NOT NULL
target_sound TEXT
sound_axis TEXT
workflow_type TEXT
primary_reference_id TEXT
output_context TEXT

Relationship: soundchain_equipment

soundchain_equipment_public.csv connects soundchains and equipment items.

This is the first actual relationship table in the project.

One soundchain can contain multiple equipment items.

One equipment item can appear in multiple soundchains.

Primary key candidate:

soundchain_id + equipment_id + position_in_chain

SQLite preparation:

soundchain_id TEXT NOT NULL
equipment_id TEXT NOT NULL
position_in_chain INTEGER NOT NULL
role_in_chain TEXT
required_or_optional TEXT

Future foreign keys:

soundchain_id -> soundchains.soundchain_id
equipment_id -> equipment.equipment_id

Future relational model

Later versions should split the project into normalized relational tables.

Possible future tables:

equipment
equipment_categories
pedals
instruments
amps_cabs
recording_hardware
software_tools
midi_controllers
music_references
sound_axes
soundchains
soundchain_items
boards
board_items
data_quality_checks

Power BI preparation

The current CSV structure is designed to support later Power BI modeling.

Potential relationships:

soundchains_public[soundchain_id]
-> soundchain_equipment_public[soundchain_id]

equipment_public[equipment_id]
-> soundchain_equipment_public[equipment_id]

music_references_public[reference_id]
-> soundchains_public[primary_reference_id]

This makes it possible to analyze:

Version 1.2 design decision

Version 1.2 still avoids building the database too early.

The current goal is to make the data structure realistic enough for later SQLite and Power BI work:

CSV structure
-> stable IDs
-> relationship table
-> public/private boundaries
-> data-quality fields
-> later database schema