Вы правы, это не правильный дизайн.Чтобы разбить отношение M: M на два отношения 1: M, вам нужна третья таблица:
CompanyPerson
--these columns are vital to decompose the many:many relationship
--the PK of this table should be a compound of these two columns
--so that the same person cannot twice work for the same company
--with different roles etc
PersonID -> FK to Person.ID
CompanyID -> FK to Company.ID
--plus other properties like:
RoleID -> FK to Role table --if roles are a defined set of options
StartDate -> --when the person began this employment
ManagerPersonId -> --the person's mananger.. etc
PersonID + CompanyID - составной первичный ключ для этой таблицы
. Он отображает людей в компании.и роль, которую они играют в каждом.Может также иметь другую информацию, такую как дата начала, менеджер в этой компании и т. Д. (Может также потребоваться сделать дату начала частью первичного ключа, если человек когда-либо уйдет и вернется к тому же сотруднику, и вы захотите перезапустить PersonID)
Примечание. Вы можете назвать эту таблицу Employee, потому что это действительно люди из нее, но я склонен считать более полезным, что эти таблицы среднего уровня, которые создают ассоциации между двумя другими таблицами, лучше называтьTable1Table2, потому что вы можете более четко видеть / понимать взаимосвязь / цель таблицы, чем если бы она называлась чем-то более абстрактным, как Employee