資料型別與資料類的一些感想

2021-04-19 19:21:05 字數 1440 閱讀 8473

在長時間做電表集抄軟體的時候,習慣於將資料層層封裝,而且資料物件全部做成可以序列化的。只不過以前在存貯的時候,使用的還是關係型資料庫的思想,寫dal時候做資料分解比較痛苦。曾有心將序列化後的資料物件直接存貯,可又無法進行快速查詢了,所以此想法無解。

現在接觸到的turbogears,zope等,都自己組織資料物件的存貯方式。其實他們也是使用的關係型資料庫方式儲存,不過發現在儲存資料的時候還是與我以前做得不一樣,貌視可以解決一些矛盾。但目前階段我只能憑感覺來分析這些,暫時沒有深入到細節中去。

目前還有乙個專案,就是料單與ead軟體的介面。現就這個介面軟體來思考一下資料類的組織。比如,protel可以輸出cvs檔案,那麼我可以將csv檔案視為資料來源,讀入設計資料記錄。然後再去查表,生成最終的料單資料。v1版本屬試驗版本,當時使用的是主從表結構生成結果,在實際使用的時候,會遇上擴充套件列資料的情況。這種時候還是想到物件資料了。

將料單視為乙個完整的物件,可以分解出子物件。首先是pcb上的元器件料單物件,這是從剛才提到的料單檔案中分析而來的。另外還有一些配件,如結構件、標籤貼、合格證等等。現在,我們重點考慮元器件物件,結構件等其他物件暫時不在這裡討論。

元器件可以有幾種分類方式。從焊接的角度看,有直插與貼片兩大封裝分類;從元器件型別上來看,有電阻、電容等;有精度屬性的器件,從精度上看,有1%, 5%等等,還有的器件對精度無要求。同時,還有些器件是對耐壓有要求的,也可以在本層次分別對待;從器件的封裝代號來看,有 0402 / 0603等代號,甚至還有許多廠標封裝代號。

所以,我們可以考慮分兩層來組織元器件的資料物件。no1.= 焊接類別;n0.2= 精度/耐壓等; 然後就是一些固有屬性,比如封裝代號,值/規格等等。

元器件**為類容器,add到該**中的器件,可以這樣維護:有乙個索引表,記錄元器件的基本屬性,含:器件焊接分類+元器件類+值/規格/型號,以及以上屬性的md5碼。物件列表的key為上述**的md5碼,值為該資料物件。這個物件根據不同器件,還會有不同的單類屬性。派生於元器件類。

討論到此,已規範的元器件都可以組織在**物件中了。但是,還有一些器件是無法規範的,比如一些臨時非標用料。這些用料在元器件庫中是無法維護的,而且在料單中只需要註明 [非標] ,並設定為紅字顯示。考慮下來,可以單獨分乙個類,這個類的原則是只要滿足如下條件之一:器件字首非標,器件封裝非標,規格非標。該類不作後續的查詢分析,也不可能專門為每一種器件設計查詢分析類。但它的共性就是將資料原封不動地提供到料單的元器件**的末尾,紅色標記就可以了。可以定義為:非標件類。

好了,資料基本上就可以組織完成了。可分類的按器件型別分好,如電阻電容分別有電阻查詢類/電容查詢類來處理查詢,不可分類的就是上面提到的非標器件。在索引表中排好序,整理好,並將這些資料貼到word的**中,就完成了料單軟體的元器件資料生成工作。

至於結構件等,可以再寫一些資料庫軟體來維護,每種表型(含改型),建立乙個結構件資料表。從上述資料表中取出資料,貼入料單文件的《其他器件》**,整個料單軟體就生成完成了。

隨心而寫,某些點可能有點亂,明天再來細細理順。

MySQL的一些資料型別

如果乙個float型資料轉成二進位制後的第32位之後都是0,那麼資料是準的 如果乙個float型資料轉成二進位制後的第32位之後不全為0,則資料就會存在誤差 float和double型別的區別和誤差 但是decimal型別是mysql官方唯一指定能精確儲存的型別,也是dba強烈推薦和金錢相關的型別都...

c 中一些常見的資料型別

學了也有一兩年的語言了,到現在連基本的資料型別的大小也不是很清楚,或者說是根本就不知道。雖然以前也都看過,但真容易忘。其實感覺好像也不能怪我,誰叫它不經常被用到,或是說不經常被我給用到。其實這也只是為自己找了乙個藉口罷了。直到今天,遇到memset 函式,才想徹底弄清楚一些基本的資料型別的大小,此處...

SQL中一些資料型別的區別

char n 固定長度為 n 個位元組的且非 unicode 的字元資料。n 必須是乙個介於 1 和 8,000 之間的數值。儲存大小為 n 個位元組 如varchar 6 當字段為qqq時,資料庫實際占用空間為也要6個位元組,而不是3個位元組,但只允許儲存6個位元組,一般中文佔兩個位元組 ncha...