2015-05-13 45 views
0

我需要創建一個存儲以下內容的數據庫(總共約5,765個條目):http://s18.postimg.org/s73exwemf/Capture.jpg我的MySQL模式有意義嗎?任何建議?

我正在使用MySQL Workbench創建我的模式。到目前爲止,我有一個表具有以下的列:

EPSG代碼(INT) - PK,NN

CRS_NAME CHAR(50) - UQ

CRS_TYPE - ENUM(」投影」, '地理2D', '地理3D', '地心', '垂直', '化合物')

PROJ_FILE - CHAR(800)


我的dataypes是否有意義?通常,我將使用EPSG代碼檢索CRS名稱,類型和proj文件內容。但有時,唯一可用的信息可能是CRS名稱。這就是爲什麼我讓CRS_NAME成爲唯一的索引。

這有道理嗎?我是SQL新手,到目前爲止我都很享受。

+0

歡迎來到Stack Overflow!與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 刪除 - 從帖子)。順便說一句,它是「提前致謝」,而不是「先進的感謝」 –

回答

1

下面是在大多數情況下,個人喜好是近10年來與數據庫(主要是MySQL)合作開發的。

  • CRS_NAME:獨特的按鍵聽起來適合我。
  • CRS_TYPE:我傾向於遠離數據庫中的枚舉。相反,我建議一個單獨的CRS_TYPE表,並在表中放置CRS_TYPE_ID字段 而不是枚舉類型。我不會讓CRS_TYPE.ID爲 自動增量;理想情況下,您希望它以任何可能使用的編程語言反映枚舉中使用的值。 (從技術上講,附加表僅供 文檔,更容易報告的目的必要的。)
  • PROJ_FILE:TINYTEXTMEDIUMTEXTTEXT,等...可能是一個更好的選擇(或同等BLOB S)。 CHAR(800)將使用800(或更多 取決於字符集)字節,不管它是否不包含任何內容或者是否爲 已滿。 VARCHAR(800)可能會更好(從空間使用的角度來看),但如果使用MyISAM引擎 ,會導致數據行是動態的(減慢 查詢)。無論使用哪種引擎,TEXT和BLOB類型只佔用他們需要的空間,並且不像「VARCHAR」那樣「分割」表格。 不足之處是他們在 和索引內搜索要複雜一點。
+0

謝謝!這是相當有益的!它會看起來像這樣?http://s15.postimg.org/ sab4r2d6h /捕獲。jpg現在我試圖瞭解如何將合適的CRS類型分配給我查找的任何EPSG。 – c47v3770

+0

CRS_TYPE應該只需要一個id字段和一個'type_name' varchar(32)字段。開始時,它只有6行(type_name fields =「Projected」,「Geographic」等),並且在需要更改原始枚舉定義的情況下只需要新行。另外,您不需要在'TEXT'字段中指定長度。 – Uueerdo

+0

甜!我爲所有noob問題表示歉意。感謝您分享知識! – c47v3770

相關問題