у меня есть 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
колонны.
Я просто очень запутался в том, что будет лучшим дизайном для этих столиков. Должны ли все таблицы в базе данных быть связаны друг с другом?
Использование внешних ключей зависит от вас, это не обязательно, оно предоставляет вам некоторые функции, такие как:
Что касается того, что вас беспокоит, что удаление учетной записи приведет к удалению новостей, это не так.
При определении внешнего ключа вам будет предложено, что вы хотите сделать, когда запись будет удалена, а также удалить новости или установить для selected_by значение NULL. Вы должны выбрать значение NULL, чтобы не нужно было удалять новости. Если вы не знаете, как определять внешние ключи, вы можете использовать такой инструмент, как phpmyadmin, чтобы сделать это.
Если вы свяжете две таблицы, вы все равно можете удалить учетную запись, сохраняя при этом новости, если иностранный обнуляем. Но тогда каков вариант использования отношения? Скорее всего, отношение не является необходимым в вашем случае использования.
Если мы всегда создаем отношения, общий объект, такой как учетная запись, может быть связан со многими другими вещами, помимо новостей. Я бы избегал создания отношений, если это явно не необходимо.