我有一个存储磁道的表,我想为每个磁道添加扇区时间。每个磁道可以具有不同数量的扇区,同一磁道将始终具有相同数量的扇区,并且某些磁道不能存在扇区时间。
检索数据时,我也希望获得给定磁道的每个扇区的最低扇区时间。
我能想到的最好的想法是拥有一个带有sector1
, sector2
, ... 等的 json 对象。这没问题,但它需要检索数据的代码来了解其扇区数SELECT
,如下例所示。这意味着还需要存储“扇区数”。
CREATE TABLE test (track TEXT NOT NULL, sectors TEXT);
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 10, 'sector2', 11, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 11, 'sector2', 9, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 10, 'sector2', 9, 'sector3', 12));
INSERT INTO test (track, sectors) VALUES ('track1', json_object('sector1', 12, 'sector2', 12, 'sector3', 4));
INSERT INTO test (track, sectors) VALUES ('track2', json_object('sector1', 12, 'sector2', 12, 'sector3', 3, 'sector4', 1));
INSERT INTO test (track) VALUES ('track1');
select * from test;
select min(DISTINCT json_extract(sectors, '$.sector1')), min(DISTINCT json_extract(sectors, '$.sector2')), min(DISTINCT json_extract(sectors, '$.sector3')) from test where track = 'track1';
是否有更好的方法来存储这样的数据并能够SELECT
像我上面所说的那样?
只需将数据分成两个表:
根据需要添加主外键。