我正在为我的新项目设计一个数据库。我想知道我的数据库设计是否正确,因为我不确定100%。
允许用户添加内容:图片,文字,网址。内容将在单页上列出,因此我认为创建单一内容类型将是最佳选择。
到目前为止,我有以下结构:
post
- id
- type ENUM
- title
- image NULL
- text NULL
- URL NULL
post_image
- id
- filesystem
- filename
post_text
- id
- body
post_url
- id
- link
当然,我为post tabke和post_ *类型表创建了1:1关联。我在我的应用程序中使用Doctrine作为ORM。为了获取内容,我有一个自定义方法来检查类型并返回正确的内容(文本,URL或图像路径)。
这是你推荐的方法吗?
我心中有两种选择:
image
,text
和url
字段content
字段在使用上述两种方法时,我得到了非常简单和可操作的数据库结构,但这可能会在将来引起一些问题。
期待听到一些社区的声音。
最佳!
答案 0 :(得分:1)
正如您在评论中所述,此数据库设计将为您提供很大的灵活性。它包括在一个帖子中使用多种类型的内容的可能性。如您所述,这将永远不会是一个已使用的功能,您可以决定根据您的需要更改您的数据库设计。如果你记住它或记录它,灵活性不太可能引起问题。
另一种设计就是像你说的那样创建一个单独的表。使用单个表有一个很大的缺点,因为它通常是空的。例如,假设您将所有内容放在一个名为“content”的表中。现在,当用户发布网址时,您将拥有一个数据库行,其中包含图像和文本的空值,这将占用更多空间。这种方法的一大优点是它非常容易访问(因为你只有1个表,它可能会导致简单的查询)。
第三种可能性是将post表实现到子项中。这将导致:
使用此设计只允许您为帖子设置一种类型(因为您将为图像,文本或网址创建一行)。这种设计的一个缺点是你会有很多相同的列(特别是当你决定添加更多项目时)。