CREATE TABLE "vehicle_brands" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"brand" VARCHAR(100),
	PRIMARY KEY("id")
);

CREATE TABLE "vehicle_model_year" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"model" VARCHAR(100),
	"fk_idVehicleBrand" INTEGER,
	"fk_idVehicleType" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "vehicle_type" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"type" VARCHAR(100),
	PRIMARY KEY("id")
);

CREATE TABLE "shock_brand_specs" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"partNumber" VARCHAR(50),
	"product" VARCHAR(255),
	"serie" VARCHAR(255),
	"quantity" SMALLINT,
	"tier" VARCHAR(50),
	"position" VARCHAR(100),
	"accesories" VARCHAR(255),
	"extendedLong" INTEGER,
	"compressedLong" INTEGER,
	"extension" INTEGER,
	"superiorMount" VARCHAR(100),
	"inferiorMount" VARCHAR(100),
	"imageProduct" VARCHAR(255),
	"vehicleAttrs" VARCHAR(255),
	"notes" VARCHAR(255),
	"technicalSheet" VARCHAR(255),
	"fk_idVehicleModelYear" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "break_brand_specs" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"partNumber" VARCHAR(100),
	"product" VARCHAR(255),
	"serie" VARCHAR(50),
	"tier" VARCHAR(50),
	"quantity" INTEGER,
	"position" VARCHAR(50),
	"fmsi" VARCHAR(50),
	"includesHardware" VARCHAR(50),
	"imageProduct" VARCHAR(255),
	"vehicleAttrs" VARCHAR(255),
	"imageProductDimentions" VARCHAR(255),
	"technicalSheet" VARCHAR(255),
	"fk_idVehicleModelYear" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "extra_type_product" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"type" VARCHAR(100),
	"notes" VARCHAR(255),
	"name" VARCHAR(100),
	"id_fktypeBrand" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "extra_type_brand" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"brand" VARCHAR(255),
	"image" VARCHAR(255),
	"id_fkProductCategory" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "extra_type_product_caracteristics" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"category" VARCHAR(255),
	PRIMARY KEY("id")
);

CREATE TABLE "extra_product_stocks" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"quantity" INTEGER,
	"fk_idExtraProduct" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "shock_stocks" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"quantity" INTEGER,
	"fk_idShock" INTEGER,
	PRIMARY KEY("id")
);

CREATE TABLE "break_stocks" (
	"id" INTEGER NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY,
	"quantity" INTEGER,
	"fk_idBreak" INTEGER,
	PRIMARY KEY("id")
);

ALTER TABLE "vehicle_model_year"
ADD FOREIGN KEY("fk_idVehicleBrand") REFERENCES "vehicle_brands"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "vehicle_model_year"
ADD FOREIGN KEY("fk_idVehicleType") REFERENCES "vehicle_type"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "shock_brand_specs"
ADD FOREIGN KEY("fk_idVehicleModelYear") REFERENCES "vehicle_model_year"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "break_brand_specs"
ADD FOREIGN KEY("fk_idVehicleModelYear") REFERENCES "vehicle_model_year"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "extra_product_stocks"
ADD FOREIGN KEY("fk_idExtraProduct") REFERENCES "extra_type_product"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "extra_type_product"
ADD FOREIGN KEY("id_fktypeBrand") REFERENCES "extra_type_brand"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "extra_type_brand"
ADD FOREIGN KEY("id_fkProductCategory") REFERENCES "extra_type_product_caracteristics"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "break_stocks"
ADD FOREIGN KEY("fk_idBreak") REFERENCES "break_brand_specs"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
ALTER TABLE "shock_stocks"
ADD FOREIGN KEY("fk_idShock") REFERENCES "shock_brand_specs"("id")
ON UPDATE NO ACTION ON DELETE NO ACTION;
