第一步一般都是建立資料庫,除非是使用第三方的資料庫服務。
當建立一個資料庫的時候,會指定一個擁有者來執行和新建語句。
通常,只有擁有者(或超級使用者)才有權對資料庫中的物件進行任意操作。
如果想讓其他使用者使用,就必須賦予他們權限。 (推薦學習:PHP程式設計從入門到精通)
應用程式永遠不要使用資料庫擁有者或超級使用者帳號來連接資料庫,因為這些帳號可以執行任意的操作,比如說修改資料庫結構(例如刪除一個表)或清空整個資料庫的內容。
應該為程式的每個面向建立不同的資料庫帳號,並賦予對資料庫物件的極有限的權限。
僅分配給能完成其功能所需的權限,避免同一個使用者可以完成另一個使用者的事情。 這樣即使攻擊者利用程式漏洞取得了資料庫的存取權限,也最多只能做到和該程式一樣的影響範圍。
鼓勵使用者不要把所有的事務邏輯都用 web 應用程式(即使用者的腳本)來實現。
最好用視圖(view)、觸發器(trigger)或規則(rule)在資料庫層級完成。 當系統升級的時候,需要為資料庫開闢新的接口,這時就必須重做所有的資料庫客戶端。
除此之外,觸發器還可以透明和自動地處理字段,並在調試程式和追蹤事實時提供有用的信息。
如:利用單例模式(Singleton)建立資料庫連線類別
#資料庫連線物件通常會在整個專案中被共用使用,沒有必要在每一次使用時都實例化一個對象,不僅低效而且浪費資源。因此採用單例模式的類別來確保它在整個應用系統中是唯一的。
單例模式的類別通常是採用靜態的類別方法 getInstance() 來實現的,這個靜態方法只傳回一個該類別的唯一實例。在第一次呼叫此方法時,該方法將建立一個實例,存放在一個私有的靜態變數中,並傳回該實例。在下一次呼叫時,將不再建立新的實例,而是傳回第一次所建立的實例。
採用單例模式的類別的建構子通常設為私有,以便防止直接實例化該類別而建立新的實例。
<?php Class DBConnect { private static $Instance = null; public static function getInstance() { if( !isset(self::$Instance) ) { self::$Instance = new self(); } return self::$Instance; } private function __construct() { … } private function __clone() {} } ?>
以上是php中資料庫怎麼設計的詳細內容。更多資訊請關注PHP中文網其他相關文章!