官术网_书友最值得收藏!

1.2 創建數據表結構

雖然Foxtable在外觀上和Excel非常相似,但本質上是完全不同的:Excel是電子表格,而Foxtable則使用數據庫。

以數值“2018年12月1日”為例,由于Excel并沒有嚴格的數據類型限制,在表格中可能輸入“20181201”,也可能輸入“2018121”“12/01/2018”或者“18121”,甚至直接是英文或漢字,這就會給后期的數據處理帶來很大的麻煩。為提升數據輸入的準確率,Excel數據管理員一般會通過設置公式等方法來限定數據的有效性(Excel 2013以后的版本稱為“數據驗證”)。盡管如此,往往還是會出現“百密一疏”的情況,到最后出統計報表時仍然避免不了再走一遍“數據規范化”的流程。

而Foxtable采用的數據庫管理方式,其最大特點就是規范化。比如,日期列就只能輸入日期格式的數據,數值列只能輸入數值,字符列只能輸入字符串……,既然如此,當使用Foxtable來管理數據時,首先就應該創建數據表結構,并給相應的列指定數據類型。

現以Excel下圖所示數據表為例,看看它們在Foxtable中是怎樣進行管理的。

1.2.1 創建表結構的4種方法

要在Foxtable中創建一個新的表結構是很簡單的,常用以下4種方法。

?在新建項目時創建或修改表結構

單擊【文件】中的【新建】命令按鈕,可在“創建項目”對話框中創建表,如下圖所示。

其中,“表A”“表B”“表C”是Foxtable自動生成的3個數據表,每個表的列數默認為10。在這個對話框中,既可以通過單擊【增加表】【刪除表】或【重命名】按鈕對表進行管理(比如僅保留“表A”并將其重命名為“訂單”),也可以單擊【上移行】或【下移行】按鈕調整選定表的列順序,單擊【刪除行】按鈕將不需要的列刪除。如果要設置的列數量大于10,可以將光標定位在最后一行的尾部,按“Enter”鍵或按“↓”鍵即可自動增加一列;如要修改指定行上的“列名”“長度”或“標題”,只需在相應單元格上雙擊,列類型的可選擇項則有10個。

請注意,這里的“列名”不能以數字開頭,更不能全是數字,也不能包括空格和各種符號(但可以使用下劃線);“列標題”則沒有任何限制,只要你覺得能準確地表達出語義就好。而且,“列標題”是可選的,當標題省略時,將自動以列名稱作為標題在表格中顯示。

由于Foxtable兼有辦公軟件和開發平臺兩種功能,當需要使用Foxtable開發自己的管理系統時,建議將“列名”設置為具有一定語義的英文單詞或是簡潔的中文。即便使用中文作為列名,也要注意簡潔,因為這樣更便于后期編寫程序代碼。

例如,有個用于保存客戶名稱的列,可以將列名設為拼音的簡稱“kh”,也可以設置為英文“custom”,而列標題可設為“客戶”,這樣在后期的程序編碼中將直接使用“kh”或“custom”,但用戶看到的列標題仍然是很容易理解的“客戶”。當然,為了后期項目維護的方便,盡量還是不要使用太過簡潔的列名,如“kh”之類的。事實上,對于習慣于Office辦公軟件的用戶來說,直接使用簡潔的中文名稱也是不錯的選擇。

當后期需要修改標題時,比如覺得用“客戶名稱”可能更為合適,那么只需將列標題改為“客戶名稱”即可,原來編寫的程序代碼無需作任何修改,因為列名并沒有發生變化,標題的修改不會對系統的正常運行產生任何影響。

?在當前項目中創建表結構

如果用戶希望直接在當前打開的項目中創建新表,可通過【數據表】功能區的【表相關】功能組進行操作,如下圖所示。

很顯然,所有涉及當前項目數據表的增加、刪除、重命名、復制、移動等操作,都集中在這個功能區中。單擊【增加表】按鈕,系統將彈出下圖所示的增加表對話框。

