Я пытаюсь понять ограничения наследования таблицы классов в дизайне базы данных. Например, если у меня есть такая схема, как я могу гарантировать, что более одной строки в таблице полей школы или таблице нефинансовой информации не ссылается на один и тот же идентификатор контакта
Contact
--------
id - PK
fname - String
lname - String
email - String
School Field
--------------
id - PK
contact_id - FK
notes - String
Non Profit Field
-----------------
id - PK
contact_id - FK
donation - unsigned int
Я бы порекомендовал другой подход.
Entity
--------------
id - PK
Field_Type_ID - FK
contact_id - FK
notes - String
donation - unsigned int (nullable)
Contact
--------------
id - PK
fname- String
lname- String
email- String
Field_Type
--------------
id - PK
Description- FK
notes - String
Делая это, вам не нужно будет добавлять больше таблиц, если вы закончите с более "полевыми" типами. Вы просто добавляете новую запись в таблицу Field_Type. Затем, чтобы обеспечить требуемое поведение, вы добавляете уникальное ограничение на Entity, которое рассматривает как contactID, так и FieldTypeID. Это гарантирует, что каждый контакт можно связать с типом поля только один раз.