дизайн я бы рекомендовал здесь решение стол/суб-таблицы. Что это значит, введите 4-й стол, Test
. Таблица Test
просто служит таблицей, которая связывает все разные типы тестов вместе. Если вы знакомы с объектно-ориентированным программированием, подумайте об этом как о базовом типе. Таким образом, ваш ProcessID
указывает на Test
, который затем указывает на один из конкретных типов тестов (SportsTest, MedicalTest, WhateverTest). Если вам нравится, вы также можете указать Type
в таблице Test
, чтобы узнать, какой тип теста он есть. Здесь есть ключевая вещь: в таблице MedicalTest
и SportsTest
первичный ключ (скажем MedicalTestID
) также является внешним ключом, который указывает на TestID
в Test
. Таким образом, вы можете использовать один столбец в своем GeneralNeeds
, потому что ссылка относится к одному типу таблицы, Test
. Начиная с Test
, и соответствующий MedicalTest
или SportsTest
будет иметь тот же первичный ключ, вы можете легко выполнить соединения, необходимые для выполнения запроса.
Вот диаграмма, пример, иллюстрирующий это:
Простой пример: Скажем, у вас есть MedicalTest
с ID 1 (давайте забудем GUIDs на минуту, чтобы сделать его легче читать) Тогда вы также имеют запись в Test
с идентификатором 1. Тогда ProcessID
из 1 действительно указывает на запись Test
, которую вы могли бы затем присоединиться к записи MedicalTest
.
Если вы все еще смущены, дайте мне знать, и я попытаюсь добавить немного более подробную информацию, но, надеюсь, это поможет вам двигаться в направлении, которое работает.
'GUID'? Это может быть первичный ключ? – HelloNewWorld
Можете ли вы дать полное сообщение об ошибке?Кроме того, какую таблицу вы вставляете, когда получаете сообщение? –
Вам нужно будет удалить отношение внешнего ключа. Плохая идея сделать это, хотя и противоречит тому, как вы должны использовать внешние ключи. – dman2306