Repository navigation
Expand file tree
/
Copy pathinitialObservations.txt
More file actions
42 lines (34 loc) · 2.11 KB
/
Copy pathinitialObservations.txt
File metadata and controls
42 lines (34 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From the intial observation of the work flow, I was able to think of the following entities and
attributes. As next step I will be refining more attributes I might need. Also I would like to
perform analysis on the relationships between the entites and their nature whether 1:1, 1:m or m:n
and any further relationship attributes we might need.
1. User (name , profile_photo, password)
2. Projects(name, description, location, scheduled, recent)
3. Tasks (name, description, startTime, finishTime)
4. Machine/Resource (name, id)
5. Company (name, id)
6. Administrator (Name, photo, id)
# The work flow can be seen as a sequence of following steps.
1. User logins into the app
2. User selects a company.
3. User gets a list of project which are scheduled and selects one project.
4. User gets a list of resources and selects a resource.
5. User get a list of tasks belonging to the project and selects one task.
6. User clicks on check-in and records the start time.
7. User clicks on check-out and records the end time.
Steps 2-7 can be repeats if user selects a different company which might have its own
set of project, tasks and resources.
There seems to be nice tree like relationships between these entities, basically (1:m)
user
/ \
company1 company2
/ | \ / | \
project1 project2 project3 project4 project5 project6
/ | \ / | \ / | \ / | \ / | \ / | \
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18
Here I assume that that a project belongs to single company and a task belongs to one project only.
From initial impression it seems we should shard the database at the level of company. So that we
can scale accordingly the rest of the database and queries accordingly. If some company has many projects
or users we can allocate more resources/computation for that shard.
Also from the steps mentioned we should perform a analysis of read/write load for the transaction to get
better clarity.