Как правило, вопрос переполнения стека - это вопрос кодирования - здесь мы на самом деле не на этом уровне. Могут быть и другие сообщества, которые лучше подходят для этого вопроса.
Тем не менее, фильтр Калмана не является лучшим способом обнаружения потенциального столкновения. Есть две разные проблемы:
Оценить положение и скорость транспортных средств. Обычно для этого используется фильтр Калмана .
Прогнозировать, приведет ли траектория к столкновению. Решением этой проблемы обычно не является фильтр Калмана. Это проблема геометрии.
Мы из Калмана фильтруем оценки положения и скорости для обоих транспортных средств в одно и то же время. Мы строим отрезки на интересующий момент для обоих автомобилей. Сегменты начинаются с оценки текущего положения, а направление берется из вектора скорости. Длина отрезка является результатом того, сколько времени вы рассматриваете для обнаружения столкновений и величины индивидуальных оценок вектора скорости.
Тогда возникает вопрос о столкновении - пересекаются ли эти два отрезка? Фильтр Калмана не используется для обнаружения пересечения отрезков.
Предположение, что я понял Ваш сценарий правильно, это - то, что я назвал бы право способ сделать это:
Начинают с высокоуровневого описания Вашей базы данных! У Вас есть сотрудники, и сотрудники могут быть "ce" сотрудниками и "sn" сотрудниками (независимо от того, что это). В объектно-ориентированных терминах существует класс "сотрудник" с двумя подклассами, названными "ce сотрудник" и "sn сотрудник".
Тогда Вы переводите это высокоуровневое описание в три таблицы: employees
, employees_ce
и employees_sn
:
employees(id, name)
employees_ce(id, ce-specific stuff)
employees_sn(id, sn-specific stuff)
, Так как все сотрудники являются сотрудниками (понятное дело!), каждый сотрудник поссорится в employees
таблица. сотрудники "ce" также ссорятся в employees_ce
таблица, и "sn" сотрудники также ссорятся в employees_sn
таблица. employees_ce.id
внешний ключ к [1 110], как employees_sn.id
.
, Чтобы относиться к сотруднику любого вида (ce или sn), обратитесь к employees
таблица. Таким образом, внешний ключ, из-за которого Вы испытали затруднения, должен относиться к той таблице!
Можно, вероятно, добавить два ограничения внешнего ключа (честно: я никогда не пробовал его), но это тогда настояло бы, чтобы родительская строка существовала в обеих таблицах.
Вместо этого Вы, вероятно, хотите создать супертип для своих двух подтипов сотрудника и затем указать на внешний ключ там вместо этого. (Принятие Вас имеет серьезное основание разделить два типа сотрудников, конечно).
employee
employees_ce ———————— employees_sn
———————————— type ————————————
empid —————————> empid <——————— empid
name /|\ name
|
|
deductions |
—————————— |
empid ————————+
name
type
в списке сотрудников был бы ce
или sn
.
Технически возможный. Вы, вероятно, сослались бы на employees_ce в выводах и employees_sn. Но почему Вы не объединяете employees_sn и employees_ce? Я не вижу оснований, почему у Вас есть две таблицы. Никто многим отношения. И (не в этом примере) много столбцов.
, Если Вы делаете две ссылки для одного столбца, сотрудник должен иметь запись в обеих таблицах.
Да, это возможно. Необходимо будет определить 2 FKs для 3-й таблицы. Каждый FK, указывающий на обязательное поле (поля) одной таблицы (т.е. 1 FK на внешнюю таблицу).