Как хранить табличные данные
Мне нужна ваша помощь для функционального вопроса о хранении данных.
Я нахожусь в проекте, где пользователь может сохранить своего рода таблицу Excel на сервере. Размер таблиц не фиксирован.
Какое лучшее решение для хранения таблиц? Как массив хранится в виде текста в моей базе данных MySql? Используя MongoDB или другое решение NoSQL?
Для информации, функция поиска не будет реализована в таблицах.
Спасибо большое!
Изменить: я добавляю два примера таблицы данных:
Пример 1: продажи за квартал на одного продавца
Sven Kenneth
2013.Q1 1200 4500
2013.Q2 1350 900
2013.Q3 2487 784
2013.Q4 4570 4512
2014.Q1 4785 3451
Пример 2: вес пары и их детей по месяцам
Him Her Children
Jan 70.5 52.1 45.1
Feb 71.8 52.7 46.1
Mar 70.8 52.7 46.0
Apr 70.1 51.9 46.1
Количество строк и столбцов в этих двух примерах не одинаково и может изменяться во времени: в следующем квартале компания может нанять нового продавца.
Как хранить эти данные? Обратите внимание, что пользователь никогда не будет искать по этим таблицам.
Я надеюсь, что это понятнее.
2 ответа
Чтобы решить
Количество строк и столбцов в этих двух примерах не одинаково и может изменяться во времени: в следующем квартале компания может нанять нового продавца.
в старые времена, когда мы использовали реляционные таблицы, мы бы разбили его на две таблицы
period | salesman | sales
2013.Q1 Sven 1200
2013.Q2 Sven 1350
2013.Q3 Sven 2487
2013.Q4 Sven 4570
2014.Q1 Sven 4785
2013.Q1 Kenneth 4500
2013.Q2 Kenneth 900
2013.Q3 Kenneth 784
2013.Q4 Kenneth 4512
2014.Q1 Kenneth 3451
salesman | id
Sven L Sven
Kenneth W Kenneth
это не нормализуется до 5-й нормальной формы, но это будет делать.
вы можете использовать Cassandra или Mongo, Cassandra вы можете использовать семейства суперколонок, которые позволяют создавать столбцы на лету, а MongoDb - это не жесткая структура, вы сохраняете только объекты json, вы можете сохранять только четверти, например:
{
"quarter" : "2013.Q1",
"salespeople" : [
{"salesman": "Sven", "sales" : 1200},
{"salesman": "Kenneth", "sales" : 4500}
]
}
и в следующем году
{
"quarter" : "2014.Q1",
"salespeople" : [
{"salesman": "Sven", "sales" : 1200},
{"salesman": "Kenneth", "sales" : 4500},
{"salesman": "Somebodyelse", "sales" : 100000}
]
}
Вы можете сделать оба пути, но реляционный путь намного проще
Я не нашел четкого ответа, но я объясню, что я буду делать.
Я просто сохраню результат в виде двумерного массива.