2011-12-07 76 views
2

我是新來的整個「規範化表」的東西。我有內容的csv文件,如下所示:正常化CSV到MySQL?

 
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名_ID

TEST__DATA_MAPPING CONDITIONS映射到TEST__CONDITION_MAPPING ID

全部* ID在測試 _CONDITION_MAPPING映射到自己的表,以便擁有獨特的事物。

這些csv文件中的每一個都會在模擬中使用的技術上有所不同,並且我會在TEST__RUN_MAPPING中使用NAME列對此進行標記。單元格,寬度(m),長度(m),間距(m),VDD(V),VSS(V)和溫度都是掃描的值,但通常每個技術都是相同的,所以我將它們組合在一起在一張單獨的桌子裏。

有沒有其他的方式讓一個更有經驗的人可以分解這種關係,使它有最佳的閱讀時間?更好的正常化?

+0

如果您顯示了一些行 - 包含實際數據,那就太好了。 –

+0

添加了一些虛擬數據 – monkeyyy

+1

最佳閱讀時間是什麼意思?你已經有或期待性能問題?設計不會給你速度。設計爲您提供了清晰度(和可維護性) - 而且這反過來又讓您有能力實現速度,如果事實證明這是一個問題。 – 2011-12-25 23:32:42

回答

0

如果我正確理解這個結構,那麼我就不會在運行表中分離條件表。他們肯定會有一對一的關係。那麼爲什麼不讓他們在同一張桌子上。這個問題的條件。

另外,我會小心將'TEXT'塊放入記錄中。 TEXT和Blob可能會導致一些性能問題。 MySQL 5中的varchar可以高達65,000個字符。對於路徑,你不應該需要超過1024個字符。所以varchar(1024)應該足夠用於路徑。