【问题标题】:News Database Design for a Desktop Application桌面应用程序的新闻数据库设计
【发布时间】:2016-06-12 20:37:07
【问题描述】:

我正在制作一个可以处理大量信息的应用程序。该信息是使用一些网络爬虫检索到的,是关于新闻的,包含新闻标题、URL、出版日期、类别和内容等数据。爬取的数据是 XML 格式的,我会将这些信息加载到我的应用程序中。

从那里,10 个用户将处理每条新闻,并通过阅读标题手动标记新闻的类别。我使用了 9 个主要类别,对于每个新闻,用户将从 0 到 5 决定这个特定新闻属于每个类别的程度。

用户还将按标题搜索新闻,并确定该新闻是否与另一新闻讨论同一事件,或者该新闻是否与另一新闻相似(例如关于下午 3 点足球比赛的新闻和关于下午 5 点的足球比赛)。

我对制作应用程序本身没有任何问题,我只需要一些帮助来设计一个/多个表格,这些表格可以链接讨论类似事件或相同事件的新闻,因为可能有很多很多可以谈论同一事件的新闻。

到目前为止,我已经做了这样的事情:

表格新闻

ID
Title
URL
PublicationDate
NewsContent

表格类别

NewsID
User_ID
Economy
Politics
Present_Day
Sport
Technology
Showbiz
Culture
Region
World

用户

ID
FirstName
LastName

类别表中的每个类别字段都包含一个 tinyint 数据类型(我使用的是 SQL Server)并且我已经限制了用户可以通过检查约束,以便它允许从 0 到 5 的值。到目前为止,我不知道这是否是数据库设计的正确方法,我需要添加允许添加有关类似新闻或新闻的信息的表/s谈论同一个事件,例如一个表Similar_News包含一些字段,如News_ID、SimilarNews1_ID、SimilarNews2_ID等,并且必须包含关于哪个用户“说这个”的信息,但这听起来像是有缺陷的给我设计。

感谢您的帮助,谢谢。

【问题讨论】:

    标签: sql-server database database-design


    【解决方案1】:

    这里有一些建议。在 CATEGORY 表中,您创建了 9 个不同的列(经济、政治等)。如果几天/几个月/几年后有一个新类别怎么办。在这种情况下,您将不得不修改您的数据库设计。相反,您的 CATEGORY 表可以具有以下结构。

    CategoryId
    Category
    

    还有一张表来存储实际的新闻分类。

    Table: NewsCategory
    NewsId
    CategoryId
    CategoryWeight (This will store the rating from 1-5)
    

    如果用户认为某条新闻不属于某个特定类别,则不会在此表中为该类别插入任何行。这样的结构将使您在将来插入新类别时更加灵活,而无需更改数据库设计。您只需在 Category 表中插入新行。

    为了存储类似的新闻,我会推荐以下方法之一。

    创建一个表事件并将事件的详细信息存储在该表中。

    EventId
    EventDescription
    
    Sample Data
    EventId: 55
    EventDescription: Euro 2016 Belgium vs Italy
    

    现在您可以将此 EventId 包含在您的 News 表中。这样您就可以提取与此事件相关的所有新闻。

    【讨论】:

    • 谢谢,这很有帮助,我对其进行了一些修改以满足我的需要,现在我已经准备好开始我的应用程序了,再次非常感谢您!
    【解决方案2】:

    创建包含 n 个字段的 Similar_News 表来存储相似的 News_Id 听起来不是一个好主意。您将创建多少个字段? 3? 10?

    您正在建模 n 到 m 关系,所以我只会使用两个字段(如果您想存储用户 ID,则三个字段)。例如,如果 New 1 类似于 news 2 和 3。而 New 3 类似于 4,则插入行:

    New_ID     SImilar_New_Id
    --------------------------
    1          2
    1          3
    3          4
    

    另一种方法是使用 NOSQL DB 来存储灵活的结构,例如:

    "News":{
       "User_Id":1,
       "Category"{
            "Economy":3,
            "Politics":4      
        },
        "Similar_News":[1,2,3]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多