2011-12-30 2 views
1

Я создал базу данных MySQL для отслеживания местоположения на нескольких устройствах. В настоящее время я планирую иметь каждое устройство, имеющее свою собственную таблицу, в которой можно хранить свои местоположения в разное время. Я думал, что в таблице устройства будет таблица временных меток, которая будет содержать широту, долготу и другую идентифицирующую информацию. Это мой первый опыт использования MySQL, поэтому я уверен, что это не лучший способ сделать это ... но возможно ли это? Если нет, то каковы другие альтернативы?Таблицы внутри таблиц в MySQL?

+1

Вместо того, чтобы думать в иерархиях (которые, как правило, лучше подходят для других моделей данных), альтернативой является думать в наборах и отношениях между ними: есть основополагающие принципы реляционных баз данных SQL (которые в свою очередь основаны на реляционной алгебре). Любое количество книг по внедрению базы данных может объяснить базовый дизайн таблицы и нормализацию. –

ответ

0

Попробуйте базы данных NoSQL, которые не ограничивают схемы. MongoDB имеет в виду, когда вы хотите структурировать вложенную коллекцию.

+0

К сожалению, я застрял в базе данных MySQL (по крайней мере, пока). Есть ли альтернативные проекты, которые я могу использовать с тем, что у меня есть, все еще отслеживая соответствие между пользователем, временем и местоположением? – user1122510

+0

MySQL может это сделать: я знаю кого-то, кто разработал решение для отслеживания и отслеживания уровня приложения на уровне предприятия, используя MySQL как RDMS. Я предлагаю вам выполнить поиск Google для аналогичного проекта с открытым исходным кодом. – menjaraz

1

Из того, что я могу видеть, ваша схема базы данных должна выглядеть более или менее, как это:

create table devices (
    id int not null auto_increment primary key, 
    name ..., 
    ... 
) engine=INNODB; 

create table device_locations (
    id int not null auto_increment primary key, 
    device_id not null, 
    lat ..., 
    lng ..., 
    ..., 
    index ix_device_id(device_id), 
    foreign key (device_id) references devices(id) 
) engine=INNODB; 

То, что вы хотите сделать, это отлично подходит для реляционных баз данных (например, MySQL, эй, это даже имеет built-in datatypes just for storing GIS data), однако сначала вы должны сначала прочитать normal forms.

0

С учетом опыта Flickr с MySQL, его можно использовать как без схемы, просто начните хранить сериализованные данные в столбце, если знаете, что хотите.

MySQL - это, прежде всего, готовое к производству решение с готовыми к использованию инструментами для резервного копирования, восстановления, репликации и инструмента для ошпаривания, которые идеально подходят для обслуживания. Если вы не хотите использовать схему, просто не используйте ее

+0

Вы можете сжечь свинью много способов. Большинство из них не могут поесть. –

Смежные вопросы