将CSV规范化为MySQL?

时间:2011-12-07 21:53:07

标签: mysql database phpmyadmin

我是整个“规范化表”的新手。我有一个csv文件,其内容如下:

Cell,Width(m),Length(m),Spacing(m),VDD(V),VSS(V),Temp,Param,Value,Path,TOOL
pmos_var12,5e-03,5e-03,5e-03,0.5,0,0,delay[s],4.65e-06,/home/user/tests/run2/pspice
pmos_var12,5e-03,5e-03,5e-03,0.5,0,10,delay[s],6.2e-06,/home/user/tests/run2/pspice
pmos_var12,5e-03,5e-03,5e-03,0.5,0,25,delay[s],7.46e-06,/home/user/tests/run2/pspice
pmos_var12,5e-03,5e-03,5e-03,0.5,0,70,delay[s],8.98e-06,/home/user/tests/run2/pspice
pmos_var12,5e-03,5e-03,5e-03,0.5,0,100,delay[s],9.56e-06,/home/user/tests/run2/pspice
nmos_var12,5e-03,5e-03,5e-03,0.5,0,0,delay[s],4.65e-06,/home/user/tests/run2/pspice
nmos_var12,5e-03,5e-03,5e-03,0.5,0,10,delay[s],6.2e-06,/home/user/tests/run2/pspice
nmos_var12,5e-03,5e-03,5e-03,0.5,0,25,delay[s],7.46e-06,/home/user/tests/run2/pspice
nmos_var12,5e-03,5e-03,5e-03,0.5,0,70,delay[s],8.98e-06,/home/user/tests/run2/pspice
nmos_var12,5e-03,5e-03,5e-03,0.5,0,100,delay[s],9.56e-06,/home/user/tests/run2/pspice

我已经创建了这些表来存储数据:

CREATE TABLE `TEST__RUN_MAPPING` (
 `ID` int(11) NOT NULL auto_increment,
 `NAME` varchar(45) NOT NULL,
 `STATUS` varchar(20) NOT NULL,
 `PATH` text NOT NULL,
 `TOOL` varchar(10) NOT NULL,
 `COMMENTS` text NOT NULL,
 PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE `TEST__DATA_MAPPING` (
 `ID` int(11) NOT NULL auto_increment,
 `NAME_ID` int(11) NOT NULL,
 `CONDITIONS` int(11) NOT NULL,
 `VALUE` varchar(10) NOT NULL,
 PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE `TEST__CONDITION_MAPPING` (
 `ID` int(11) NOT NULL auto_increment,
 `CELL_ID` int(11) NOT NULL,
 `W_ID` int(11) NOT NULL,
 `L_ID` int(11) NOT NULL,
 `SPACE_ID` int(11) NOT NULL,
 `VDD_ID` int(11) NOT NULL,
 `VSS_ID` int(11) NOT NULL,
 `TEMP_ID` int(11) NOT NULL,
 `PARAM_ID` int(11) NOT NULL,
 PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

TEST__RUN_MAPPING ID映射到TEST__DATA_MAPPING NAME_ID

TEST__DATA_MAPPING条件映射到TEST__CONDITION_MAPPING ID

TEST _CONDITION_MAPPING中的所有* ID都会映射到自己的表格,以便让事物与众不同。

这些csv文件中的每一个都将在模拟中使用的技术方面有所不同,我通过TEST__RUN_MAPPING中的NAME列对此进行了监控。单元,宽度(m),长度(m),间距(m),VDD(V),VSS(V)和Temp都是扫描的值,但通常它们对于每种技术都是相同的,因此我将它们组合在一起在另一张表中。

有经验的人是否有其他方式可以打破这种关系,使其具有最佳的阅读时间?更好的规范化?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个结构,那么我就不会从运行表中分离条件表。他们肯定会有一对一的关系。那么为什么不将它们放在同一张桌子上呢。特殊情况的条件。

另外我会小心将'TEXT'块放在记录中。 TEXT和Blob可能会导致一些性能问题。 mysql 5中的varchar可以高达65,000个字符。对于路径,您不需要超过1024个字符。所以varchar(1024)应该足够用于路径。