Внешний ключ, относящийся к первичным ключам через несколько таблиц?

Как правило, вопрос переполнения стека - это вопрос кодирования - здесь мы на самом деле не на этом уровне. Могут быть и другие сообщества, которые лучше подходят для этого вопроса.

Тем не менее, фильтр Калмана не является лучшим способом обнаружения потенциального столкновения. Есть две разные проблемы:

  1. Оценить положение и скорость транспортных средств. Обычно для этого используется фильтр Калмана .

  2. Прогнозировать, приведет ли траектория к столкновению. Решением этой проблемы обычно не является фильтр Калмана. Это проблема геометрии.

    Мы из Калмана фильтруем оценки положения и скорости для обоих транспортных средств в одно и то же время. Мы строим отрезки на интересующий момент для обоих автомобилей. Сегменты начинаются с оценки текущего положения, а направление берется из вектора скорости. Длина отрезка является результатом того, сколько времени вы рассматриваете для обнаружения столкновений и величины индивидуальных оценок вектора скорости.

    Тогда возникает вопрос о столкновении - пересекаются ли эти два отрезка? Фильтр Калмана не используется для обнаружения пересечения отрезков.

91
задан Cœur 26 April 2017 в 14:44
поделиться

4 ответа

Предположение, что я понял Ваш сценарий правильно, это - то, что я назвал бы право способ сделать это:

Начинают с высокоуровневого описания Вашей базы данных! У Вас есть сотрудники, и сотрудники могут быть "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 таблица. Таким образом, внешний ключ, из-за которого Вы испытали затруднения, должен относиться к той таблице!

95
ответ дан Thomas Padron-McCarthy 24 November 2019 в 06:49
поделиться

Можно, вероятно, добавить два ограничения внешнего ключа (честно: я никогда не пробовал его), но это тогда настояло бы, чтобы родительская строка существовала в обеих таблицах.

Вместо этого Вы, вероятно, хотите создать супертип для своих двух подтипов сотрудника и затем указать на внешний ключ там вместо этого. (Принятие Вас имеет серьезное основание разделить два типа сотрудников, конечно).

                 employee       
employees_ce     ————————       employees_sn
————————————     type           ————————————
empid —————————> empid <——————— empid
name               /|\          name
                    |  
                    |  
      deductions    |  
      ——————————    |  
      empid ————————+  
      name

type в списке сотрудников был бы ce или sn.

22
ответ дан derobert 24 November 2019 в 06:49
поделиться

Технически возможный. Вы, вероятно, сослались бы на employees_ce в выводах и employees_sn. Но почему Вы не объединяете employees_sn и employees_ce? Я не вижу оснований, почему у Вас есть две таблицы. Никто многим отношения. И (не в этом примере) много столбцов.

, Если Вы делаете две ссылки для одного столбца, сотрудник должен иметь запись в обеих таблицах.

1
ответ дан Sascha 24 November 2019 в 06:49
поделиться

Да, это возможно. Необходимо будет определить 2 FKs для 3-й таблицы. Каждый FK, указывающий на обязательное поле (поля) одной таблицы (т.е. 1 FK на внешнюю таблицу).

1
ответ дан vmarquez 24 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: