SQL
CREATE TABLE bookings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
trainer_id INTEGER NOT NULL REFERENCES trainers(id) ON DELETE CASCADE,
student_id INTEGER NOT NULL REFERENCES students(id) ON DELETE CASCADE,
service_key TEXT NOT NULL,
-- 'einzel50',
'platz',
'zehnerkarte',
etc.
starts_at TEXT NOT NULL,
-- ISO-8601 datetime
duration_min INTEGER NOT NULL,
card_id INTEGER REFERENCES cards(id),
-- NULL = ohne Karte abgerechnet
invoice_id INTEGER REFERENCES invoices(id),
video_analysis TEXT,
-- JSON: { status,
swingCount,
requestedAt,
... }
notes TEXT,
-- Trainer-Notiz aus Nachbereitung
status TEXT NOT NULL DEFAULT 'confirmed',
-- 'confirmed' | 'cancelled' | 'completed'
created_at TEXT NOT NULL DEFAULT (datetime('now')),
protocol TEXT,
protocol_approved_at TEXT
)
Columns
| Column | Data type | Allow null | Primary key | Actions |
|---|---|---|---|---|
id |
INTEGER |
✓ | ✓ | Rename | Drop |
trainer_id |
INTEGER |
Rename | Drop | ||
student_id |
INTEGER |
Rename | Drop | ||
service_key |
TEXT |
Rename | Drop | ||
starts_at |
TEXT |
Rename | Drop | ||
duration_min |
INTEGER |
Rename | Drop | ||
card_id |
INTEGER |
✓ | Rename | Drop | |
invoice_id |
INTEGER |
✓ | Rename | Drop | |
video_analysis |
TEXT |
✓ | Rename | Drop | |
notes |
TEXT |
✓ | Rename | Drop | |
status |
TEXT |
Rename | Drop | ||
created_at |
TEXT |
Rename | Drop | ||
protocol |
TEXT |
✓ | Rename | Drop | |
protocol_approved_at |
TEXT |
✓ | Rename | Drop |
Foreign Keys
| Column | Destination |
|---|---|
invoice_id |
invoices.id |
card_id |
cards.id |
student_id |
students.id |
trainer_id |
trainers.id |
Indexes
| Name | Columns | Unique | SQL | Drop? |
|---|---|---|---|---|
| idx_bookings_student |
student_id
|
SQL | Drop | |
| idx_bookings_trainer_date |
|
SQL | Drop |