默認情況下,Foxtable在增加表時會自動生成10個列字段,可以根據需要對其進行修改。具體操作方法與新建項目時的修改表結構相同。

表結構設置完畢,單擊【確定】按鈕,還將彈出表名及表標題的設置對話框,如下圖所示。

關于表名和表標題的輸入規則與“列名”“列標題”完全相同。

在新表創建之后,如果不再需要系統自動生成的“表A”“表B”和“表C”,可分別選中它們,然后單擊【刪除表】按鈕予以刪除。刪除表時一定要慎重,因為這種操作是不可逆的,如下圖所示。

選擇表時,既可使用鼠標單擊表標題的方法,也可單擊表標題所在位置右側的下拉箭頭,在彈出的下拉列表框中進行選擇(這在項目中存在很多表時會非常方便)。

?在當前項目中以修改表結構的方式創建表

如果不喜歡上述兩種創建表的方式,也可以在Foxtable默認生成的3個表的基礎上直接修改,當表數量不夠時再單擊【增加表】按鈕添加。

假如希望修改“表A”的結構,可先選中該表,然后單擊【數據表】功能區的【表相關】功能組中的【其他】按鈕,如下圖所示。

這是下拉菜單按鈕,執行【查看表結構】命令。如要修改第一列,只需在相應的行上雙擊,即可彈出“更改列-第一列”對話框,這樣就可以修改“第一列”的相關設置。如下圖所示。

假如將“表A”修改為處理訂單數據的表結構,那么還應該給該表重新設置一個更具語義的表名。單擊菜單【數據表】→【表相關】中的【重命名】命令按鈕,在打開的對話框中進行設置,如下圖所示。

關于表名和表標題的重命名規則與“列名”“列標題”完全相同。

?在當前項目中以復制方式創建表

如果要創建的表結構和現有的表大同小異,可以采用“復制表”的方式創建新表。【復制表】按鈕在功能區【數據表】→【表相關】的【其他】下拉菜單中,如下圖所示。

假如要在“訂單”表的基礎上創建一個結構基本雷同的新表,可以先選中“訂單”表,然后單擊【復制表】按鈕,如下圖所示。

如果選中“僅復制結構”單選鈕,那么將自動創建一個結構完全相同的空表,后續再對該復制后的表稍作修改即可。復制表時,也可以選擇連同表中的數據一起復制。關于復制條件方面的知識,可參考14節。

1.2.2 數據表的列類型

在Foxtable中,數據表的列類型共有四大類、10小類,如下表所示。

由上表可以看出,數值型列共有6種,除了整數和小數的差別外,主要是范圍和精度的差別:范圍越大,精度(有效數字)越高,那么占據的存儲空間就越大,處理速度也就越慢。特別是高精度小數,除非確有需要;否則不要選用。那么究竟怎么選擇呢?有個簡單的方法:沒有小數的列選擇整數型,有小數的列選擇雙精度小數型,這會符合絕大多數場合的需要。唯一需要注意的是,整數的范圍并不大,在?2147483648~2147483647之間,如超出此范圍,可用雙精度小數代替。

小數的有效數字是指從左邊第一個不是0的數字算起,直到最后一個數字,就是一個數值的有效數字。例如,1324的有效數字是4位(1、3、2、4),13240的有效數字是5位(1、3、2、4、0),而0024的有效數字是兩位(2、4)。明白了有效數字的概念,有助于選擇合理的小數類型。例如,對于訂單表中的折扣列,范圍在0~1之間,精度通常不會超過3個有效數字,那么選用單精度類型完全符合要求。

現以訂單表為例,假如采用之前所介紹的第二種方法來創建表,應當把“產品ID”“客戶ID”設置為字符型,長度為3;“單價”和“折扣”設置為單精度小數,“數量”設置為短整數,“日期”設置為日期時間型,如下圖所示。

