Eu tenho essas tabelas:
create table data (
id int identity not null,
ref int not null
);
create table reference (
refid int not null
);
com aproximadamente 2 milhões de linhas em dados e aproximadamente 200 mil linhas em referência. Eu adiciono cerca de 5.000 linhas aos dados todos os dias, resultando em 500-5.000 linhas adicionais em referência por dia.
Na maioria dos casos, preciso salvar apenas uma referência para uma coluna de dados (várias entradas de dados podem ter a mesma referência), mas em alguns casos (atualmente cerca de 0,1%) preciso salvar mais de uma referência.
Eu provavelmente poderia usar uma terceira tabela como:
create table data_reference (
dataid int not null,
refid int not null
);
criar um mapeamento an:m mas para a maioria dos valores não vai ter nenhum ganho aqui, vai apenas criar outro join...
Eu também poderia criar uma segunda coluna em cada linha de dados, porque na maioria dos casos eu tenho apenas uma referência adicional (mas em teoria poderia haver mais) e salvar null se nenhuma outra referência estiver lá - o que me parece muito ruim porque pode haver tuplas com 3 ou mais referências.
Existe uma maneira eficiente e fácil de manter para salvar esses dados?