Database design 针对多种内容类型的数据库设计
我正在为我的新项目设计一个数据库。我想知道我的数据库设计是否正确,因为我不能100%确定 用户可以添加内容:图像、文本、URL。内容将在单个页面上列出,因此我认为创建单个内容类型将是最佳选择 到目前为止,我的结构如下:Database design 针对多种内容类型的数据库设计,database-design,Database Design,我正在为我的新项目设计一个数据库。我想知道我的数据库设计是否正确,因为我不能100%确定 用户可以添加内容:图像、文本、URL。内容将在单个页面上列出,因此我认为创建单个内容类型将是最佳选择 到目前为止,我的结构如下: post - id - type ENUM - title - image NULL - text NULL - URL NULL post_image - id - filesystem - filename post_text -
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的关联。我在应用程序中使用条令作为ORM。为了获取内容,我有一个自定义方法来检查类型并返回正确的内容(文本、URL或图像路径)
这是你推荐的方法吗
我有两个选择:
- 在post表中创建可为空的
、图像
和文本
字段url
- 创建单个
内容
字段
最好的 如您在评论中所述,此数据库设计将给您带来很大的灵活性。它包括在一篇文章中使用多种内容的可能性。正如您所提到的,这将永远不会被使用,您可以根据需要决定更改数据库设计。如果您将灵活性牢记在心或记录下来,它就不太可能导致问题 另一种设计是像你说的那样创建一个表。使用单个表有很大的缺点,因为它通常是空的。例如,假设您将所有内容都放在一个名为“内容”的表中。现在,当用户发布url时,您将拥有一个数据库行,其中包含图像和文本的空值,这将占用更多空间。这种方法的一大优点是非常容易访问(因为您只有一个表,所以很可能会导致简单的查询) 第三种可能性是将post表实现到子项中。这将导致:
- 后置图像
- 后置文本
- 发布url
使用此设计将只允许您为帖子创建一种类型(因为您将为图像、文本或url创建一行)。这种设计的一个缺点是,您会有很多相同的列(特别是当您决定添加更多项时)。这取决于很多因素,您希望使用什么类型的列(10个用户?100万?)。这种设计的一个优点是,您可以在帖子中使用多种类型的内容。@Floris Velleman-Users?当然不到一百万。另一件永远不会改变的事情是,每篇文章只能有单一类型的内容。我目前的结构给了我更多的灵活性,我只是不确定这是否是最好的选择。谢谢你的评论。