由于“訂單”表只有6列,而Foxtable默認生成的表有10列,后面多余的4列可以單擊【刪除行】按鈕予以刪除。修改后的“訂單”表結構如下圖所示。

同理,根據Excel中另外兩個數據表“產品”“客戶”的數據內容,再分別添加兩個表,即“產品”和“客戶”表,如下圖所示。

在數據表全部創建完成后,如果需要調整它們的位置,可在【數據表】功能區的【表相關】功能組中單擊【左移表】按鈕,將當前選中的數據表向左移動,單擊【右移表】按鈕可向右移動。除了菜單方式外,也可以通過拖動的方式來移動表。例如,要將“訂單”表移動到“客戶”表的后面,可以用鼠標選擇“訂單”表后按住鼠標左鍵不放,然后向右拖動到合適位置釋放鼠標即可。

1.2.3 快速修改表結構

在實際工作中,如果僅僅只是對指定表的某個列進行處理,可直接單擊【數據表】功能區的【列相關】功能組中的相關命令按鈕進行快速操作,如下圖所示。

例如,單擊【增加列】按鈕將在當前表的最后位置添加一列,單擊【插入列】按鈕將在當前光標所在列的前面插入一列,單擊【更改列】按鈕可重新設置當前光標所在列的表名、表標題及數據類型和長度,單擊【刪除列】按鈕可刪除當前光標所在列,單擊【左移列】和【右移列】按鈕可將當前光標所在列進行左移和右移。

至于列相關的其他操作,如【表達式】【重置列】【列屬性】等,后面還將有專門講解。

1.2.4 關于表結構需要注意的幾個問題

?不要忘記設置主鍵

對于數據管理來說,主鍵是一個非常重要的概念。

我們每個人都有一個身份證號碼,每個身份證號碼都是唯一的,在正常情況下,不會再有其他人的身份證號碼與你相同,這個號碼就是我們的“身份標識”,是社會生活能有序進行的基礎。

同樣,數據表中的每一行記錄都應該有一個主鍵值,這個主鍵值都是唯一的。不同的行其主鍵值絕對不會相同,所以行的主鍵值類似人的身份證號碼,是行的“身份標識”,是數據管理能有序進行的基礎。因此,在創建表時應該指定一列用于存儲行的主鍵值,這一列就是主鍵列。

可能有的讀者會問,之前在創建數據表時并沒有設置主鍵的選項啊,那怎么處理?事實上,凡是通過Foxtable創建的數據表,都會自動生成一個名為“_Identify”的列,這就是主鍵列,每增加一行,該列的值就會自動在上一行的基礎上加1,所以對于每一行來說,“_Identify”列的值都不會相同,是有效的“身份標識”。

出于安全考慮,凡是命名為“_Identify”的列,在修改表結構時都會被自動隱藏,以免用戶誤操作;由于該列僅用于數據行標識,日常操作中很少會用到,因而在顯示的數據表中同樣會被隱藏。

?列名稱最好使用有意義的英文單詞或簡潔的漢字,一旦設置就不要隨便修改

列名、列標題的設置規則與表名、表標題完全一致。

如果擔心這樣的列名在數據展示時不夠直觀,可以在創建表時給每個列設置列標題。列標題是列名更具描述性的表示,沒有任何書寫規則上的限制。

?對于復雜層次關系的列可使用多層表頭

要實現多層表頭的效果,只需在列名稱或者列標題中包含下劃線“_”即可。當然,最好是在列標題中使用下劃線,如下圖所示。

其中,東部用east中的e表示,西部用west中的w表示,季度用q表示,列標題用下劃線進行分層。顯示效果如下圖所示。

?謹慎使用標志列

Foxtable有兩個專門的標志列名稱:一個是“_Locked”,這是一個邏輯類型的列,用于標識數據行的鎖定狀態;另一個是“_Sort Key”,這是一個高精度的小數列,用于標識數據行在表中的顯示位置,以實現數據插入功能。這兩個標志列和主鍵“_Identify”列一樣,在修改表結構或顯示數據表時都是自動隱藏的。

