PHP 會員系統 留言版
雖然不是做的很成功 (bug不少..)
但是還是看看吧^^
Easy is power
——————————————————————————–
ORDER BY
——————————————————————————–
SELECT "欄位名" FROM "表格名" [WHERE "條件"]ORDER BY "欄位名" [ASC, DESC]
——————————————————————————–
INSERT
——————————————————————————–
INSERT INTO 資料表 VALUES(值1, 值2, …, 值N)
INSERT INTO 資料表(欄位1, 欄位2, …,欄位N) VALUES(值1, 值2, …, 值N)
INSERT INTO 資料表[欄位列表] VALUES(值列表), (值列表)…
——————————————————————————–
UPDATE
——————————————————————————–
UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3
UPDATE 資料表 SET 欄位1= 值1, 欄位2=值2, 欄位3=值3 WHERE 條件
——————————————————————————–
DELETE
——————————————————————————–
DELETE FROM 資料表
DELETE FROM 資料表 WHERE 條件
沒條件整個資料表刪除!!!
//======SQL查詢關聯語法1(查他介紹了哪些人)
Select I.name,M.mid,M.name
From member as I , member as M
Where I.mid = 'b0905555' and I.mid = M.introducer;
//======
//======SQL查詢關聯語法2 (會改標頭)
Select I.name AS introducer_name ,M.mid AS member_id ,M.name AS member_name
From member as I , member as M
Where I.mid = 'b0905555' and I.mid = M.introducer;
//======
//======SQL查詢關聯語法3 (查誰介紹進來的)
Select M.name,I.mid,I.name
From member as M , member as I
Where M.mid = 'b0905555' and M.introducer = I.mid;
//======
//======6個資料表
browse
cart
member
orderr
order_11
record
//======
— 資料表格式: `browse`
CREATE TABLE `browse` (
`mId` char(8) NOT NULL DEFAULT 'a0910001',
`pNo` char(6) NOT NULL,
`browseTime` datetime NOT NULL,
PRIMARY KEY (`mId`,`pNo`,`browseTime`),
KEY `pNo` (`pNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 資料表格式: `cart`
CREATE TABLE `cart` (
`mId` char(8) NOT NULL,
`cartTime` datetime NOT NULL,
`tNo` char(5) DEFAULT NULL,
PRIMARY KEY (`mId`,`cartTime`),
KEY `tNo` (`tNo`),
KEY `mId` (`mId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 資料表格式: `member`
CREATE TABLE `member` (
`mId` char(8) NOT NULL,
`pId` char(10) NOT NULL,
`name` varchar(8) NOT NULL,
`birthday` date DEFAULT NULL,
`phome` varchar(10) DEFAULT NULL,
`adderss` varchar(40) DEFAULT NULL,
`email` varchar(20) DEFAULT NULL,
`introducer` char(8) DEFAULT NULL,
PRIMARY KEY (`mId`),
UNIQUE KEY `pId` (`pId`),
KEY `introducer` (`introducer`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 列出以下資料庫的數據: `member`
INSERT INTO `member` VALUES ('a0921111', 'A100999777', 'David', '1975-11-22', '04-2468888', '台中市中港路200號', '[email protected]', 'a0911234');
INSERT INTO `member` VALUES ('a0927777', 'B123123123', 'Su', '1982-06-06', '07-2345678', '高雄市蓮海路70號', '[email protected]', 'b0905555');
INSERT INTO `member` VALUES ('b0905555', 'C200456789', 'Jennifer', '1974-03-04', '07-2221111', '高雄市五福三路300號', '[email protected]', NULL);
INSERT INTO `member` VALUES ('b0922468', 'R100200300', 'Jackson', '1980-03-30', '06-3210321', '台南縣中華路600號', '[email protected]', NULL);
INSERT INTO `member` VALUES ('a0911234', 'A122555888', 'Tony', '1980-12-12', '02-2288009', '台北市羅斯福路200號', '[email protected]', 'a0910001');
INSERT INTO `member` VALUES ('a0910001', 'A220123456', 'Jenny', '1979-01-01', '02-2222001', '台北市中山路100號', '[email protected]', 'b0905555');
— 資料表格式: `orderr`
CREATE TABLE `orderr` (
`pNo` char(6) NOT NULL,
`mId` char(8) NOT NULL,
`cartTime` datetime NOT NULL,
`amount` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`pNo`,`mId`,`cartTime`),
KEY `pNoFk` (`mId`,`cartTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 資料表格式: `order_11`
CREATE TABLE `order_11` (
`pNo` char(6) NOT NULL,
`mId` char(8) NOT NULL,
`cartTime` datetime NOT NULL,
`amount` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`pNo`,`mId`,`cartTime`),
KEY `mId` (`mId`,`cartTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
— 資料表格式: `record`
CREATE TABLE `record` (
`tNo` char(5) NOT NULL,
`pNo` char(6) NOT NULL,
`salePrice` decimal(10,2) NOT NULL,
`amount` int(11) NOT NULL,
PRIMARY KEY (`tNo`,`pNo`),
KEY `pNo` (`pNo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3;
資料庫
第一階正規化(1NF)
第一階正規劃 是所有正規劃的基礎
符合
1.資料表中有主鑑 其他所有的欄位ㄉ相依於主鍵
2.每個欄位中都只有儲存單一值
3.資料表中沒有意義相同的多個欄位 例如:姓名1 姓名2 …
第二階正規劃(2NF)
1.符合1NF
2.處理 部分相依
部分相依 主鍵是由多個欄位組成
多複合主鍵容易發生
舉例:
選課資料
課程編號 -> 課程名稱
學號 -> 學生姓名
但 學生姓名 跟 課程編號 無關
第三階正規劃(3NF)
1.符合2NF
2.各欄位與主鍵間沒有間接相依的關係
DBMS 資料庫管理程式 關聯式資料庫
資料庫 Database 關聯模式
-資料表(table) *關聯
–資料表相連 用主鍵
–序列值(Tuple) *列(Row),紀錄(Record) [一整列]
–屬性(Attribute) *行(Column),欄位(Field)
–關聯綱目(Student)
–儲存格 cell [單格]
–屬性值 [一整行]
Students
*stno | stname | cellphone |
092001 | jane | 09201211 |
092002 | mary | 0922283624 |
092003 | john | 0928381216 |
紅=序列值(Tuple) *列(Row),紀錄(Record) [一整列]
綠=儲存格 cell [單格]
淺藍=屬性(Attribute) *行(Column),欄位(Field)
橘=屬性值 [一整行]
R(A1,A2,…,An) = 資料表(屬性1,屬性2,…,屬性1)
定義域限制:
每一個屬性值都是 "簡單" 且 "單值"
簡單 is power.
簡單=不是複合的 舉例:地址 跟 郵遞區號
<第四章 103頁>
序列值(紀錄)[一整列] 是沒有順序的 依照 紀錄時間排序
一個關聯中 不可以兩筆 序列值[一整列] 不能有完全一樣
屬性值[一整行] 是有順序的 可以進行排序
複合與多值屬性 不能出現在關聯中
不能出現類似
D123F45678
phone=[5252000,5364564] (雙紀錄)
主鍵不能為空值
ERD
1.
一筆交易至少包括一個商品,至多可有N個商品。一個商品可以不存在任何交易裡,至多可以存在N個交易。
2.
一筆交易至少包括一個商品,至多可有N個商品。一個商品可以不存在任何交易裡,至多可以存在N個交易。
3.
關鍵屬性 畫底線
作業: 3-6
3/24 下星期二 晚上12點之前上傳
假設你要為一個人力資源部門設計徵才系統,該系統需記載公司裡的各個職位、空缺職位、應徵者的資料、以及面談結果。具體說來,該系統的資料需求如下:
1. 部門 (Department):包括部門編號 (dId)、部門名稱(dName),和部門所在(dLocations),其中部門編號和部門名稱均唯一,且部門所在地可有多個。 2. 職位 (Position):用來描述一個職位,包括職位名稱(pName) 和職責敘述 (pDesc)。其中沒有一個屬性是唯一的,但同一部門的各個職位的職位名稱必不同。 3. 職缺 (Vacancy):包括職缺編號 (vId)、職缺條件 (vCond)、職缺人數 (vNo), 和出缺日期 (vDate)。其中職缺編號為唯一。此外,一個職缺必對應於一個職位,但一個職位可能會分成數個職缺來報。 4. 應徵者 (Applicant):包括身分證字號 (pId)、姓名 (name)、性別 (gender)、學歷 (degrees),和其他資料 (data)。其中身分證字號為唯一,學歷可有多個。一個應徵者可以應徵多個職缺。 5. 員工 (Employee):包括工號 (eId)、姓名 (name)、性別 (gender),和專長(expertise)。其中工號是唯一,而專長可有多個。 此外,有些應徵者申請某個職缺時需要與某些員工面談(Interview),面談的日期和面談的結果必須記載。請繪出符合以上資料需求的 ERD,必要時可以自行假設其他條件,但要寫清楚。 |
小毛解: