我有一个带有表post
的数据库,用户可以提交多种类型的帖子,并且所有这些类型共享属性,并具有自己的属性。例如:视频和标准帖子都有描述
,但只有视频帖子才有视频链接/文件属性。
我所做的是创建一个包含常见属性的表帖子,例如creationDate
和description
。
我创建了其他表,包含其他属性,随着帖子类型数量的增长,我想我将不得不添加更多表。
当然,这种设计的问题在于,当我想要检索一篇帖子时,我必须从 posts
表中检索其数据,然后使用其 ID
和 Type
从类型表(例如:视频表)检索数据。当我想在一页中检索不同类型的数据时,我必须处理许多表。
这似乎不实用,因为我在 Apache 服务器中使用 PHP/MySQL。
我可以实现其他更好的想法来获得相同的结果吗?
最佳答案
您的设计遵循 class-table-inheritance 中描述的技术。信息选项卡中有该技术的概述。
您可能想使用 shared-primary-key 进行探索作为一种加快速度的方法,并且作为一种使用 post-id 作为 FK 的方法,而不必为每个帖子类型使用不同的 FK 类型。它还可以加快连接速度。
缺点是,每当您发现新的帖子类型时,都必须添加新表格。但是,如果您正在构建对象模型,则必须在同一发现中添加新的子类。
关于php - 数据库中具有共同属性和独立属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16374380/