В настоящее время я создаю веб-приложение на Google App Engine в Python для сбора данных о скачках формы. Основная структура данных - это курс, в котором много совещаний имеет много гонок, у многих лошадей есть один жокей и один тренер. Пока у меня есть следующие модели (сокращенное количество полей для краткости).Моделирование данных с помощью Google App Engine Datastore
class Course(db.Model):
course_number = db.IntegerProperty() # course id (third party)
course_description = db.StringProperty() # course name
class Meeting(db.Model):
course = db.ReferenceProperty(Course) # reference to course
meeting_number = db.IntegerProperty() # lifetime meeting number for course
meeting_date = db.DateProperty() # meeting date
class Race(db.Model):
meeting = db.ReferenceProperty(Meeting) # reference to meeting
race_number = db.IntegerProperty() # eg 1 for 1st race of meeting
race_name = db.StringProperty() # race name
time_of_race = db.TimeProperty() # race time
У меня возникли проблемы с разработкой, как хранить данные о лошадях, тренерах, жокеях в хранилище данных.
Мое приложение будет собирать данные за последние 2 года, для этого я буду сохранять соответствующую информацию о результатах для лошади, тренера, жокея. Информация о конкретном результате лошадей одинакова для тренера и жокея в тот момент времени. Однако со временем у лошади могут быть разные тренеры и разные жокеи.
Моя основная боль в мозге приходит, когда я понимаю, что в анализе мне может понадобиться посмотреть результат за последние 10 гонок для лошадей, жокеев, тренеров. Результаты, которые не могут быть сохранены либо потому, что результаты произошли за пределами гонок Великобритании (данные по-прежнему доступны), либо произошли до даты начала полного гоночного хранения.
Может ли кто-нибудь пролить свет на то, как оптимизировать хранение результатов лошадей, жокеев, тренеров, чтобы я мог разместить для этого?
Источник данных: http://form.horseracing.betfair.com/timeform Все необходимые данные могут быть легко доступны через запросы JSON.
Как вы хотите использовать данные? Будет ли он каким-то образом представлен пользователям? Собираетесь ли вы запустить какую-то статистику по данным? При моделировании данных в App Engine обычно следует начинать с того, как будут использоваться данные. Кроме того, не бойтесь денормализовать данные. –
@Robert Kluin: Я буду использовать его исключительно для запуска статистики против для личного использования на данный момент. Я читал о денормализации данных и не имею никаких проблем с этим, на самом деле я делал это на протяжении веков с изворотливыми csvs в качестве таблиц базы данных в материалах PHP. Помимо этого, возможно, есть таблица HorseResult, JockeyResult, TrainerResult, которая связана с Race - но в этом я делаю, когда я не сохранил гонку, поскольку она находится за пределами моего диапазона урожая? – 2010-10-07 19:31:15
Вместо того, чтобы пытаться связать лошадь, жокея и тренера вместе, почему бы не иметь экземпляр, который записывает конкретную лошадь в конкретной гонке - ссылку на лошадь, жокея и тренера, а также информацию о том, как она выполняется. Нет необходимости хранить постоянную связь между тремя объектами. –