Add initial description for database

This commit is contained in:
Ngô Ngọc Đức Huy 2021-03-04 22:11:49 +07:00
parent 87154e8688
commit 0f840c3402
Signed by: huyngo
GPG Key ID: 904AF1C7CDF695C3
2 changed files with 46 additions and 0 deletions

View File

@ -11,6 +11,7 @@ This document documents the objectives as well as analysis and design for the pr
- [Background](background.md)
- [Objective](objective.md)
- [Use cases](uc.md)
- [Database](db.md)
-----

45
db.md Normal file
View File

@ -0,0 +1,45 @@
# Database
To persist the information as specified in [Use Cases][uc.md],
we need to design an appropriate database accordingly.
This section discusses the structure for each information.
Due to the target for Android development, SQLite is chosen as the platform's database.
SQLite is a relational database that has a programming interface in virtually
any modern programming language.
On top of that, it is natively supported on both Android and iOS.
It is also suitable for a custom [application file format][app-format]. In fact,
Anki used SQLite for its flashcard deck file.
SQLite supports databases upto [281 terabytes][size], which is more than enough
for the use case.
[app-format]: https://sqlite.org/appfileformat.html
[size]: https://sqlite.org/whentouse.html
## Phonology and Phonetics
### Set of consonants, vowels, tones
The database for this would likely be mostly fixed in number of rows.
- IPA (`TEXT`): The International Phonetic Alphabet representation of the sound.
- X-SAMPA (`TEXT`): The X-SAMPA equivalent, which allows user to type on a non-IPA keyboard
- is_used (`BOOLEAN`): Whether the sound is used in the language
## Grammar
### Inflection
### Syntax
## Morphology
### Affixes
### Part of Speech
## Writing system
### Scripts
## Vocabulary
## Others
Not all data can be represented as structured data.
For example:
- Image
- Audio
These kinds of data are stored as file blobs in a dedicated SQLite table.