● 鎖定標志列:_Locked

正常情況下,對任何一個數據表的數據行,隨時都可鎖定,鎖定后的數據行不能再修改。如果這個表在創建時沒有添加“_Locked”列,則在項目退出后重新進入時,那些鎖定的行會自動解鎖,仍然可以編輯。這是因為數據表沒有辦法記錄當時的鎖定狀態。

如要永久記錄數據行的鎖定狀態,只需在對應的數據表結構上增加一個列“_Locked”。

● 插入標志列:_Sort Key

由于數據庫本身并不存在記錄插入這樣的說法,每一條新增加的記錄都是按順序添加到數據表的最后一行。但在實際工作中,有時又會用到這樣的功能:比如,公司已經輸入了全部的人員名單,這個名單是按照職務高低順序輸入的;后來公司新來一位領導,按職位屬于公司第二把手,這就需要輸入到第二個人的前面,此時插入功能就派上用場了。

為實現這樣的插入功能,就必須在對應的數據表結構上增加一個列“_Sort Key”。說白了,這種插入也是變通方法實現的,它在數據庫中仍然排在最后一行,只不過在顯示數據時按“_Sort Key”排序罷了。

很明顯,為了實現上述兩個功能,數據表上都要單獨增加相應的標志列。如果數據量非常大,可能就會占用比較多的資源。因此,除非非常有必要;否則就不要使用這樣的標志列。

默認情況下,凡通過Foxtable創建的數據表都會自動增加上述兩個標志列。如果想在數據表中取消這樣的功能,可單擊【數據表】→【表相關】→【設置標志列】命令按鈕,然后根據需要選擇需要開啟的功能,如下圖所示。

上圖中取消了“客戶”表的“插入行標志列”的勾選,單擊【確定】按鈕后,該表中的“_Sort Key”列將被刪除,那么以后在“客戶”表中編輯數據時就不能再使用“插入行”的功能;同樣地,如果將“產品”表的“鎖定行標志列”取消勾選,那么該表的“_Locked”列也會被刪除,日常操作時即使在該表中鎖定了某個數據行,但在項目文件重啟后仍然會失效。

取消后當然也可以再加上。例如,再次勾選“客戶”表的“插入行標志列”復選框,單擊【確定】按鈕后就會在該表中重新加上“_Sort Key”列,插入行功能生效。添加“_Locked”列的方法同理。

盡管標志列的設定看起來非常方便,但在使用時仍然要慎重。一旦設置就不要再輕易修改,尤其是在有大量數據時。

?自動隱藏列

綜上所述,Foxtable提供了3個專用的列名,即_Identify、_Locked、_Sort Key,這3個列名默認情況下都是隱藏的,對普通用戶是不可見的。

在創建數據表時,如果將列名以“sys_”開頭,則該列同樣會被自動隱藏,如sys_標記。

需要注意的是,這種隱藏僅僅是針對非開發者而言的。對于開發者來說,以字符“sys_”開頭的系統列,和普通列無異,仍然可以顯示,也可以對其進行更改(初次打開Foxtable時默認都是使用開發者身份。至于開發者和非開發者的區別第3章將有講述)。

主站蜘蛛池模板: 嘉义县| 东方市| 望奎县| 长葛市| 墨竹工卡县| 涟源市| 富阳市| 河南省| 峨边| 长岭县| 许昌县| 万安县| 甘孜县| 司法| 和林格尔县| 富宁县| 山阳县| 左贡县| 轮台县| 陕西省| 昭觉县| 白河县| 资中县| 金华市| 深州市| 昌都县| 邹城市| 特克斯县| 阜阳市| 丽水市| 紫阳县| 偃师市| 尼玛县| 巴彦淖尔市| 和顺县| 甘孜| 泰和县| 城口县| 桐乡市| 曲阜市| 荣昌县|