我有几百个文本文件,其中的数据如下:
Capo: 77/100
Define: 0/70
Largo: 85/85
Facto: 16/75
数据库适合这个吗?如果是这样,我想不出一种正确构建表格的方法。
有人可能会考虑为Capo
、Define
、Largo
、制作列,Facto
但是在这数百个文本文件中,大约有200 个不同的单词,如果要这样做的话,每个单词都需要一个列。
如果没有更好的解释,很难确切地知道这些数据的含义。但是将所有这些东西都放在 DBMS 表中并不难。创建显示的列
然后,您可以使用这样的查询来处理和聚合单词。
SELECT word,
SUM(numerator) AS numerator,
SUM(denominator) AS denominator
FROM words
GROUP BY word
鉴于您的上述格式,我将创建下面的结构。主键是单词,意味着它只能出现一次。我假设这两个值不超过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)
您可以将它们存储在一种键/值结构中,如下所示;
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这样的存储。它允许您存储每个具有不同属性的“文档”。