Closed beteivap closed 2 years ago
Latest updates to our DB design captured below.
Teachers: records the Teacher’s account details
Projects: records the details of the projects Teachers create
IVInfo: records the details of the independent variables for a Project
DVInfo: records the details of the dependent variables for a Project
AcceptedIV: records the allowed values for independent variables
Observations: records the details of the observations made by students using the field app
IVVals: records the independent variables values when an observation is made
DVVals: records the dependent variables values when an observation is made
DB design finalized and captured in Team's Google Drive.
Projects: records the details of the projects Teachers create
Teachers: records the Teacher’s account details
ClassCodes: records the class codes created for Teachers
Observations: records the details of the observations made by students using the field app
(Brian) Adding some ideas in blue. When thinking about how observations will be entered on the mobile app, and displayed on the admin site would it make sense to separate out independent and dependent variables?
On the admin page, a teacher will need to create a project. I see them selecting the type of the independent variable (number, string, etc.) and the type of the dependent variable (number, string, etc.)
This might be easier to think about with concrete examples Experiment 1: each student will record the hair color of everyone in their family. The independent variable will be hair color (string) and the dependent variable will be the number of people with that hair color(num). The admin page will display the individual observations and a consolidated table of the data for the whole class.
Experiment 2: each student will record their mood at predetermined times throughout the day. The independent variable will be time (date) and the dependent variable will be mood (string).
The benefit of dividing observations into independent and dependent variables is it will make displaying statistics/graphs easier on the admin site, and most experiments will have an independent and dependent variable so I think it more closely models what a citizen science application looks like.
The disadvantage of dividing observations into independent and dependent variables is that there are a lot of different combinations for types of IV and DV. We can mitigate this by coming up with two sample experiments when we demo our app, and ensure the API, Field App, and Admin app can handle these two sample experiments. Another disadvantage is that each row in the database will have unused fields. For example in experiment 1 listed above, the ind_var_num and dep_var_string columns will be null.
I think creating a table for independent variables and dependent variables provides some flexibility. Let’s say down the road we wanted to start accepting lat/long coordinates and photos, where students would take pictures of all birds they see along with coordinates, the coordinates could be the IV and the photo the DV. I don’t like how the number of columns in the IV and DV would keep growing as we add use cases if this were a real product, but I think it will provide enough flexibility for the capstone. Maybe a solution would be to create a tables for each independent variable type - I’m not sure if this overhead will be worth it for the scope of our project though.
Observations
IndependentVariables
IndependentVariableValues A table for the allowed values of the independent variable
DependentVariables