Вы, вероятно, захотите начать с таблицы dogs
, содержащей все плоские (не массивы) данные для каждой собаки, вещи, которые каждая собака имеет один , как имя, поли возраст:
CREATE TABLE `dogs` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(64),
`age` INT UNSIGNED,
`sex` ENUM('Male','Female')
);
Отсюда у каждой собаки «много» измерений, поэтому вам понадобится таблица dog_mesaurements
для хранения 24 измерений:
CREATE TABLE `dog_measurements` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`dog_id` INT UNSIGNED NOT NULL,
`paw` ENUM ('Front Left','Front Right','Rear Left','Rear Right'),
`taken_at` DATETIME NOT NULL
);
Тогда всякий раз, когдавы проводите измерение, вы INSERT INTO dog_measurements (dog_id,taken_at) VALUES (*?*, NOW());
, где * ? * - это идентификатор собаки из таблицы dogs
.
Затем вы захотите, чтобы таблицы хранили фактические кадры для каждого измерения, что-то вроде:
CREATE TABLE `dog_measurement_data` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`dog_measurement_id` INT UNSIGNED NOT NULL,
`frame` INT UNSIGNED,
`sensor_row` INT UNSIGNED,
`sensor_col` INT UNSIGNED,
`value` NUMBER
);
Таким образом, для каждого из 250 кадров вы проходите через каждый из 63 датчиков и сохраняете значение для этого датчика с номером кадра в базе данных:
INSERT INTO `dog_measurement_data` (`dog_measurement_id`,`frame`,`sensor_row`,`sensor_col`,`value`) VALUES
(*measurement_id?*, *frame_number?*, *sensor_row?*, *sensor_col?*, *value?*)
Очевидно, замените measure_id? , frame_number? , sensor_number? , value? действительными значениями: -)
Таким образом, каждый dog_measurement_data
является единственным значением датчика для данного кадра .Таким образом, чтобы получить все значения датчика для всего данного кадра, вы должны:
SELECT `sensor_row`,sensor_col`,`value` FROM `dog_measurement_data`
WHERE `dog_measurement_id`=*some measurement id* AND `frame`=*some frame number*
ORDER BY `sensor_row`,`sensor_col`
И это даст вам все строки и столбцы для этого кадра.