gdyby zbiór wartości parametru opisanego w nagłówkach (od 500 do 2500) był znany i stały można by to zrobić przy pomocy jednej tabeli i selectem
z drabinkowym casem
, ale nie było by to eleganckie rozwiązanie
polecał bym dwie tabele, np. takie :
CREATE TABLE ALLOYS (
ID BIGINT NOT NULL,
DESCRIPTION CHAR(30) CHARACTER SET UTF8 COLLATE UTF8);
ALTER TABLE ALLOYS ADD PRIMARY KEY (ID);
SET TERM ^ ;
CREATE TRIGGER BI_ALLOYS_ID FOR ALLOYS
ACTIVE BEFORE INSERT
POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(ALLOYS_ID_GEN, 1);
END^
SET TERM ; ^
CREATE TABLE PARAMETERS (
ALLOY_ID BIGINT,
SIZE1 DECIMAL(12, 4),
SIZE2 DECIMAL(12, 4),
PARAMVALUE DECIMAL(12, 4));
ALTER TABLE PARAMETERS ADD CONSTRAINT FK_PARAMETERS FOREIGN KEY (ALLOY_ID) REFERENCES ALLOYS(ID);
ALTER TABLE PARAMETERS ADD CONSTRAINT UQ_PARAMETERS UNIQUE (ALLOY_ID,SIZE1,SIZE2);
CREATE INDEX IDX_PARAMETERS ON PARAMETERS(ALLOY_ID);
a tak mógł by wyglądać select
SELECT
paramvalue
FROM
ALLOYS,parameters
where
ALLOYS.ID=parameters.ALLOY_ID and
ALLOYS.DESCRIPTION=:description and
parameters.SIZE1=:size1 and
parameters.SIZE2=:size2