資料庫設計的作用:
隨著專案的規模變大 設計變得越來越重要
良好的資料庫設計能節省資料的儲存空間,能夠保證資料的完整性,方便進行資料庫的應用系統開發
糟糕的設計會產生冗餘 儲存空間浪費,記憶體空間浪費 資料更新和插入的異常
資料庫設計的步驟(生命週期)
1.需求分析:分析客戶的業務和資料處理需求 明確客戶意圖
2.概要設計階段:設計資料庫的e-r模型圖 保證需求完整
3.詳細設計階段: 應用三大正規化進行審核 完善
4.**編寫:構建真實的資料庫
5.軟體測試:測試資料庫是否能滿足真實的場景需求
6.安裝部署: 試執行階段
7.生產環境使用
需求:設計乙個酒店管理系統 能夠事項旅客入住手續和客房管理
a需求分析:
1.收集資訊 與有關人員進行溝通 座談詳細了解相應的需求
2.標識實體 儲存各類資訊
旅客資訊 ,客房資訊
3.標識實體屬性
旅客:編號 姓名 性別 身份證號 手機號 入住時間 退房時間 押金 消費總金額 入住客房
客房:編號 客房號 客房型別 客房床位數 客房入住人數 客房狀態
4.標註實體關係:
旅客入住客房
b概要設計:e-r圖
實體間關係的分類:
一對一 身份證號唯一屬於乙個公民(這種關係完全可以放在一張表中)
一對多 客房和客人
多對一 客人和客房
多對多 學生和課程屬於多對多 但是往往 商品和訂單 (拆分為兩個一對多)
c詳細設計 先進行規範化 然後再進行模型圖繪製
二維模型圖 visio 或者 powerdesigner
1.確保每列的原子性(不可分割) 即一張表中的每個字段儲存的資訊足夠單一
2.一張表只能表示一件事 如果在一張表中描述過多的事情 則會導致資料的冗餘和不完整
3.表的字段之間不允許出現傳遞依賴
a-> b -> c a 和 c就是傳遞依賴
可以將傳遞依賴的資訊抽取到多張或者一張資料字典表
資料字典表:
型別:大床房 雙人間 豪華雙人間…
客房狀態:已預定 已入住 空閒
酒店設施:是否有早餐 有無空調 有無窗戶 有無停車位 有無wifi
規範化和實際效能/複雜度等方面的關係
為降低查詢的複雜度和提公升效能:
1.允許一定的冗餘列
2.允許一些特別的計算列
根據實際情況和需求決定規範和效能的取捨
--%表示任意機器 localhost 表示 本機
--建立使用者:
create
user xiaoming@local host inentified by
`ming123`
;-- 給使用者授權(可以只是授權 也可以授權的同時建立對應的使用者)
grant 授權名 on 資料庫.資料表名 to 使用者名稱@本機位址
-- 授權時建立使用者(all表示所有許可權)
grant
allon 資料庫.
*to xiaoming@本機位址 inentified by
'ming123'
-- 刪除使用者 可以同時刪除多個使用者 以,隔開
drop
user xiaoming@本機位址
-- 修改使用者密碼
--1.找到mysql的user表 然後修改對應的使用者密碼(root使用者才能修改 修改自己或普通使用者)
use mysql;
update
user
set password = password =
('密碼'
)where
user
= xx and host = ***;
-- 2.普通使用者和root都可以使用
set password = password(
'密碼');
--root才能改其他的
set password for 使用者名稱@主機位址 = password = ('密碼');
--3.利用dos程式 mysqladmin
mysqladmin -u使用者名稱 - p舊密碼 password '新密碼'
;-- 4 當丟失了密碼如何找回 僅限root
在mysql的配置檔案 my.ini 新增一行 ship-
grant
-table
這樣的話登入root 不需要輸入密碼 進去之後按上方的規則可以修改密碼 記得用完之後再將選項刪除
三十 php之PDO抽象層 連線mysql
php 資料物件 pdo 擴充套件為php訪問資料庫定義了乙個輕量級的一致介面。pdo 提供了乙個資料訪問抽象層,這意味著,不管使用哪種資料庫,都可以用相同的函式 方法 來查詢和獲取資料。示意圖如下 設定pdo的開啟狀態。在php.ini檔案中找到如下 extension php pdo.dll 開...
學習筆記(三十)
data cur type cursor,table spfli type table of spfli,wa spfli type spfli.start of selection.open cursor cur for select from spfli where cityto new yor...
每日程式設計 (三十)
題目描述 給定 pushed 和 popped 兩個序列,只有當它們可能是在最初空棧上進行的推入 push 和彈出 pop 操作序列的結果時,返回 true 否則,返回 false 示例 1 輸入 pushed 1,2,3,4,5 popped 4,5,3,2,1 輸出 true 解釋 我們可以按以...