Я изучаю sql и в качестве упражнения пытаюсь понять, как лучше всего хранить данные о времени в sqlite.В качестве примера я могу создать базу данных, которая отслеживает автомобили и запчасти для автомобилей, а также журналы времени, когда они выходят из строя.Фоновая схема: есть автомобиль (который может выйти из строя), и автомобиль имеет детали (которые могут выйти из строя), и я хотел бы зарегистрировать эти данные, когда автомобиль или одна из его частей были в рабочем состоянии или вышли из строя.
Код моей схемы находится здесь (и fiddle ):
create table car (
name varchar,
id int primary key
);
create table car_part (
car_id int,
part_name varchar,
part_id primary key
);
create table last_checked_time_log (
checked_time datetime,
failed_or_operational boolean,
car_id int,
foreign key(car_id) references car(car_id),
primary key (checked_time, failed_or_operational, car_id)
);
Является ли эта схема хорошим способом сделать это?
В настоящее время таблица last_checked_time_log может толькодержите или автомобиль или car_part.Но я бы хотел, чтобы он мог удерживать оба, так как автомобиль или car_part могут выйти из строя (меня не волнует, что автомобиль выходит из строя из-за автомобильной детали. Я просто хочу, чтобы все было просто - полная машинапроизошел сбой или произошел сбой одного car_part).
Кроме того, с текущей схемой, я думаю, что если я добавлю много машин (например, 1000 машин в городе) и все соответствующие автомобильные детали, то last_checked_time_log будетстать огромным за несколько дней.Есть ли лучший способ сделать это или это просто так будет работать в этом сценарии?