Дизайн базы данных обеспечивает отношения один к одному

0

Я пытаюсь понять ограничения наследования таблицы классов в дизайне базы данных. Например, если у меня есть такая схема, как я могу гарантировать, что более одной строки в таблице полей школы или таблице нефинансовой информации не ссылается на один и тот же идентификатор контакта

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
  • 0
    Так что, если запись в SchoolField ссылается на ID 1 в Contact, может ли запись в NonProfitField ссылаться на contactID 1?
  • 0
    Да, это нормально, если это произойдет
Теги:
database
database-design
database-schema

1 ответ

0
Лучший ответ

Я бы порекомендовал другой подход.

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. Это гарантирует, что каждый контакт можно связать с типом поля только один раз.

https://www.w3schools.com/sqL/sql_unique.asp

  • 0
    Можете ли вы расширить описание и примечания в таблице типов полей? На что ссылается описание и что представляют примечания в контексте таблицы типов полей?
  • 0
    Описание будет «Школа» и «Некоммерческий». Таким образом, вам не нужно будет создавать новую таблицу в том случае, если вы получаете новое «поле», которое вы должны начать отслеживать. Заметки ничего не значат, я просто скопировал их из вашего примера.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню