【问题标题】:Normalizing CSV to MySQL?将 CSV 规范化为 MySQL?
【发布时间】:2012-01-15 10:12:20
【问题描述】:

我对整个“规范化表”是个新手。我有一个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

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

创建表`TEST__RUN_MAPPING`( `ID` int(11) NOT NULL auto_increment, `NAME` varchar(45) NOT NULL, `STATUS` varchar(20) NOT NULL, `PATH` 文本不为空, `TOOL` varchar(10) NOT NULL, `COMMENTS` 文本不为空, 主键(`ID`) ) 引擎=MyISAM 默认字符集=latin1 创建表`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, 主键(`ID`) ) 引擎=MyISAM 默认字符集=latin1 创建表`TEST__CONDITION_MAPPING`( `ID` int(11) NOT NULL auto_increment, `CELL_ID` int(11) 非空, `W_ID` int(11) 非空, `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) 非空, 主键(`ID`) ) 引擎=MyISAM 默认字符集=latin1

TEST__RUN_MAPPING ID 映射到 TEST__DATA_MAPPING NAME_ID

TEST__DATA_MAPPING CONDITIONS 映射到 TEST__CONDITION_MAPPING ID

TEST 中的所有 *ID_CONDITION_MAPPING 都映射到它们自己的表中,以使事物具有唯一性。

这些 csv 文件中的每一个在模拟中使用的技术都会有所不同,我通过 TEST__RUN_MAPPING 中的 NAME 列密切关注这一点。 Cell、Width(m)、Length(m)、Spacing(m)、VDD(V)、VSS(V) 和 Temp 都是经过扫描的值,但通常它们在每种技术中都是相同的,所以我将它们组合在一起在单独的表格中。

有没有其他方法可以让更有经验的人打破这种关系,从而获得最佳的阅读时间?更好的归一化?

【问题讨论】:

  • 如果您显示一些行 - 带有实际数据会很好。
  • 最佳阅读时间是什么意思?您是否已经遇到或预期性能问题?设计并没有给你这样的速度。设计为您提供了清晰性(和可维护性),而这反过来又使您能够实现速度,如果这被证明是一个问题。

标签: mysql database phpmyadmin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 2018-06-06
    • 2012-04-19
    • 2017-03-11
    • 2015-06-25
    • 2012-03-08
    • 2011-12-16
    • 2013-07-17
    相关资源
    最近更新 更多