brian-rud / osu-cs467-citizen-science

A repository for OSU's Computer Science Capstone Course
MIT License
0 stars 1 forks source link

DB Design #3

Closed beteivap closed 2 years ago

beteivap commented 2 years ago

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

beteivap commented 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

beteivap commented 2 years ago

DB design finalized and captured in Team's Google Drive.