Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
# Database Model - English Vocabulary Learning App
## Conceptueel Model (ERD)
### Entiteiten en Attributen
#### 1. WORD (Woord)
**Unique Identifier:** word_id (PK)
- word_id: INT (Primary Key, Auto Increment)
- english_word: VARCHAR(100) - Het Engelse woord
- dutch_translation: VARCHAR(100) - Nederlandse vertaling
- category_id: INT (Foreign Key naar CATEGORY)
- difficulty_level: ENUM('beginner', 'intermediate', 'advanced')
- created_at: TIMESTAMP
#### 2. CATEGORY (Categorie)
**Unique Identifier:** category_id (PK)
- category_id: INT (Primary Key, Auto Increment)
- category_name: VARCHAR(50) - Naam van categorie (bijv. "Animals", "Food", "Verbs")
- description: TEXT
#### 3. USER_PROGRESS (Gebruikersvoortgang)
**Unique Identifier:** progress_id (PK)
- progress_id: INT (Primary Key, Auto Increment)
- session_id: VARCHAR(100) - Sessie identificatie (voor niet-ingelogde gebruikers)
- word_id: INT (Foreign Key naar WORD)
- attempts: INT - Aantal pogingen
- correct: INT - Aantal correcte antwoorden
- last_attempt: TIMESTAMP
- is_mastered: BOOLEAN - Of woord beheerst is (bijv. 3x correct)
#### 4. PRACTICE_SESSION (Oefensessie)
**Unique Identifier:** session_log_id (PK)
- session_log_id: INT (Primary Key, Auto Increment)
- session_id: VARCHAR(100)
- start_time: TIMESTAMP
- end_time: TIMESTAMP
- total_words: INT
- correct_answers: INT
- score_percentage: DECIMAL(5,2)
## Relaties
1. **CATEGORY β WORD** (1:N)
- ΓΓ©n categorie kan meerdere woorden bevatten
- Elk woord behoort tot één categorie
2. **WORD β USER_PROGRESS** (1:N)
- ΓΓ©n woord kan meerdere voortgangsregistraties hebben
- Elke voortgangsregistratie is voor één woord
3. **SESSION β USER_PROGRESS** (1:N)
- ΓΓ©n sessie kan meerdere woordpogingen hebben
- Elke poging behoort tot één sessie
4. **SESSION β PRACTICE_SESSION** (1:1)
- Elke sessie heeft één samenvattend record
## ERD Diagram (Tekstuele representatie)
```
βββββββββββββββ ββββββββββββββββ
β CATEGORY β β WORD β
βββββββββββββββ€ ββββββββββββββββ€
β category_id β1ββββββN β word_id β
β name β β english_word β
β description β β dutch_trans β
βββββββββββββββ β category_id β
β difficulty β
β created_at β
ββββββββββββββββ
β
β1
β
βN
ββββββββββββββββ
βUSER_PROGRESS β
ββββββββββββββββ€
β progress_id β
β session_id β
β word_id β
β attempts β
β correct β
β last_attempt β
β is_mastered β
ββββββββββββββββ
β
βN
β
β1
βββββββββββββββββββ
βPRACTICE_SESSION β
βββββββββββββββββββ€
β session_log_id β
β session_id β
β start_time β
β end_time β
β total_words β
β correct_answers β
β score_percentageβ
βββββββββββββββββββ
```
## Database Begrippen
### Entiteit
Een entiteit is een object of ding in de echte wereld dat gegevens heeft die we willen opslaan.
Voorbeelden: WORD, CATEGORY, USER_PROGRESS
### Attribuut
Een attribuut is een eigenschap of karakteristiek van een entiteit.
Voorbeelden: english_word, dutch_translation, difficulty_level
### Instantie
Een instantie is een specifieke voorkomst van een entiteit (een rij in de tabel).
Voorbeeld: Het woord "cat" met vertaling "kat" is één instantie van de WORD entiteit
### Unique Identifier (Primary Key)
Een attribuut of combinatie van attributen die elke instantie uniek identificeert.
Voorbeelden: word_id, category_id, progress_id
## Fysiek Model Overwegingen
- **Indexen:** Foreign keys en veel-gezochte velden (english_word, session_id)
- **Data Types:** Geoptimaliseerd voor opslag en snelheid
- **Constraints:** NOT NULL, UNIQUE waar nodig
- **Normalisatie:** 3NF (Third Normal Form) om redundantie te minimaliseren