Никто не может действительно сделать дизайн от так мало знаний о сценариях использования ... но
Некоторые псевдо DDL, не уверены, какой сервер вы используете ...
create table Design (
DesignID int not null primary key,
Iname nvarchar(32) not null
)
create table InputFile (
FileID int not null primary key,
DesignID int not null, -- foreign key referencing Design (DesignID)
FileName nvarchar(max) not null,
Description nvarchar(max) null
)
create table InputData (
TestCaseInputID int not null primary key,
FileID int not null, -- Foreign key referencing InputFile (FileID)
MaterialType nvarchar(?)
)
Главное не делает первичный ключ InputFile (FileID, DesignID), если вы не собираетесь иметь более одного файла с тем же файловым идентификатором.
Наличие DesignID в InputData не является необходимым, избыточным. Если вы положите его туда, вы должны убедиться, что он остается совместимым с InputFile.DesignID. Вы все еще можете этого захотеть, если эта связь никогда не изменится. Это всего лишь намек на нормализацию.
Вы должны ввести данные в следующем порядке ...
- Первый Insert Design
- Затем вставьте файл
- Затем вставьте InputData
Почему InputData отдельная таблица с InputFile ?Если у вас будет несколько строк входных данных для каждого файла, тогда это имеет смысл.
Возможно, вы захотите создать идентификационные столбцы DesignID, FileID и TestCaseInputID или эквивалентные автоинкрементные идентификаторы вашего сервера. Или, если эти идентификаторы являются информацией реального мира, полученной в другом месте, вы должны вставить их.
Трудно сказать, что здесь задают. Есть ли какая-то проблема, с которой вы сталкиваетесь? Просто заявить о своем дизайне и попросить людей «определить потенциальную ошибку» [не так, как мы это делаем] (http://meta.stackexchange.com/a/129787/172936) – Lix
Какие 4 таблицы? Я вижу только три: Design, InputFiles и InputData. Кроме того, что такое характер вашей «проблемы с вставкой». –
Внешние ключи не вызывают проблем с вставкой * - они защищают целостность данных, запрещая вставлять данные, которые ссылаются на несуществующие строки в таблице, на которую ссылаются ... –