【问题标题】:Designing a database for personal project为个人项目设计数据库
【发布时间】:2017-11-03 02:12:26
【问题描述】:

我对设计数据库很陌生,目前,我正在从事我的一个大型项目,该项目需要一个相当大的数据库。在这里,我有几个问题要让我的数据库准备好实施。 --请记住,这个项目专注于 Laravel--

问题 1: 我的项目使用帖子,但不仅仅是一个。我有一个可以创建三种帖子的系统,一个标准帖子,一个个人资料帖子和一个公司帖子。所有这些帖子都可以包含图像。目前,我在所有这些不同的帖子表中都有一个名为 Post_photo 的列。这是存储与帖子相关的图片的正确方法吗?如下图所示,

图片:https://imgur.com/a/b9FWL

问题 2: 每个帖子都可以包含 cmets,并且要将这些 cmets 连接到您需要引用它们的帖子。但是因为我有三种不同的帖子,所以我把我的 cmets 表设置成这样; “评论表由一个 Post_ID 列和一个 Company_post_ID 列组成” 而不是只有一个 Post_ID。这是将 cmets 连接到帖子的正确方法吗?还是我需要制作另一个名为 company_cmets 的表?如果没有,我该如何做到这一点? 我的喜欢和类别表上也有相同的系统,因为我需要将我的喜欢和类别引用到帖子。这是正确的方法吗?为了直观地了解我在说什么,上面有一张图片。

感谢您抽出宝贵时间阅读本文!

【问题讨论】:

    标签: database laravel


    【解决方案1】:

    以下假设您使用的是关系数据库。

    答案 1:如果每个帖子可以有多个图片或文件,那么最佳做法是为引用帖子 ID 的照片创建一个表格。

    这样,当您加载帖子时,您将在照片表中查询包含与您的帖子 ID 匹配的 PostID 字段的列。

    答案 2:如果这三种类型的帖子非常相似(并且包含相似的数据),请考虑只有一个帖子表,并包含一个指示帖子类型的字段。例如,名为 postType 的字段可以存储与类型对应的整数 (0-2)。这将简化您的 cmets 表,因为您只会引用 postID。

    最后一点,您可能会发现这个关于在数据库中存储二进制数据的帖子很有帮助:(Storing files in SQL Server)

    【讨论】:

    • 首先,我要感谢您的回答,您对第一个问题是正确的。感谢那!但回到问题 2 就我而言,这三种类型的帖子都有不同的列,正如我在问题中提供的图片中所见,它们都需要不同的信息。所以考虑到这一点,我假设我的数据库的一部分是正确的?如果是这种情况,我不能使用字段 PostType,因为它们都需要不同的信息。那我该如何管理 cmets 呢?我必须为每个帖子表制作单独的评论表吗? (1/2)
    • 此外,每个帖子都可以被点赞。想象一下上面的情况,我的点赞表设置正确吗?我可以为所有不同版本的帖子使用 ONE like table 吗?还是我也需要制作单独的表格? (2/2)
    • 抱歉造成误会,Imgur 之前下线了。因为您将三种帖子存储在不同的表中,但它们使用 cmets 的方式相同,所以如果您还包含一个 postType 字段,您可以使用一个只有一个 postID 字段的 cmets 表。这通过将它们与类型结合来解决非唯一 postID 的问题。因此,如果您打开公司帖子,您的查询将查找所有具有正确 postID 和 postType = 'Company' 的 cmets。这应该适用于类别,但如果您希望每个用户限制为一个喜欢,则它不适用于喜欢。
    • 好的,我想我可以更进一步,谢谢!但是关于喜欢,你是对的“喜欢需要限制为每个用户一个”。但只有标准帖子和个人资料帖子可以包含喜欢。如何在我的数据库中完成此操作?因为最终,我想创建一个通知系统,用户可以在其中看到谁喜欢他们的帖子以及他们在什么时间点赞。这是处理喜欢的正确方法吗?我从试图做同样事情的人那里寻找解决方案,但我找不到任何解决方案。你有什么建议吗?
    • 我有一些想法,但效率可能是一个问题。我最好的猜测是:创建一个名为 PostUserLike 的表,并向各种名为 likes 的帖子表添加一个字段。 PostUserLike 表将包含 3 个字段:UserID、PostID 和 PostType。当用户喜欢一个帖子时,增加 post 表中的 likes 字段,并在 PostUserLike 表中添加一个条目,其中包含用户的 id、帖子的 id 和帖子的类型。
    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    相关资源
    最近更新 更多