我正在制作一个处理大量信息的应用程序。此信息是使用某些网络抓取工具检索的,并且是关于新闻的,包含新闻标题,网址,发布日期,类别和内容等数据。已爬网的数据采用XML格式,我会将该信息加载到我的应用程序中。
从那里,10个用户将处理每个新闻并通过阅读标题手动标记新闻的类别。我使用了9个主要类别,每个新闻用户将从0-5决定这个特定新闻属于每个类别的数量。
用户还将按标题搜索新闻,并确定此新闻是否与其他新闻讨论同一事件,或者此新闻是否与其他新闻相似(如有关下午3点足球比赛的新闻和有关a的新闻)足球比赛在下午5点)。
我在制作应用程序本身时没有任何问题,我只需要一些帮助来解决如何设计一个/多个表,这些表可以链接谈论类似事件或同一事件的新闻,因为可能有很多很多可以谈论同一事件的新闻。
到目前为止,我做过类似的事情:
表新闻
ID
Title
URL
PublicationDate
NewsContent
表类别
NewsID
User_ID
Economy
Politics
Present_Day
Sport
Technology
Showbiz
Culture
Region
World
表用户
ID
FirstName
LastName
Category表中的每个类别字段都包含 tinyint 数据类型(我正在使用 SQL Server ),并且我限制了用户可以通过输入的值输入的值检查约束,以便它允许0到5之间的值。我不知道这对于数据库设计到目前为止是否是正确的方法,我需要添加允许添加有关类似新闻或新闻的信息的表。谈论相同的事件,例如表 Similar_News 包含一些字段,如News_ID,SimilarNews1_ID,SimilarNews2_ID等等,并且必须包含有关哪个用户“说出这个”的信息,但这听起来像是有缺陷的设计给我。
感谢任何帮助,谢谢。
答案 0 :(得分: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
现在,您可以在News表中包含此EventId。这样您就可以获取与此事件相关的所有新闻。
答案 1 :(得分:0)
创建具有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]
}