資料庫設計
需求分析
*1.使用者模組
用於記錄記錄註冊使用者資訊
包括屬性:使用者名稱,密碼,**,郵箱,身份證號,位址,姓名,暱稱...
可選唯一標誌屬性:使用者名稱,**,身份證號
儲存特點:隨系統上線時間逐漸增加,需要永久儲存
*2.商品模組
用於記錄記錄註冊使用者資訊
包括屬性:商品編碼,商品名稱,商品品類,重量,**...
可選唯一標誌屬性:商品編碼,商品名稱
儲存特點:對下線商品可歸檔
*3.訂單模組
用於記錄記錄註冊使用者資訊
包括屬性:訂單號,使用者姓名,使用者**,收貨位址,商品編號,數量,**,訂單狀態,支付狀態,訂單型別...
可選唯一標誌屬性:訂單號
儲存特點:永久儲存(分表,分庫儲存)
邏輯設計
*1.第一正規化
資料庫表中的所有欄位都是單一屬性,不可再分
例如:studyno | name | *** | contact
20040901 john male email:[email protected],phone:222456
20040901 mary famale email:[email protected] phone:123455
以上的表就不符合,第一正規化:主鍵studyno重複(實際中資料庫不允許重複的),而且contact欄位可以再分
所以變更為正確的是
studyno | name | *** | email | phone
20040901 john male [email protected] 222456
20040902 mary famale [email protected] 123455
*2.第二正規化
不存在非關鍵字段對於候選關鍵字段的部分函式依賴;例如:表中的關鍵字段(商品名稱)決定了非關鍵字段(**、描述、重量、有效期、飲料);關鍵字段(**商名稱)決定了非關鍵字段(**商**),所以關鍵字段和非關鍵字段之間存在著部分函式依賴;通俗的來說:就是第二正規化要求表的主鍵和非主鍵之間「不能」有一毛錢的關係,這樣才不會產生部分函式依賴;而屬於完全函式依賴;這樣就可以定義成:表中的非關鍵字段要和關鍵字段存在著完全函式依賴
studyno | name | *** | email | phone | classno | classaddress
01 john male [email protected] 222456 200401 a樓2
01 mary famale [email protected] 123455 200402 a樓3
這個表完全滿足於第一正規化,
主鍵由studyno和classno組成,這樣才能定位到指定行
但是,學生和班級是多對多關係,所以studyno和classno才能標誌出乙個學生,classaddress部分依賴於關鍵字(classno-〉classaddress),
存在問題 :
插入異常:如果沒有200401這個課號,則找不到這個課號資訊
刪除異常:本例刪除乙個200401的學生資訊,則也找不到這個課號資訊
更新異常: 如果要更新200401課號位址(只更新乙個學生的),勢必要更新所有200401課號學生的
資料冗餘:提供多個學生,會有許多課號位址冗餘
所以要變為兩個表
表一studyno | name | *** | email | phone | classno
01 john male [email protected] 222456 200401
01 mary famale [email protected] 123455 200402
表二classno | classaddress
200401 a樓2
200402 a樓3
*3.第三正規化
studyno | name | *** | email | bounslevel | bouns
20040901 john male [email protected] 優秀 $1000
20040902 mary famale [email protected] 良 $600
這個完全滿足了第二正規化,但是bounslevel和bouns存在傳遞依賴
更改為:
studyno | name | *** | email | bouunsno
20040901 john male [email protected] 1
20040902 mary famale [email protected] 2
bounsno | bounslevel | bouns
1 優秀 $1000
2 良 $600
*4.bc正規化
假設倉庫管理關係表為storehousemanage(倉庫id, 儲存物品id, 管理員id, 數量),且有乙個管理員只在乙個倉庫工作;乙個倉庫可以儲存多種物品。這個資料庫表中存在如下決定關係:
(倉庫id, 儲存物品id) →(管理員id, 數量)
(管理員id, 儲存物品id) → (倉庫id, 數量)
所以,(倉庫id, 儲存物品id)和(管理員id, 儲存物品id)都是storehousemanage的候選關鍵字,表中的唯一非關鍵字段為數量,它是符合第三正規化的。但是,由於存在如下決定關係:
(倉庫id) → (管理員id)
(管理員id) → (倉庫id)
把倉庫管理關係表分解為二個關係表:
倉庫管理:storehousemanage(倉庫id, 管理員id);
倉庫:storehouse(倉庫id, 儲存物品id, 數量)。
這樣的資料庫表是符合bcnf正規化的,消除了刪除異常、插入異常和更新異常。
邏輯設計
反正規化本質上就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯
MySQL建立使用者 資料庫 賦權
在機器上登入mysql mysql u root p1 建立使用者 create user 使用者名稱 localhost identified by 密碼 create user 使用者名稱 identified by 密碼 2 重新整理mysql的系統許可權相關表 flush privilege...
mysql 使用者 資料庫 表的基本操作
進入 mysql u使用者名稱 p密碼 退出 qexit 建立使用者 建立 create user fyn identified by qwe123 賦予許可權 grant all on to fyn 立即生效 flush privileges 查詢當前使用者 select user 刪除使用者 d...
mongodb 建立使用者 資料庫例項
原文出處 建立資料庫例項 1.開啟cmd,執行以下命令 cd d c mongodb bin mongo.exe 2.建立tmp庫 執行以下命令 use tmp 建立成功顯示 執行操作 資料庫需要執行操作,才會儲存新建的資料庫,我們可以執行以下命令 檢視資料庫狀態 如上,已經可以看到剛才建立的tmp...