Должны ли эти две таблицы быть связаны?

у меня есть account_table и news_table, Новости могут быть созданы учетной записью администратора.

account_table имеет 4 столбца, которые:
1. account_id
2. имя пользователя
3. пароль
4. user_type

news_table имеет 5 столбцов, которые:
1. news_id
2. название
3. сообщение
4. создал_
5. создан_

Если бы я должен был сделать account_id внешний ключ на news_table, это будет означать, что если администратор удален, новости, о которых он сообщил, также будут удалены, чего не должно происходить. И почему бы account_id быть даже связанным с news_table когда есть столбец с именем created_by который заполняется путем принятия пользователя сеанса при создании новостей и вставки его вместе с title, message, created_on колонны.

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

1

Решение

Использование внешних ключей зависит от вас, это не обязательно, оно предоставляет вам некоторые функции, такие как:

  • Убедитесь, что вы не вставили строку с недействительным созданным_байем
  • Когда вы удаляете учетную запись, «если» вы хотите, вы можете автоматизировать удаление новостей, чтобы не хранить новости, связанные с несуществующей учетной записью
  • А также с точки зрения дизайна, если вы загрузите структуру sql в такой инструмент, как Mysql Workbench, он наглядно покажет вам связи между таблицами.

Что касается того, что вас беспокоит, что удаление учетной записи приведет к удалению новостей, это не так.

При определении внешнего ключа вам будет предложено, что вы хотите сделать, когда запись будет удалена, а также удалить новости или установить для selected_by значение NULL. Вы должны выбрать значение NULL, чтобы не нужно было удалять новости. Если вы не знаете, как определять внешние ключи, вы можете использовать такой инструмент, как phpmyadmin, чтобы сделать это.

0

Другие решения

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

Если мы всегда создаем отношения, общий объект, такой как учетная запись, может быть связан со многими другими вещами, помимо новостей. Я бы избегал создания отношений, если это явно не необходимо.

0

По вопросам рекламы [email protected]