Sql-server – Many-To-Many relationship between Students and heights (Is it necessary?)

database-designsql server

So I'm trying to design a database for my local school doctor. (This is somewhat analogous to my real problem)

Currently, a student is scheduled for a health check every half year, where the students height is measured.

As it can be seen, one student therefore may have multiple heights, which is signified by a join table, i.e. Student_Height.

To me, this seems like the best way to associate multiple heights to One student. The only downsite is though, that since we may have 1000 students, it is pretty certain that the same height will be measured multiple times – Is this bad practice, and is it overkill to have an extra table for this?

As I see it, this issue could alternatively be solved in two ways:

  • Pre-populate the height table with heights (i.e. 1, 1.1, 1.2, 1.3, … 2.9,3.0 … 180.0 cm).
  • Put height as a column in the student table, and let it be a Varchar(Max) – Meaning, it could be a comma-separated string of heights. (I don't like this – since it limits/complicates my PowerBi possibilities)

Please let me hear your thoughts on this. Are my thoughts above justified?

Example

Best Answer

Height is not an entity. A student can't have multiple heights, unless your measurements are sometimes incorrect. Unless there's been some time between measurements. Measurements could be an entity, identified by time_taken and student_id, attributes height, weight, and things perhaps too private