Initial commit: OpenClaw workspace with habit bot and flashcard app
This commit is contained in:
85
flashcard_schema.sql
Normal file
85
flashcard_schema.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
-- Flashcard System Schema for Oracle ADB
|
||||
-- Run this in SQL Developer or SQLcl
|
||||
|
||||
-- Users table (for future SSO)
|
||||
CREATE TABLE flashcard_users (
|
||||
user_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
username VARCHAR2(100) NOT NULL UNIQUE,
|
||||
email VARCHAR2(255),
|
||||
created_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
is_active CHAR(1) DEFAULT 'Y',
|
||||
CONSTRAINT flashcard_users_pk PRIMARY KEY (user_id)
|
||||
);
|
||||
|
||||
-- Flashcard tables
|
||||
CREATE TABLE flashcard_decks (
|
||||
deck_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
user_id NUMBER NOT NULL,
|
||||
name VARCHAR2(200) NOT NULL,
|
||||
description VARCHAR2(1000),
|
||||
language_pair VARCHAR2(20) DEFAULT 'EN-KO',
|
||||
created_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
is_active CHAR(1) DEFAULT 'Y',
|
||||
CONSTRAINT flashcard_decks_pk PRIMARY KEY (deck_id),
|
||||
CONSTRAINT flashcard_decks_fk FOREIGN KEY (user_id) REFERENCES flashcard_users(user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE flashcard_cards (
|
||||
card_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
deck_id NUMBER NOT NULL,
|
||||
question_en VARCHAR2(2000) NOT NULL,
|
||||
answer_en VARCHAR2(2000),
|
||||
question_ko VARCHAR2(2000) NOT NULL,
|
||||
answer_ko VARCHAR2(2000),
|
||||
example_sentence CLOB,
|
||||
notes CLOB,
|
||||
difficulty_level NUMBER DEFAULT 1 CHECK (difficulty_level BETWEEN 1 AND 5),
|
||||
times_reviewed NUMBER DEFAULT 0,
|
||||
times_correct NUMBER DEFAULT 0,
|
||||
last_reviewed_at TIMESTAMP,
|
||||
next_review_at TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
is_active CHAR(1) DEFAULT 'Y',
|
||||
CONSTRAINT flashcard_cards_fk FOREIGN KEY (deck_id) REFERENCES flashcard_decks(deck_id)
|
||||
);
|
||||
|
||||
-- Study sessions tracking
|
||||
CREATE TABLE flashcard_sessions (
|
||||
session_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
user_id NUMBER NOT NULL,
|
||||
deck_id NUMBER NOT NULL,
|
||||
started_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
ended_at TIMESTAMP,
|
||||
cards_reviewed NUMBER DEFAULT 0,
|
||||
cards_correct NUMBER DEFAULT 0,
|
||||
cards_incorrect NUMBER DEFAULT 0,
|
||||
CONSTRAINT flashcard_sessions_fk1 FOREIGN KEY (user_id) REFERENCES flashcard_users(user_id),
|
||||
CONSTRAINT flashcard_sessions_fk2 FOREIGN KEY (deck_id) REFERENCES flashcard_decks(deck_id)
|
||||
);
|
||||
|
||||
-- Study session card results
|
||||
CREATE TABLE flashcard_session_results (
|
||||
result_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
session_id NUMBER NOT NULL,
|
||||
card_id NUMBER NOT NULL,
|
||||
was_correct CHAR(1) NOT NULL,
|
||||
response_time_ms NUMBER,
|
||||
attempted_at TIMESTAMP DEFAULT SYSTIMESTAMP,
|
||||
CONSTRAINT flashcard_results_fk1 FOREIGN KEY (session_id) REFERENCES flashcard_sessions(session_id),
|
||||
CONSTRAINT flashcard_results_fk2 FOREIGN KEY (card_id) REFERENCES flashcard_cards(card_id)
|
||||
);
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX flashcard_cards_idx1 ON flashcard_cards(deck_id, is_active);
|
||||
CREATE INDEX flashcard_cards_idx2 ON flashcard_cards(next_review_at);
|
||||
CREATE INDEX flashcard_decks_idx1 ON flashcard_decks(user_id, is_active);
|
||||
|
||||
-- Comments for documentation
|
||||
COMMENT ON TABLE flashcard_users IS 'User accounts (for future SSO integration)';
|
||||
COMMENT ON TABLE flashcard_decks IS 'Flashcard decks organized by user';
|
||||
COMMENT ON TABLE flashcard_cards IS 'Individual flashcards with EN/KO translations';
|
||||
COMMENT ON TABLE flashcard_sessions IS 'Study session history';
|
||||
COMMENT ON TABLE flashcard_session_results IS 'Individual card results during study sessions';
|
||||
Reference in New Issue
Block a user