Похоже, вы говорите, что время и координаты применяются к всем ваших атрибутов eav.
В этом случае кажется, что идеальным решением было бы просто добавить time
и coordinates
(или x и y отдельно) в вашу таблицу eav.
Вся причина в eav - это когда у вас потенциально неограниченное количество атрибутов.Но если есть некоторые атрибуты, которые будут супер атрибутами, которые применяются ко всем остальным, нет причин не расширять эту таблицу eav.
например,
id | entity_id | attribute | value | time | coordinates
1 | 25 | tag | funny | 12/12/12 | 200,300
1 | 25 | tag | funny | 12/13/12 | 0,1
Затем вы можете выполнить запрос, подобный следующему:
SELECT `coordinates` FROM `my_table` WHERE `entity_id` = 25 ORDER BY `time` ASC
Результатом будет набор координат, которые вы затем сможете построить на графике или как угодно, относящиеся к конкретной сущности.
ИлиВы можете сделать:
SELECT `entity_id`, GROUP_CONCAT(CONCAT(`time`,'|',`coordinates`) ORDER BY `time` ASC SEPARATOR '~') as `time_coords` FROM `my_table` WHERE `entity_id` BETWEEN 25 AND 50 ORDER BY `entity_id`
Это даст вам такой результат
entity_id |временные координаты 25 |12.12.12 | 200,300 ~ 12/13/12 | 0,1 26 |12/12/12 | 150,99 ~ 12/29/12 | 151,180 ~ 12/30/12 | 60,60
Затем можно использовать PHP (или любой другой) для анализа результата по entity_id.
Например (после возврата результата запроса)
while($row = mysql_fetch_row($result)) {
$id = $row[0];
$time_coords = explode('~',$row[1]);
foreach($time_coords as $time_coord) {
$temp = explode('|',$time_coord);
$time = $time_coord[0];
$coord = $time_coord[1];
// do stuff with $id, and each $time+$coord for that id
}
}