前段時間因為項目需要搭建一個web服務器,后端Web框架我調研了幾個,比如Python的Flask,Django,
NodeJs的Express,JavaEE的Spring,以及C++的CppCMS, 經過權衡拓展性開發(fā)效率,最后選擇了Django。
也許Python不是最好的選擇,但至少目前來看工作的還挺順利。

但是當時對于數據庫的選擇,卻走了一點彎路。因為平時對于數據庫接觸不多,所以一開始選擇了MongoDB
作為數據庫。這在初期是沒啥問題的,但后來隨著項目推進,產品經理不斷地增加需求(我要...我要...我還要...),
數據庫中各個collection的耦合讀也越來越高,甚至同一個collection也有大量的冗余數據。雖然也有辦法進行優(yōu)化,
但是我經過查閱資料和進度考量,最后還是決定趁著項目尚未release,將NoSQL替換為關系型的數據庫。

關系數據庫簡介

關系數據庫由由埃德加·科德(IBM)在1969年左右提出。自推出后就成為商業(yè)應用的主要數據庫模型(與其他數據庫模型,
如分級,網絡或對象模型相比)。如今已有許多商業(yè)關系數據庫管理系統(tǒng)(RDBMS),如Oracle,IBM DB2和Microsoft SQL Server等。
也有許多免費的開源關系數據庫,如MySQL,mSQL(mini-SQL)和嵌入式JavaDB(Apache Derby)等。

關系數據庫將數據存儲在表(table)中。一個表由行和列組成。行稱為記錄(record)或元組(tuple),列稱為字段(field)或屬性(attribute)。
數據庫的表類似于電子表格。不過關系數據庫可以在這些表格中產生關聯(lián),使得可以有效地存儲大量的數據,以及高效地檢索數據。

SQL(結構化查詢語言)通常用來對關系數據庫進行操作。

關系數據庫設計步驟

數據庫的設計對經驗的要求比理論要高,因為你必須作出許多選擇。數據庫通常是為了某種應用的需求而高度定制的,因此,
通常在數據庫設計的指導里,通常都是指出不要做什么而不是