Skip to main content

Data Structure

This system uses DynamoDB as a data store.

Table Definition

The PK and SK is just set as "PK" as "SK".

Global Secondary Index (GSI)

Name: UserEmail

  • PK: EMail

Projection: Key Only

Local Secondary Index (LSI)

Name: TravelDate

  • PK: Travel ID
  • StartDate: start date of the travel

Projection: All

User

The user's definition is the following.

  • PK: User ID
  • SK: "USER"

User Attributes

KeyValueType
PKUser idString
SK"USER"1String
NameusernameString
EMaile-mail addressString
Partnersa list of User IDsList

Travel

Travel

KeyValueType
PKTravel idString
SK"Travel"1String
Namename of this travelString
StartDateStart date (ISO8601)String
EndDateend date (ISO8601). Can be nullString
Travelersa list of User IDsList
InvolvedUsersa list of User IDsList

Travel - User

To bind the user and the travel.

KeyValueType
PKUser IDString
SKTravels#(Travel ID2)String

ToDo

The ID is an auto-increment number. Thus, there are ID manage tables.

  • PK: Travel ID

  • SK: Composite ID

TODO List Group

KeyValueType
PKTravel IDString
SKToDoListGroup#(todo list ID2)String
TodoListGroupIdThe todo group IDNumber
Nametodo list nameString
TZtimezone offsetNumber

ToDo (Each)

KeyValueType
PKTravel IDString
SKToDoList#(todo list ID2)#ToDo#(todo ID2)String
TodoIdtodo list group IDNumber
SummarysummaryString
Descriptiondescription. Can be nullString
DueDatecan be null. UTC. TimestampNumber
Donedone or notboolean
ToDo ID
ToDo List Group ID Counter
KeyValueType
PKTravel IDString
SK"ToDoListCounter"String
Countlatest IDNumber
ToDo ID Counter
KeyValueType
PKTravel IDString
SKToDoCounter#(todo list id)String
Countlatest IDNumber

Footnotes

  1. Just a Placeholder 2

  2. Variable. Actual ID 2 3 4