我正在为我的一个班级开发一个项目,我们得到一个非常大的数据集,其中包含许多新闻文章,这些文章已被分成单个句子并随机化。我们的工作是将所有片段重新组合成原始新闻文章。我们给出的数据具有一定的结构,我们可以使用它来对其进行排序。
我的问题是如何将数据存储在数据库中。我有两个想法:
1)为每篇新闻文章创建一个新表,然后在处理它们时将相应的句子添加到该表中。我们的数据预计为几GB,因此可能有数百或数千篇文章。但是,在排序之后,不需要那么多的查询,并且文章的后处理重组会非常简单。
2)我基本上可以在DB中创建一个大表,并使用列作为某种类型的键来区分哪个句子到哪个文章。但是,当我必须将文章重新组合在一起时,这将需要大量的查询和处理才能使一切正确,更不用说提出有效的密钥方案。
此项目之后的项目(将基于我现在创建的框架构建)将使用博客(可以更改)而不是静态新闻文章。因此,我不仅要处理对句子进行排序,还要处理动态删除,更改或添加新句子。
在性能,可靠性和可维护性方面,哪个选项更好?我也对任何其他更好的方法持开放态度。
答案 0 :(得分:2)
您可能需要考虑使用3个表,并执行以下操作:
Article
-------
(PK) ArticleID
Sentence
--------
(PK) SentenceID
ArticleSentence
---------------
(PK) ArticleSentenceID
(FK) ArticleID
(FK) SentenceID
ArticleSentence表将用于将句子映射到文章,同时使用多对一关系。显然,您的表将根据需要包含更多列,但这是通过第三个表关联两个表的一般想法。
通过这种方式,您在处理数据方面也给自己相当大的灵活性。当然,通过将每篇文章分成一个单独的表格,很容易得到该文章的句子。但是,如果你想要关联类似的文章怎么办?通过我提到的方式,您还可以查询具有特定句子的所有文章。将文章和句子保持为两个独立的表格将使您的生活更加轻松。