php - MySQL数据库设计——关系表

标签 php mysql database

我有一个网站,用户可以在其中发布照片、视频、链接、文章和事件。

但现在困难的部分来了(对我来说): 我希望用户能够附加照片、视频以及事件和/或文章的链接。

这方面的最佳实践是什么?我是否应该创建另一个表来将它们相互链接:

[media2articles]
m_id, m_type, media_id, m_article_id

[media2events]
m_id, m_type, media_id, m_events_id

或者我应该像这样向当前表添加一些字段:

[videos]
v_id, v_file, **v_article_id, v_event_id**

或者还有其他办法吗?

最佳答案

这取决于您的数据之间的关系类型。另请记住,您需要考虑它将来的关系,因为更改架构可能会很痛苦。

  • 如果一张照片始终是单个事件,且绝不会多于一个,也不会少于一个,那么您应将事件 ID 放入照片表中。
  • 如果一个事件始终只有一张照片,而不会更多,并且一张照片可以属于多个事件,那么您可以将照片 ID 放入事件表中。
  • 如果一个事件可以包含多张照片,并且一张照片可以包含多个事件,则您可以创建第三个表。
  • 如果每个事件都有一张照片,并且每张照片都属于一个事件,那么您可能会进行属性拆分,也许这两个表实际上应该是一个。 (我猜不会。)

这是基本的关系建模;阅读它将对您的数据库设计有很大帮助。

关于php - MySQL数据库设计——关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147153/

相关文章:

php - 如何用 Angular 过滤日期?

php - 使用 PHPUnit 测试 protected 方法的最佳实践

MySQL:为按日期分组的最大值选择相应的行

php oop 从数据库中选择数据

java - ErrorCode 和 SQLState 组合是否可以被视为某些异常的唯一 ID?

php - 在函数中使用 "use"?

phpseclib sftp->put() 命令 : File contents are just a string, 不是预期的 PDF 文档

php mysql 选择框

mysql - 本地 phpMyAdmin 到远程 mySQL

php - Mysql 语句 Echo 在 PHPMYADMIN 中有效,但在 PHP 中无效