0

我有几百个文本文件,其中的数据如下:

Capo: 77/100
Define: 0/70
Largo: 85/85
Facto: 16/75

数据库适合这个吗?如果是这样,我想不出一种正确构建表格的方法。

有人可能会考虑为CapoDefineLargo、制作列,Facto但是在这数百个文本文件中,大约有200 个不同的单词,如果要这样做的话,每个单词都需要一个列。

4

3 回答 3

2

如果没有更好的解释,很难确切地知道这些数据的含义。但是将所有这些东西都放在 DBMS 表中并不难。创建显示的列

  1. 单词
  2. 分子
  3. 分母
  4. 文件名(文件来自的文本文件)。

然后,您可以使用这样的查询来处理和聚合单词。

SELECT word,
       SUM(numerator)   AS numerator,
       SUM(denominator) AS denominator
  FROM words
 GROUP BY word

去小提琴:http ://sqlfiddle.com/#!2/d0e4d/1/0

于 2012-09-04T20:41:38.253 回答
1

鉴于您的上述格式,我将创建下面的结构。主键是单词,意味着它只能出现一次。我假设这两个值不超过100,因此一tinyint列就足够了。

CREATE TABLE words (
  word varchar(15) NOT NULL PRIMARY KEY,
  val1 tinyint UNSIGNED DEFAULT 0,
  val2 tinyint UNSIGNED DEFAULT 0)

如果您将多次出现该单词,您可以考虑添加一个代理键作为主键,例如:

CREATE TABLE words (
  id int AUTO_INCREMENT PRIMARY KEY
  word varchar(15) NOT NULL,
  val1 tinyint UNSIGNED DEFAULT 0,
  val2 tinyint UNSIGNED DEFAULT 0)
于 2012-09-04T20:37:17.843 回答
1

您可以将它们存储在一种键/值结构中,如下所示;

Values:
Key    v1  v2
-------------
Capo    0 166
Largo  77  77
Facto  10  20

如果它们相互关联,您可以给这些值一个父 id 来对它们进行分组:

Values:
Parent Key    v1  v2
---------------------
0      Capo    0 166
0      Largo  77  77
0      Facto  10  20
1      Capo    5  88

如果单词是固定的,您可以将它们规范化为不同的表:

Words:
WordID  Word
------------
1       Capo
2       Largo
3       Facto
4       Define

Values:
Parent WordId v1  v2
---------------------
0      1       0 166
0      2      77  77
0      3      10  20
1      1       5  88

作为替代方案,您可能希望看起来像MongoDB这样的存储。它允许您存储每个具有不同属性的“文档”。

于 2012-09-04T20:43:07.427 回答