Database : best way to model a spreadsheet

database-design, spreadsheet

Solution

You may want to study EAV (Entity-attribute-value) data models, as they are trying to solve a similar problem.

Entity-Attribute-Value - Wikipedia

Problem

I am trying to figure out the best way to model a spreadsheet (from the database point of view), taking into account : - The spreadsheet can contain a variable number of rows. - The spreadsheet can contain a variable number of columns. - Each column can contain one single value, but its type is unknown (integer, date, string). - It has to be easy (and performant) to generate a CSV file containing the data. I am thinking about something like : ``` class Cell(models.Model): column = models.ForeignKey(Column) row_number = models.IntegerField() value = models.CharField(max_length=100) class Column(models.Model): spreadsheet = models.ForeignKey(Spreadsheet) name = models.CharField(max_length=100) type = models.CharField(max_length=100) class Spreadsheet(models.Model): name = models.CharField(max_length=100) creation_date = models.DateField() ``` Can you think about a better way to model a spreadsheet ? My approach allows to store the data as a String. I am worried about it being too slow to generate the CSV file.

Original source