資料庫正規化 (normalization)的定義: Database normalization is the process of organizing the fields and tables of a relational database to minimize redundancy and dependency. 資料庫正規化就是指把關聯式資料庫的欄位與表單做規劃,讓資料重覆性與相依性能夠降到最低。當然這個"資料重覆性與相依性能夠降到最低"情況下,還必須讓資料庫可以正常運作。 重複的資料 會浪費磁碟空間,並產生維護方面的問題, 不一致的相依性 會讓資料出錯誤。 資料庫正規化有一些規則。每條規則都稱為「正規形式 Normal Form」。如果遵守第一條規則,資料庫就稱為屬於「第一正規形式」。如果遵守前三條規則,資料庫就被視為屬於「第三正規形式」。 雖然可能會有其他層級的正規形式,但第三正規形式被視為大部分應用程式所需的最高階正規形式。雖然有許多正式規則與規格,但真實情況不一定永遠完全都相同。一般而言,正規化需要其他資料表,有些客戶也會嫌麻煩。如果您決定違反正規化前三個原則中的其中一個原則,請確定您的應用程式能夠掌握所有可能發生的問題…
DML (Data Manipulation Language)的SQL commands有: (1) SELECT ~ retrieve data from the a database 語法: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_na…
DDL (Data Definition Language) 的SQL commands有: (1)CREATE - to create objects in the database 建立資料庫(database) 語法: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name 更多參考: http://dev.mysql.com/doc/refman/5.0/en/create-database.html 例如: CREATE DATABASE mydatabase; 或是 CREATE DATABASE mydatabase CHARACTER SET big5 COLLATE big5_chinese_ci ; 或是 CREATE DATABASE mydatabase CHARACTER SET utf8 CO…
在資料表的欄位設定中,你可以設定~ Primary Key = 主鍵、Unique Key = 不重覆鍵、Index Key = 索引鍵,這三個代表的意義是什麼呢? 當你設定一個欄位為Primary Key,也代表這個欄位是not null,並且unique。 如果Primary Key為多欄位組合,例如(id1+id2),這個(id1+id2)也必須是not null & unique。 Primary Key 如下圖,原本可以null的欄位設定成Primary Key 之後,就變成no null,並且Key變成PRI。 其index結構如下圖: 但是如果我們把Primary Key取消,如下圖,PRI不見了,但是仍然是no null。 取消Primary Key之後的index變怎樣呢? 如下圖,index變空的。 要恢復原本的允許null,就必須再下指令,如下圖: Unique Key 當你設定一個欄位為Unique,代表這個欄位不能重覆,但是可以null,如下圖: index變怎樣呢? 如下圖,又有了index結構,表示設成unique,跟設索引是一樣的。 如果我們把Uniqu…
Data Types就是資料型態,在MySQL有三大類型的資料型態: (1) 數值資料 (2) 字串資料 (3) 其他如日期與時間資料。 (1) 數值資料 型態名稱 記憶體空間 數值範圍 無號數 (UNSIGNED) TINYINT 1bytes -128~127 0-255 SMALLINT 2bytes -32768~32767 0-65535 MEDIUMINT 3bytes -8388608~8388607 0-16777215 INT 或 INTEGER 4bytes -2147483648~2147483647 0-4294967295 BIGINT 8bytes -922337203685475808 ~922337203685475807 0-188446744073709550615 FLOAT(M,D) 4(<24)/8 依據變數值而定 無 FLOAT 4bytes 無 DOUBLE(M,D) 8bytes 依據變數值而定 無 DECIMAL(M,D) MB單位+2 依據變數值而定 無 「FLOAT」和「DOUBLE」型態的欄位可…
MySQL資料庫內儲存許多資料,但是要讓這些資料正確的儲存與顯示,我們可以在設定或是run time的時候去指定CHARACTER SET (字元集)。 我們可以從command line去看MySQL支援的CHARACTER SET = SHOW CHARACTER SET; 如上圖,有大家比較熟悉的如big5、ASCII等字元集。其他詳細內容請參考 MySQL字元集與校對規則 。 所謂字元集,就是指每個字符的內碼對應規則,例如我們使用big5的字元集儲存的資料,如果以其他的字元集來顯示,就會得到亂碼。 除此之外,還有一個COLLATION (翻譯成校對或是定序規則),如上圖,這個COLLATION是使用來排序使用的,例如big5的字元集有一個預設的COLLATION~ big5_chinese_ci,ci指的就是case insensitive (不分大小寫)。 定序規則還可以分成幾種類型: (1) CS: case sensitive 區分大小寫,如果不分大小寫就是CI (case insensitive) (2) AS: accent sensitive 區分腔調,如果不分腔調就是AI (accent insensitive) (3) …
SQL Command有四大類型,各是DDL/DML/DCL/TCL。 DDL ( Data Definition Language ) CREATE - to create objects in the database ALTER - alters the structure of the database DROP - delete objects from the database TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed COMMENT - add comments to the data dictionary RENAME - rename an object DML ( Data Manipulation Language ) SELECT - retrieve data from the a database (也有說select是DRL: Data Retrieval Language) INSERT - insert data into a table …
Data (資料) --> Information (資訊) --> Knowledge (知識) --> Wisdom (智慧) 的關係如下圖: 要從 Data (資料)變成Information (資訊),至少需要先把Data (資料) 先結構化、系統化,然後再從結構化、系統化後的資料去查詢,而產生Information (資訊) 。 當人們去使用各種Information (資訊)進行分析,而讓人們瞭解問題的答案,就產生了Knowledge (知識) 。 當人們知道了問題的答案,思考過後進一步瞭解為什麼要這樣解決問題,就形成了Wisdom (智慧) 。 Data只是一堆symbols,人們可能透過這些symbols也能得到資訊,但是都只是片斷而非系統性的。 當Data變成Information之後,人們就得到了who、what、where、when之類的訊息。 這些Information經過分析的過程變成Knowledge,讓人們知道了how,如何去解決問題。 集合更多的Knowledge,讓人們知道了why,就形成了Wisdom (智慧)。 更多參考: http://www.systems-thinking.org…
RDBMS 是指Relational Database Management System,關聯式資料庫管理系統,它是一個以關聯模式為基礎的資料庫管理系統。資料庫管理系統 (DBMS)是許多程式的集合,讓使用者得以定義、建構,與處理資料庫。 資料庫系統(Database System)包括了資料庫(Database)、資料庫管理系統(DBMS),也可以再加上其他的開發工具,或是應用系統。但是資料庫(Database)與資料庫管理系統(DBMS),是資料庫系統(Database System)最核心的部分。 這裡我們必須再解釋,什麼是關聯模式(Relational Model)? 什麼是資料庫? 什麼是資料庫管理系統? 所謂資料庫( Databse ),就是指有組織的資料集合,當需要這些資料時,可以快速的從中取得。所以其實資料庫並不局限一定是數位的資料,只要符合以上定義,都可以說它是資料庫。 但是狹義的資料庫,是指以一定方式儲存在一起、能為多個使用者共享、具有儘可能小的冗餘度、與應用程式彼此獨立的資料集合,在這個定義下Word,Excel就不算是資料庫。 所謂關聯模式( Relational Model ),是基於謂詞邏輯和集合論的一種資料模型,在…
什麼是SQL? 有人說SQL是Structured Query Language的縮寫,也有人說SQL不應該是Structured Query Language的縮寫。 為什麼有人說SQL不應該是Structured Query Language的縮寫呢? 因為認為SQL不只有進行Query(查詢),它還有其他功能,所以怎麼會是「結構式查詢語言」呢? 但是在 Oracle的文件 中,確實也把SQL寫成 Structured Query Language。 在Wikipedia的 SQL說明 中,雖然也說SQL就是Structured Query Language,但是也於另外篇幅中點出 SQL定義的爭論 。 SQL原本是 Raymond F. Boyce與Donald D. Chamberlin,於1970年所開發出來的, 我們再從SQL的發明人 Raymond F. Boyce 的資料中,看到原本SQL是稱為~ S tructured E nglish Que ry L anguage,簡稱為SEQUEL,後來才改稱為SQL。 所以SQL是Structured Query Language的縮寫,是沒有問題的,只是它到底是不是如名所說的是Structur…