【发布时间】:2010-07-19 19:23:08
【问题描述】:
我目前正在构建一个使用 PHP 和 MySQL 发布故事的小型 Web 应用程序。每个故事可能是一篇文章(包含大量字段和数据)、只是一个超链接/网址、只是一张图片或具有某些属性的可下载文件(同样包含很多字段)。
我的问题与寻找系统的最佳数据库布局有关。我考虑了 3 种不同的解决方案,它们可能有效,也可能无效(字段只是示例,不要纠结于数据是否应该存储在数据库中):
1) 为每种类型制作一个表,然后将它们联合起来。例如:
文章id | date | title | author | preview | last_edited | category | content
超链接id | date | title | author | url
图片id | date | title | author | thumbnail | fullimg
文件id | date | title | author | filetype | filename | filecontent
是否可以创建一条 SQL 语句,以这样的方式连接这些字段,将每个字段添加到各个表的行中,并且根据其来自哪个表的类型,将各个行“标记”其类型?还是我必须只满足于公共字段(每个表的 3-4 个字段将是相同的)和每行的单独查找?
2) 制作某种索引表,根据类型引用正确的表和行?
索引id | type | title | date | referenceid -> 文章、超链接、图片或文件,具体取决于“类型”字段。
在使用外键时,这是否可能以某种方式实现?我怀疑没有,但不确定在 MySQL 中可以做什么和不可以做什么。
3) 将所有类型的所有字段放在同一个表中,并将特定字段设为可空(我不太喜欢这种解决方案,因为它看起来很乱)。
有什么想法吗?
我怀疑我不可能是第一个遇到根据某种类型引用不同实体类型/字段问题的人。
非常感谢您的想法。
【问题讨论】:
标签: php sql mysql database database-design