Решение для того, что вы описываете, называется Значение атрибута сущности (EAV), и с этой моделью может возникнуть огромная боль.Поэтому вы должны максимально ограничить использование этого.
Например, есть ли поля, которые почти всегда находятся в формах (Имя, Фамилия, Электронная почта и т. Д.), Тогда вы должны поместить их в таблицу какполя.
Причина этого в том, что если вы не знаете, кто-то рано или поздно поймет, что у них есть эти имена и электронные письма, и попросит вас создать этот запрос
SELECT
Fname.value fname,
LName.Value lname,
email.Value email,
....
FROM
form f
INNER JOIN formFields fname
ON f.FormId = ff.FormID
and AttributeName = 'fname'
INNER JOIN formFields lname
ON f.FormId = ff.FormID
and AttributeName = 'lname'
INNER JOIN formFields email
ON f.FormId = ff.FormID
and AttributeName = 'email'
....
, когда вымог бы написать это
SELECT
common.fname,
common.lname,
common.email,
....
FROM
form f
INNER JOIN common c
on f.FormId = c.FormId
Также выйдите из SQL 2000, как только сможете, потому что вы действительно пропустите предложение UNPIVOT
Еготакже, вероятно, неплохая идея взглянуть на предыдущие SO EAV вопросы , чтобы дать вам представление о проблемах, с которыми люди сталкивались в прошлом