99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

圖書借閱管理系統(tǒng)數(shù)據(jù)庫設(shè)計實戰(zhàn):從ER模型到存儲過程與索引優(yōu)化

圖書借閱管理系統(tǒng)數(shù)據(jù)庫設(shè)計實戰(zhàn):從ER模型到存儲過程與索引優(yōu)化 簡介數(shù)據(jù)庫系統(tǒng)課程設(shè)計報告以圖書借閱管理系統(tǒng)為實戰(zhàn)案例面向高校計算機相關(guān)專業(yè)正在完成數(shù)據(jù)庫課程設(shè)計、需要參考MySQL建模與開發(fā)文檔的學(xué)生。報告按照標準數(shù)據(jù)庫設(shè)計流程組織從系統(tǒng)需求分析、業(yè)務(wù)流與數(shù)據(jù)流分析、數(shù)據(jù)字典出發(fā)逐步完成實體、屬性與聯(lián)系分析并給出概念模型和邏輯模型的PDM圖深入講解一對一、一對多、多對多關(guān)系轉(zhuǎn)化方法。物理實現(xiàn)部分給出了建表與完整性約束代碼涵蓋視圖、索引、存儲過程和觸發(fā)器的創(chuàng)建同時提供書籍查詢、圖書管理員管理等模塊的功能調(diào)試與界面展示兼具理論分析與可操作細節(jié)。包體為1個docx文檔約575KB結(jié)構(gòu)完整便于對照查閱。目前已有51人學(xué)習(xí)適合需要快速搭建報告框架并核對數(shù)據(jù)庫實現(xiàn)細節(jié)的讀者。1. 圖書借閱管理系統(tǒng)為什么是數(shù)據(jù)庫課程設(shè)計的最佳練習(xí)場圖書借閱管理系統(tǒng)幾乎是每個數(shù)據(jù)庫系統(tǒng)課程里出現(xiàn)頻率最高的課程設(shè)計題目它看起來簡單實際做起來卻能把數(shù)據(jù)庫設(shè)計的核心環(huán)節(jié)全部覆蓋一遍。從需求分析、概念模型設(shè)計、邏輯結(jié)構(gòu)設(shè)計到物理存儲、索引優(yōu)化、事務(wù)與并發(fā)控制再到最后的報表統(tǒng)計這個業(yè)務(wù)場景天然就包含了“讀者-圖書-借閱”三個核心實體而且借書、還書、續(xù)借、預(yù)約、超期罰款這些操作都自帶狀態(tài)流轉(zhuǎn)和約束條件。對初學(xué)者而言它比電商系統(tǒng)少了復(fù)雜的商品規(guī)格與支付流程但核心的“一對多”“多對多”關(guān)系、外鍵約束、觸發(fā)器的應(yīng)用場景都齊備對已經(jīng)有幾年經(jīng)驗的開發(fā)者來說這個題目也并非沒有值得深挖的點——比如如何設(shè)計借閱狀態(tài)機、如何處理并發(fā)下同一本書被多人同時借出、如何用窗口函數(shù)做借閱趨勢分析這些問題的答案直接決定了課程設(shè)計報告的含金量。這篇文章就按照數(shù)據(jù)庫系統(tǒng)概論第六版中強調(diào)的“需求分析→概念設(shè)計→邏輯設(shè)計→物理設(shè)計→實現(xiàn)與維護”這條主線把圖書借閱管理系統(tǒng)從建表到存儲過程、再到統(tǒng)計報表的完整落地路徑拆開講清楚。2. 從ER模型到建表語句先把數(shù)據(jù)模型設(shè)計對2.1 圖書借閱系統(tǒng)的實體與關(guān)系梳理在寫任何建表 SQL 之前先花半小時把 ER 圖理清楚這比直接動手建表重要得多。圖書借閱管理系統(tǒng)最常見的三實體模型是讀者Reader、圖書Book、借閱記錄BorrowRecord。但真正要支持完整的借閱流程還需要考慮圖書分類Category、出版社Publisher這兩個基礎(chǔ)信息表以及用于處理預(yù)約需求的預(yù)約記錄表Reservation。實體關(guān)系上有幾個容易出錯的點。第一讀者和圖書之間是多對多關(guān)系一個讀者可以借多本書一本書可以被多個讀者借過這個多對多關(guān)系必須通過借閱記錄表來分解。第二借閱記錄表不只是存“誰借了哪本書”這么簡單它需要承載完整的狀態(tài)流轉(zhuǎn)已借出、已歸還、已續(xù)借、已逾期、已掛失。第三圖書表與借閱記錄表之間存在一對多關(guān)系但要注意一本物理圖書和一條書目信息之間的區(qū)分——如果圖書館有 5 本相同的《數(shù)據(jù)庫系統(tǒng)概論》書目信息是 1 條但館藏副本是 5 個。這一點在課程設(shè)計里經(jīng)常被忽略卻恰恰是評分老師看重的地方。數(shù)據(jù)字典建議先列出來再建表每個字段的名稱、類型、約束、默認值、說明都寫清楚。比如讀者的借書上限和當(dāng)前借閱數(shù)量這兩個字段不是一個概念借書上限是規(guī)則存在讀者表里當(dāng)前借閱數(shù)量是事實可以從借閱記錄表實時統(tǒng)計也可以冗余存儲在讀者表里。冗余存儲能減少統(tǒng)計查詢的開銷但需要保證數(shù)據(jù)一致性——刪借閱記錄時必須同步更新這個計數(shù)。我的建議是課程設(shè)計階段就用 SQL 實時統(tǒng)計避免冗余字段帶來的維護負擔(dān)等后續(xù)做性能優(yōu)化時再考慮冗余。2.2 建表語句中的選型、約束與注釋以 MySQL 8.0 為例下面這組建表語句是圖書借閱管理系統(tǒng)的基礎(chǔ)模板包含了主鍵、唯一約束、外鍵、檢查約束、默認值這些數(shù)據(jù)庫系統(tǒng)原理課程的核心概念-- 讀者表 CREATE TABLE reader ( reader_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 讀者ID, reader_no VARCHAR(20) NOT NULL UNIQUE COMMENT 借閱證號, name VARCHAR(50) NOT NULL COMMENT 姓名, gender ENUM(M,F) NOT NULL DEFAULT M COMMENT 性別, phone VARCHAR(20) COMMENT 聯(lián)系電話, max_borrow TINYINT UNSIGNED NOT NULL DEFAULT 10 COMMENT 最大借閱數(shù)量, status TINYINT NOT NULL DEFAULT 1 COMMENT 狀態(tài)1正常 0停用, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 注冊時間 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT讀者信息表; -- 圖書分類表 CREATE TABLE category ( category_id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, category_name VARCHAR(50) NOT NULL UNIQUE COMMENT 分類名稱, parent_id SMALLINT UNSIGNED DEFAULT NULL COMMENT 父分類IDNULL為頂級分類 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT圖書分類表; -- 圖書表 CREATE TABLE book ( book_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 圖書ID, isbn VARCHAR(20) NOT NULL COMMENT ISBN號, title VARCHAR(200) NOT NULL COMMENT 書名, author VARCHAR(100) COMMENT 作者, publisher VARCHAR(100) COMMENT 出版社, category_id SMALLINT UNSIGNED COMMENT 分類ID, total_copies SMALLINT UNSIGNED NOT NULL DEFAULT 1 COMMENT 館藏總數(shù), available_copies SMALLINT UNSIGNED NOT NULL DEFAULT 1 COMMENT 可借數(shù)量, location VARCHAR(50) COMMENT 館藏位置, publish_date DATE COMMENT 出版日期, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, INDEX idx_book_title (title), INDEX idx_book_isbn (isbn), CONSTRAINT fk_book_category FOREIGN KEY (category_id) REFERENCES category(category_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT圖書信息表; -- 借閱記錄表 CREATE TABLE borrow_record ( record_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 記錄ID, reader_id INT NOT NULL COMMENT 讀者ID, book_id INT NOT NULL COMMENT 圖書ID, borrow_date DATE NOT NULL COMMENT 借出日期, due_date DATE NOT NULL COMMENT 應(yīng)還日期, return_date DATE DEFAULT NULL COMMENT 實際歸還日期, renew_count TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 續(xù)借次數(shù), status TINYINT NOT NULL DEFAULT 0 COMMENT 狀態(tài)0借出中 1已歸還 2已逾期, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, CONSTRAINT fk_borrow_reader FOREIGN KEY (reader_id) REFERENCES reader(reader_id), CONSTRAINT fk_borrow_book FOREIGN KEY (book_id) REFERENCES book(book_id), INDEX idx_borrow_reader_date (reader_id, borrow_date), INDEX idx_borrow_status_due (status, due_date) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT借閱記錄表;這段建表 SQL 里有幾個選型細節(jié)說明。讀者表的max_borrow字段設(shè)為TINYINT UNSIGNED最大支持 255完全夠用且節(jié)省空間status字段用TINYINT而不是VARCHAR存“正常/停用”是為了后續(xù)條件查詢更快含義由應(yīng)用層或字段注釋來解釋這也是數(shù)據(jù)庫系統(tǒng)原理中講“編碼字段”的慣用做法。借閱記錄表的record_id用BIGINT是因為高頻插入的流水表增長速度快INT 最大 21 億在極端情況下可能不夠課程設(shè)計階段雖未必要但養(yǎng)成這個習(xí)慣沒有壞處。due_date是應(yīng)還日期而非“借期天數(shù)”這樣查詢逾期記錄時直接用當(dāng)前日期和due_date比較不需要做日期運算。外鍵約束在課程設(shè)計報告里必須出現(xiàn)原因是它可以讓你在刪除讀者或圖書時由數(shù)據(jù)庫主動攔截存在借閱關(guān)聯(lián)的刪除操作避免應(yīng)用層漏判。但實際部署到生產(chǎn)環(huán)境時很多團隊會主動去掉外鍵改用應(yīng)用層保證完整性原因是高并發(fā)下外鍵的檢查開銷較大且分庫分表后外鍵無法跨節(jié)點工作。課程設(shè)計不需要處理這個場景保留外鍵即可。2.3 范式分析與反范式設(shè)計的取舍圖書借閱管理系統(tǒng)的表結(jié)構(gòu)設(shè)計正好用來驗證第三范式的理解。第三范式要求非主屬性既不部分依賴也不傳遞依賴于主鍵。圖書表里的category_name必須拆到分類表出版社信息如果只在圖書表里出現(xiàn)出版社名稱一個字段、沒有出版社地址聯(lián)系方式等屬性可以不建出版社表但一旦出現(xiàn)“出版社地址、聯(lián)系電話”這類非鍵屬性就必須獨立成表否則就構(gòu)成傳遞依賴?,F(xiàn)實設(shè)計中常見的反例如下有人為了查詢方便在 borrow_record 表里把讀者的姓名和書名也冗余進去了。好處是統(tǒng)計報表不用連表查詢壞處是讀者改名或圖書信息變更時必須同步更新所有歷史借閱記錄。課程設(shè)計中不建議這樣做因為統(tǒng)計查詢完全可以通過 JOIN 解決數(shù)量級和數(shù)據(jù)量都不構(gòu)成性能瓶頸。評分老師更想看到的是你能說清楚“為什么用第三范式”和“如果數(shù)據(jù)量上億我會在哪里做反范式”這兩個問題。另一個實際設(shè)計中的權(quán)衡是圖書表里的available_copies可借數(shù)量字段。嚴格來說可借數(shù)量可以通過“總館藏數(shù)減去未歸還的借閱記錄數(shù)”計算得出加了這個冗余字段就違反了第三范式但這是圖書管理系統(tǒng)里最常見的反范式設(shè)計——因為每次借書、還書、預(yù)約都要高頻查詢這個值實時計算需要掃描借閱記錄表代價不小。解決方案是在借書、還書事務(wù)里同步更新這個字段確保一致性否則會出現(xiàn)“書還在架子上但系統(tǒng)顯示不可借”的臟數(shù)據(jù)。3. 用存儲過程和觸發(fā)器實現(xiàn)借書、還書、續(xù)借的業(yè)務(wù)閉環(huán)3.1 為什么把借書邏輯放進存儲過程建表完成之后下一個問題是借書操作應(yīng)該寫在哪里一種方案是直接在 Java 或 Python 的業(yè)務(wù)代碼里寫多條 SQL先查讀者狀態(tài)再查圖書可借數(shù)量然后 INSERT 借閱記錄最后 UPDATE 圖書可借數(shù)量。另一種方案是寫一個存儲過程把整個流程封裝在數(shù)據(jù)庫端。課程設(shè)計推薦用存儲過程理由有三條。第一借書操作天然是一個事務(wù)涉及 SELECT 校驗、INSERT 借閱記錄、UPDATE 圖書庫存三個步驟放在存儲過程里可以統(tǒng)一控制事務(wù)提交和回滾避免業(yè)務(wù)代碼里漏掉事務(wù)邊界。第二存儲過程可以把復(fù)雜的業(yè)務(wù)規(guī)則如讀者有逾期未還書不允許再借、同一讀者不能重復(fù)借同一本書運行在數(shù)據(jù)靠近的位置減少應(yīng)用層與數(shù)據(jù)庫之間的交互次數(shù)。這個邏輯同樣可以用應(yīng)用層代碼實現(xiàn)但存儲過程的方案在數(shù)據(jù)庫系統(tǒng)課程里更能體現(xiàn)對數(shù)據(jù)庫特性的掌握。第三存儲過程經(jīng)過數(shù)據(jù)庫編譯優(yōu)化比逐條發(fā)送 SQL 語句的網(wǎng)絡(luò)開銷更小。需要注意存儲過程并不是銀行轉(zhuǎn)賬那種強一致場景下的唯一正確選擇也不是所有團隊都認可把業(yè)務(wù)邏輯放在數(shù)據(jù)庫端。微服務(wù)架構(gòu)下團隊通常會選擇把業(yè)務(wù)規(guī)則放在應(yīng)用中數(shù)據(jù)庫只做存儲。但課程設(shè)計的核心是展示數(shù)據(jù)庫能力而且借書邏輯本身就是“數(shù)據(jù)庫操作密集而應(yīng)用邏輯簡單”的典型場景放在存儲過程里是加分項。3.2 借書存儲過程參數(shù)校驗、事務(wù)與狀態(tài)更新下面是一個完整的借書存儲過程包含讀者狀態(tài)檢查、借閱上限檢查、重復(fù)借閱檢查、圖書可借數(shù)量檢查四個前置校驗然后執(zhí)行插入與更新DELIMITER $$ CREATE PROCEDURE sp_borrow_book( IN p_reader_id INT, IN p_book_id INT ) proc_label: BEGIN DECLARE v_status TINYINT DEFAULT 0; DECLARE v_max_borrow TINYINT DEFAULT 0; DECLARE v_curr_borrow INT DEFAULT 0; DECLARE v_available SMALLINT DEFAULT 0; DECLARE v_overdue_count INT DEFAULT 0; -- 1. 檢查讀者狀態(tài) SELECT status, max_borrow INTO v_status, v_max_borrow FROM reader WHERE reader_id p_reader_id FOR UPDATE; IF v_status IS NULL THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 讀者不存在; END IF; IF v_status 0 THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 讀者已停用無法借書; END IF; -- 2. 檢查當(dāng)前借閱數(shù)量不包含已還記錄 SELECT COUNT(*) INTO v_curr_borrow FROM borrow_record WHERE reader_id p_reader_id AND status IN (0, 2); IF v_curr_borrow v_max_borrow THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 超出最大借閱數(shù)量; END IF; -- 3. 檢查是否有逾期未還記錄 SELECT COUNT(*) INTO v_overdue_count FROM borrow_record WHERE reader_id p_reader_id AND status 2; IF v_overdue_count 0 THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 存在逾期未還記錄需先歸還并繳納罰款; END IF; -- 4. 檢查同一本書是否正在借閱中 SELECT COUNT(*) INTO v_curr_borrow FROM borrow_record WHERE reader_id p_reader_id AND book_id p_book_id AND status IN (0, 2); IF v_curr_borrow 0 THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 不可重復(fù)借閱同一本書; END IF; -- 5. 檢查圖書可借數(shù)量 SELECT available_copies INTO v_available FROM book WHERE book_id p_book_id FOR UPDATE; IF v_available IS NULL THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 圖書不存在; END IF; IF v_available 0 THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 圖書已全部借出; END IF; -- 6. 執(zhí)行借書操作插入記錄 扣減可借數(shù)量 INSERT INTO borrow_record (reader_id, book_id, borrow_date, due_date, status) VALUES (p_reader_id, p_book_id, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 30 DAY), 0); UPDATE book SET available_copies available_copies - 1 WHERE book_id p_book_id; COMMIT; END$$這個存儲過程有五個關(guān)鍵點需要展開說明。SELECT ... FOR UPDATE是核心。它會對讀者表和圖書表的記錄加排他鎖直到事務(wù)提交或回滾才釋放這直接避免了兩個并發(fā)請求同時讀到“可借數(shù)量 1”然后同時執(zhí)行借書操作的競態(tài)條件。沒有FOR UPDATE在高并發(fā)場景下就可能出現(xiàn)超借的問題這是并發(fā)控制的具體實踐。SIGNAL SQLSTATE 45000是 MySQL 5.6 之后的標準異常拋出語法45000是用戶定義的未捕獲異常通用代碼后面的MESSAGE_TEXT會直接傳給調(diào)用方。在 Java 里捕獲時會看到異常消息里包含MESSAGE_TEXT的內(nèi)容因此不要把操作者能看懂的話寫在日志里要把它當(dāng)作返回給用戶的信息。事務(wù)邊界默認是自動提交的因此存儲過程中如果不顯式寫START TRANSACTION前面每一步SELECT之外的寫操作都會各自提交。但在有FOR UPDATE的情況下建議顯式聲明事務(wù)起點這樣COMMIT的位置就表示“校驗全部通過可以一次性落庫”。注意存儲過程里如果使用了ROLLBACK它只能回滾事務(wù)內(nèi)的寫操作不能撤銷異常信號。DATE_ADD(CURDATE(), INTERVAL 30 DAY)是 MySQL 的日期推演函數(shù)借期設(shè)為 30 天。如果要做節(jié)假日順延或不同類型讀者不同借期的擴展可以把這個 30 天改成從配置表讀取存儲過程的結(jié)構(gòu)不需要變。3.3 還書與續(xù)借狀態(tài)流轉(zhuǎn)中的異常分支處理還書過程比借書簡單但有一個狀態(tài)流轉(zhuǎn)的分支需要處理如果是正常歸還狀態(tài)從 0 到 1圖書可借數(shù)量加 1如果是逾期歸還需要先計算超期天數(shù)按規(guī)則計算罰款把罰款金額寫入罰款表然后才能關(guān)閉借閱記錄。此時還書存儲過程不能只做 UPDATE因為罰款要么由應(yīng)用層計算要么在數(shù)據(jù)庫端直接算好。續(xù)借的約束更像一條業(yè)務(wù)規(guī)則每本書只能續(xù)借一次到期當(dāng)天可以續(xù)借但已經(jīng)逾期的不允許續(xù)借續(xù)借后的應(yīng)還日期從原到期日往后順延 30 天而非從當(dāng)前日期開始。這個邏輯放進存儲過程的效果比寫在應(yīng)用層更穩(wěn)妥——因為renew_count的自增減和due_date的更新是同一個事務(wù)內(nèi)的兩個操作在應(yīng)用層用兩條 UPDATE 完成就可能出現(xiàn)“續(xù)借次數(shù)加了但日期沒更新”的中間狀態(tài)。還書存儲過程的一個關(guān)鍵點是更新可借數(shù)量前要判斷當(dāng)前記錄狀態(tài)防止重復(fù)還書。如果一本已經(jīng)還了的書再次執(zhí)行還書操作return_date不應(yīng)被覆蓋圖書的available_copies也不應(yīng)被重復(fù)增加。判斷方式是在 UPDATE 語句的 WHERE 條件里加上AND return_date IS NULL配合影響行數(shù)來判斷是否執(zhí)行成功。3.4 觸發(fā)器維護逾期狀態(tài)與審計日志存儲過程可以解決業(yè)務(wù)規(guī)則問題但有一個場景必須用觸發(fā)器借閱記錄插入或更新后維護圖書表的可借數(shù)量。如果你在應(yīng)用層寫借書邏輯時漏掉了更新available_copies庫存就會越變越錯。與其靠人記不如用觸發(fā)器兜底。-- 借閱記錄插入后自動扣減圖書可借數(shù)量 DELIMITER $$ CREATE TRIGGER trg_after_insert_borrow AFTER INSERT ON borrow_record FOR EACH ROW BEGIN IF NEW.status IN (0, 2) THEN UPDATE book SET available_copies available_copies - 1 WHERE book_id NEW.book_id; END IF; END$$ CREATE TRIGGER trg_after_update_return AFTER UPDATE ON borrow_record FOR EACH ROW BEGIN -- 狀態(tài)從借出中改為已歸還可借數(shù)量加回 IF NEW.status 1 AND OLD.status 1 THEN UPDATE book SET available_copies available_copies 1 WHERE book_id NEW.book_id; END IF; END$$觸發(fā)器的執(zhí)行時機比存儲過程更靠底它不關(guān)心業(yè)務(wù)代碼是誰寫的、從哪個入口進來的只要對表執(zhí)行了對應(yīng)的 INSERT 或 UPDATE就會自動觸發(fā)。這在多入口系統(tǒng)里有明顯優(yōu)勢。但要提醒的是觸發(fā)器的執(zhí)行是隱式的排查問題時如果不知道有觸發(fā)器存在很難定位“為什么我什么都沒做這個字段自己變了”。所以觸發(fā)器的命名要規(guī)范、注釋要寫在建表語句里報告中也要畫一張“觸發(fā)器行為說明表”列清楚每個觸發(fā)器的觸發(fā)時機、操作類型、影響字段方便對照檢查。課程設(shè)計里還經(jīng)常用觸發(fā)器寫審計日志把對讀者表的 DELETE 操作存檔到 reader_audit記錄刪除時間、刪除前的數(shù)據(jù)快照、操作者標識。這類觸發(fā)器在生產(chǎn)環(huán)境中不常用因為審計需求可以被 CDC變更數(shù)據(jù)捕獲工具替代但數(shù)據(jù)庫系統(tǒng)原理課程的實踐考察中它是個穩(wěn)定加分項。4. 借閱統(tǒng)計 SQL窗口函數(shù)、慢查詢分析與索引優(yōu)化4.1 圖書借閱情況統(tǒng)計不只要會 COUNT還要會用窗口函數(shù)圖書借閱管理系統(tǒng)的報表需求通常集中在三類圖書借閱排行、讀者借閱排行、逾期記錄明細。最容易寫出且能拿分的 SQL 是用窗口函數(shù)實現(xiàn)“每個分類下的借閱排名”因為數(shù)據(jù)庫系統(tǒng)概論教材第六版里窗口函數(shù)是重點章節(jié)能否在課程設(shè)計中主動使用窗口函數(shù)是拉開評分差距的一個重要因素。-- 每本書的借閱次數(shù)及其在所屬分類內(nèi)的排名 SELECT b.title, c.category_name, COUNT(br.record_id) AS borrow_times, RANK() OVER ( PARTITION BY c.category_id ORDER BY COUNT(br.record_id) DESC ) AS rank_in_category FROM book b JOIN category c ON b.category_id c.category_id LEFT JOIN borrow_record br ON b.book_id br.book_id GROUP BY b.book_id, c.category_id, c.category_name ORDER BY c.category_name, rank_in_category;這條 SQL 的關(guān)鍵點在于RANK()窗口函數(shù)與GROUP BY的關(guān)系。先通過GROUP BY b.book_id聚合計算每本書的借閱次數(shù)再通過OVER (PARTITION BY category_id)把同一個分類下的圖書視為一個分組按借閱次數(shù)降序排名。RANK()會出現(xiàn)并列排名比如兩本書并列第一時下一名次是第三名如果你希望并列之后連續(xù)遞增可以用DENSE_RANK()。這兩個函數(shù)的差異在課程設(shè)計答辯時經(jīng)常被老師問起要能現(xiàn)場講清楚。LEFT JOIN的目的很明確一本書如果沒被借過COUNT 會是 0但它仍然要出現(xiàn)在排名里。如果用INNER JOIN零借閱的書就被過濾掉了圖書管理員最關(guān)心的“哪些書一直借不出去”就查不出來。統(tǒng)計借閱趨勢可以再配合DATE_FORMAT按月份聚合SELECT DATE_FORMAT(borrow_date, %Y-%m) AS month, COUNT(*) AS borrow_count, COUNT(DISTINCT reader_id) AS active_readers FROM borrow_record WHERE borrow_date DATE_SUB(CURDATE(), INTERVAL 12 MONTH) GROUP BY DATE_FORMAT(borrow_date, %Y-%m) ORDER BY month;4.2 逾期記錄查詢時間函數(shù)聯(lián)動與狀態(tài)判斷逾期記錄的查詢邏輯不能簡單地用“當(dāng)前時間晚于應(yīng)還日期”來判斷因為已歸還的記錄即使超期了它的狀態(tài)就已經(jīng)變成 1 而不是 2 了這個語義上的不同會直接導(dǎo)致統(tǒng)計口徑對不上。查詢逾期未還的記錄時條件應(yīng)該是status 0 AND due_date CURDATE()查詢所有歷史逾期記錄則要看return_date due_date或狀態(tài)曾經(jīng)置為 2。下面這條查詢同時輸出逾期天數(shù)和應(yīng)繳罰款適合作為管理端的“逾期清單”接口SELECT br.record_id, r.name AS reader_name, r.phone, b.title AS book_title, br.due_date, DATEDIFF(CURDATE(), br.due_date) AS overdue_days, CASE WHEN br.return_date IS NULL THEN DATEDIFF(CURDATE(), br.due_date) ELSE DATEDIFF(br.return_date, br.due_date) END * 0.5 AS fine_amount FROM borrow_record br JOIN reader r ON br.reader_id r.reader_id JOIN book b ON br.book_id b.book_id WHERE br.status 0 AND br.due_date CURDATE() ORDER BY overdue_days DESC;罰款金額的計算用CASE WHEN區(qū)分已還和未還每本每天 0.5 元這個單價在真實系統(tǒng)里應(yīng)該是罰款規(guī)則表中的配置值而不是 SQL 里的硬編碼但課程設(shè)計階段先用常量寫死是允許的。DATEDIFF在 MySQL 里的兩個參數(shù)是“結(jié)束日、開始日”順序不要寫反否則會得到負值。4.3 讓統(tǒng)計查詢變快組合索引設(shè)計與 EXPLAIN 驗證歸結(jié)到數(shù)據(jù)庫系統(tǒng)原理課程的知識點上索引設(shè)計有兩個方向查詢局部性優(yōu)先和更新代價最小化。對于借閱記錄這種流水表查詢條件通常固定在(reader_id, status)和(status, due_date)這兩組組合上——前者是“某讀者當(dāng)前借了哪些書”后者是“當(dāng)前有哪些逾期未還”。建表時已經(jīng)加了這兩個組合索引但怎么驗證索引是否真的被用上要用EXPLAIN看執(zhí)行計劃。EXPLAIN SELECT * FROM borrow_record WHERE status 0 AND due_date CURDATE() ORDER BY due_date;結(jié)果中type字段如果是ref或range說明索引被有效使用如果是ALL表示全表掃描明顯有問題。key字段會顯示實際使用的索引名rows表示預(yù)估掃描的行數(shù)。如果發(fā)現(xiàn)status 0 AND due_date CURDATE()這條條件命中了組合索引idx_borrow_status_due那么ORDER BY due_date也會直接利用索引的有序性避免額外的 filesort——這是組合索引“最左前綴”規(guī)則的直接結(jié)果也是數(shù)據(jù)庫系統(tǒng)原理教材中的重要知識點。還有一個常見的索引陷阱是對borrow_date字段使用DATE_FORMAT函數(shù)做條件判斷時索引會失效因為函數(shù)操作改變了列值。正確的做法是寫范圍條件例如borrow_date 2024-01-01 AND borrow_date 2024-02-01。這條規(guī)則在“數(shù)據(jù)庫系統(tǒng)工程師”考試和實際開發(fā)中都是高頻考點。5. 課程設(shè)計落地技巧造數(shù)、測試、防坑與報告加分點5.1 用存儲過程批量生成測試數(shù)據(jù)評分老師打開你的系統(tǒng)時最怕看到空表。沒有數(shù)據(jù)就沒有演示效果統(tǒng)計報表跑不出結(jié)果逾期判斷也沒有意義。推薦寫一個一次性存儲過程批量生成模擬數(shù)據(jù)。DELIMITER $$ CREATE PROCEDURE sp_generate_test_data() BEGIN DECLARE i INT DEFAULT 1; DECLARE v_reader_id INT; DECLARE v_book_id INT; DECLARE v_borrow_count INT; -- 生成 50 個讀者 WHILE i 50 DO INSERT INTO reader (reader_no, name, gender, phone, max_borrow) VALUES ( CONCAT(R, LPAD(i, 4, 0)), CONCAT(讀者, i), IF(i % 2 0, M, F), CONCAT(138, LPAD(i, 8, 0)), 10 ); SET i i 1; END WHILE; -- 生成 100 本書 SET i 1; WHILE i 100 DO INSERT INTO book (isbn, title, author, publisher, total_copies, available_copies) VALUES ( CONCAT(9787-, LPAD(i, 6, 0)), CONCAT(圖書, i), CONCAT(作者, i), 人民郵電出版社, 5, 5 ); SET i i 1; END WHILE; -- 隨機生成借閱記錄 SET i 1; WHILE i 500 DO SET v_reader_id 1 FLOOR(RAND() * 50); SET v_book_id 1 FLOOR(RAND() * 100); SET v_borrow_count FLOOR(RAND() * 5); INSERT INTO borrow_record (reader_id, book_id, borrow_date, due_date, status) VALUES ( v_reader_id, v_book_id, DATE_SUB(CURDATE(), INTERVAL FLOOR(RAND() * 180) DAY), DATE_SUB(CURDATE(), INTERVAL FLOOR(RAND() * 30) DAY), IF(RAND() 0.7, 1, 0) ); SET i i 1; END WHILE; END$$RAND()需要括號FLOOR(RAND() * 50)等值隨機生成分布在 1 到 50 的整數(shù)DATE_SUB可以生成過去某個時間點的日期。需要注意的就是用 RAND 產(chǎn)生模擬數(shù)據(jù)時各字段的業(yè)務(wù)一致性比如狀態(tài)是 1已歸還的記錄借書日期應(yīng)早于應(yīng)還日期應(yīng)還日期又應(yīng)早于或等于當(dāng)前日期否則會影響逾期判斷的結(jié)果。5.2 容易被扣分的細節(jié)清單課程設(shè)計報告提交后老師重點看的不只是代碼能不能跑而是你的系統(tǒng)邊界思考是否完整。以下幾個問題是歷屆課程設(shè)計中最容易被問住的建議提前在報告中寫出明確的技術(shù)選型理由。并發(fā)借書的臨界條件前一章存儲過程里已經(jīng)用FOR UPDATE解決。但另一個并發(fā)問題是同一讀者在毫秒級時間內(nèi)提交兩次借書請求應(yīng)用層可能在存儲過程的事務(wù)還沒結(jié)束前就發(fā)出了第二個請求此時第二個事務(wù)會阻塞等待第一個事務(wù)的排他鎖釋放。這屬于正?,F(xiàn)象但其實如果在不加鎖的情況下先查了讀者狀態(tài)兩個請求都讀到“當(dāng)前借閱數(shù) 4、上限 10”兩個請求就都會執(zhí)行成功——最終借出數(shù)量超出上限。加鎖之后第二個事務(wù)等待鎖釋放后會重新讀取最新數(shù)據(jù)此時數(shù)量已經(jīng)變成 5兩個請求仍然都能成功因為 5 加 1 還沒到 10。如果同一讀者并發(fā)提交了 10 次請求且每次都在鎖釋放后檢查最終結(jié)果可能是 14這是“檢查后再寫入”模式的固有缺陷理論上需要在應(yīng)用層做并發(fā)限制來配合。課程設(shè)計中能答出這層認知就夠了老師不會要求你實現(xiàn)分布式鎖。圖書可借數(shù)量的負值問題也要防。如果available_copies更新時不帶條件重復(fù)還書時會把它加過頭。解決方案是在 UPDATE 語句的 WHERE 條件上加上available_copies 0或剛才觸發(fā)器里說的狀態(tài)判斷。同時在表設(shè)計上增加CHECK約束雖在 MySQL 8.0 之前會被忽略8.0 之后真正的 CHECK 約束才生效建議在報告中說明你的約束是在哪一層保證的。刪除策略的問題borrow_record表在真實場景中不應(yīng)該被物理刪除。如果有讀者堅持要“刪除借閱記錄”正確的做法是增加一張作廢記錄表或者在記錄上加一個作廢標記字段而不是 DELETE 掉歷史流水。圖書表的刪除同樣要謹慎最穩(wěn)妥的做法是加is_deleted字段做邏輯刪除這在課程設(shè)計答辯中經(jīng)常是加分項。5.3 課程設(shè)計報告里的實驗數(shù)據(jù)呈現(xiàn)技巧報告中的實驗結(jié)果其實不需要特別復(fù)雜的圖表。最有說服力的兩個實驗對比建議做“有無索引的查詢耗時對比”和“存儲過程 vs 三條獨立 SQL 的響應(yīng)時間對比”分別用PROFILING或應(yīng)用層計時器記錄 100 次查詢的平均耗時再把結(jié)果畫成柱狀圖放在報告里。這類對比既符合數(shù)據(jù)庫系統(tǒng)原理的實驗方法也顯得你真正跑過數(shù)據(jù)。對于圖書借閱管理系統(tǒng)的應(yīng)用層界面不需要追求復(fù)雜框架課程設(shè)計更看重數(shù)據(jù)模型與業(yè)務(wù)邏輯的完整閉環(huán)。前端用能熟練使用的技術(shù)棧即可核心精力放在把數(shù)據(jù)庫端的設(shè)計說明寫透——包括 ER 圖、關(guān)系模式、范式證明、事務(wù)設(shè)計、索引設(shè)計、并發(fā)控制方案。做到了這幾點這份課程設(shè)計報告無論是作為期末提交還是求職作品展示都能拿出硬內(nèi)容。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久五月热| 婷婷五月天精品| 激情AV在线| 激情四射网| 少妇伦子伦精品无吗| www.五月.com| 夜夜夜叫天天天做| 五月天婷婷基地综合网| 婷婷五月综合丁香久久| 狠狠爱青青草| 五月天综合激情网| 色色色色色色网站| www.99成人视频| 丁香五月最新地址| 激情宗合哪里能看| 蜜臀久久99精品久久久久久酒店| 久久九九综合| 国产精品久久久丁香五月八戒视频| 九九性爱网| www.9797国产| www激情| 国产超碰在线| 久久爱综合| 免费不卡狠操美女视频网 | 激情婷婷五月| 丁香五月六月婷婷综合激情| 伊人激情啪啪| 玖玖五月丁香| 久久综合中文字幕| 色天使色综合| 国内精品99| 九九99热| 丁香五月综合在线视频| 久久机热这里只有精品| site:publishdd.com| 69色婷婷| 高清视频一区| 丁香六月亚洲| www.婷婷激情网.com| 色五月婷婷五月| 六月丁丁香| 九月丁香婷婷综合激情| 欧美激情五月综合| 天天爽,天天操。| 九九热91| 五月色婷婷夜色| 色五月 五月婷婷| 五月激情五月婷婷五月天在线| 婷婷综合激情五月中文字幕| 操碰99| 97色精品视频| 色色色色色色综合网| 亚洲乱码日产精品BD| 久re热视频| 五月天婷网| 超碰在线99| 一起草无码| 五月天久久色| 亚洲亚洲人成综合网络| 中文字幕av网站| 九九综合色| 91丨九色丨国产打屁股| 万月丁香狠狠爱| 日本在线播放97| 久久婷婷九月国产精品| 天天网曰日曰夜夜综合永久免费| 99久久久精品| 婷婷午夜| 99在线精品视频观看免费下载| 99国产小视频2013| 伊人五月丁香| 国产精品电影| 不卡成人免费| 亚洲在线播放| 亚洲精品中文字幕成人片| 欧美人人超级碰| 91|九色|动漫| 日夜夜天天| 色五月激情问网站| 狠狠插狠狠插| 婷婷久久亚洲| 99re资源在线视频导航| 91久草五月天婷婷| 26uuu美女三级视频| 97色色婷婷五月天| 婷婷五月开心中文字幕在线| EEUSS鲁片一区二区三区| 99热这里只有在线| 婷婷久久综| 十一月婷婷激情四射| 大香蕉婷婷五月| 国产密乳av一区二区三区四区| 婷婷五月天成人影片| 无码G高清天| 久久这里有精品在线观看| 五月婷婷日| 久久伊人五月天| www.minyis.com【JT】实力收量可预付QQ2101460746 | 9精品在线| 99精品在线| av人人干| 激情丁香五月AV| 97色色婷婷| 婷婷五月天色网久| 99热精品在线在线| 五月丁香婷婷激情图片| 梁铮版蜘蛛女在线观看| 女同激情久久av久久| 婷婷五月天综合久久| 亚洲va成人va成人va在线观看| 97在线精品| 丰满少妇猛烈A片免费看观看| 久久丁香九| 亚洲国产精品五月天| 思思久日精品视频| 五月天国产| 婷婷精品| 大香蕉九九| 26uuu欧美激情另类| 日本色天堂| 丁香桃色网| 丁香色色五月| 丁香五月在线伊人| 激情色色色| 婷婷色丁香五月| 丁香激情网| 久久人妻熟女一区二区| 97人妻碰碰碰久久香蕉| 国产片色| 人妻啪啪啪| 五月丁香婷婷色啪| Av大香蕉| 五月天五月天激情网| 丁香六月婷婷综合缴| 丁香五月激情综合| 五月丁香六月婷婷啪啪| 99热99热不卡| 天天爽天天| 婷婷五月综合社区在线| 亚洲第一色区| 亚洲国产精品二二三三区| 久婷久婷| 91一起操| 丁香蜜臀黄色婷婷五月天| 激情色情五月天| 九九热啪啪| 中文字幕无码人妻少妇免费视频| 开心久久爱五月天| 99久久九九视频| 五月丁香六月婷婷精品| 99热这里有精品| 99少妇精品| 成人天天爽| 草草视频91| 六月丁香婷婷综合影院| 思思热久久久在线| 色婷久| 日本丁香五月| 99久高清视频| 国产日比| 婷婷五月播| 这里只有精品免费视频| 色域五月丁香| 五月丁香六月综合激情| 影音先锋毛片网站| 色综合五月天| 99热精品在线播放观看| 超碰婷婷色| 五月天激情子轮| 人人摸人人干| 人妻久久久久久久久妻久久久久| 91欧美| 五月婷婷中文字幕| 久久综合影院| 成人五月天在线观看| 天天干天天拍| 日本va欧美va精品发布视频| 色五月婷婷基地| 九九综合九九| 五月婷婷成人| 热的国产,热的综合,热的有码| AAA久久久| 91好好热日本在线| 亚洲在线综合| 六月丁香综合999| 九九在线精点品| 久热超碰91| 婷婷激情社区| 99热综合色图| 婷婷伊人綜合中文字幕小说| 婷婷久久午夜网| 少妇熟女视频一区二区三区| 密乳视频| 天堂网亚洲色图| 五月丁香成人小说| 99色在线视频| 中文字幕网伦射乱中文| 久久久99免费视频| 九九色视频| 好叼操在线观看| 99色| 婷婷久久免费看| 久久月天堂| 五月婷精品| 成人色情五月天婷婷丁香| 色婷婷播放| 婷婷综合六月| 91干视频| 99热这里有精品| 密臀久久| 午夜丁香六月婷| 激情丁香五月婷婷| 伍月婷婷免费视频| 激情婷婷在线中文字幕| 色五月激情网| www五月天com| 99热永久在线观看| 91网站黄| 大香久久伊人网| 久久婷婷五月综合| 色色亚洲五月天| 六月亚洲婷婷6月中文字幕| 大香蕉九九| 真实亲子乱子伦高清在线观看| 欧美性爱中文字幕| 国产肥白大熟妇BBBB视频| 亚洲婷婷激情888精品久| 在线观看的av| 丁香九月综合| 日本综合九九| 精品人妻伦一二三区久久| 情五月亚洲婷婷| 五月天天综合| 五月婷婷五月色| 综合亚洲色色| 中文字幕av亚洲| 婷婷色综合| 色婷婷AV五月天| 亚洲国产成人AV在线| 强辱丰满人妻HD中文字幕| 超碰9| 五月婷婷久久激情| 五月婷婷欧美| 中文无码婷婷| 色综合色| 色激情五月| 久草婷婷| 午夜免费试看| 九九热超碰| 丁香五月av在线| 亚洲成人AV在线观看| 婷五月天丁香婷五月| 7777国产盗摄农村女人| 91人人人人人人人| 黄色一极大片| 天堂久久婷婷| 丁香五月成人丝袜| 丁香婷婷久| 另类激情综合| 97在线观视频免费观看| 激情五月婷婷五月| 五月丁香六月婷婷综合免| 超碰人妻在线| 久99视频在线观看| 淫视馆AV在线| 欧美性久| av操一操| 久草a片| 伊人五月天97| 9视频1在线| 天天射网站| 夜夜骑夜夜撸| 五月天大香蕉av| 国产99久| 99在线免费视频| 色五月色开心开心五月| 91疯狂操操操操| 久久hd| 亚洲熟妇AV乱码在线观看| 色欲色天天香综合| 亚洲Av成人在线观看| 精品国产AV色一区二区深夜久久| 五月天婷婷基地| 2018国产大陆天天弄| 乱岳熟女50岁| 99久久.www| 黄色精品五月婷婷| 就爱干 在线| 嫩草AV久久伊人妇女超级A| 六月丁香成人| 五月天三级| 综合五月天亚洲婷婷| 香蕉视频91| 久久久精品99| 五月情四婷婷| 九九热婷婷| 91日本在线| 人人操AV| 丁香五月成人论坛| 66精品成人免费网站在线观看| 婷婷香五月天| 丁香五月综合| 国产九月婷婷| 欧美成人无码高清一区二区三区| 婷婷六月激情啪啪| 91无码视频| 国产毛片精品一区二区色欲黄A片| 99精品视频在线观看| 666555。COm毛片| 123日本不卡在线| 亚洲电影中文字幕| 婷婷爱综合| 香蕉AV777XXX色综合一区| 婷婷五月激情四射手| 色天天综合| 久久久久久人妻| 涩五月婷婷| 亚洲区1| 无码se| 亚洲视频丁香网va| 婷婷狠狠干| 色婷婷小说网| 五月天综合在线| 91妻人人爽人人看片| 久久人人添人人爽添人人片αV| 婷婷操无码| 色九九综合| 日日操夜夜爽天天天| 激情六月天| 五月天综合色| 激情另类综合| 伊人丁香花综合影院| 色婷婷久久久| 婷婷天堂综合| 91玖玖| 无码少妇高潮喷水A片免费| 99精品在线观看视频| 国产裸舞表演WWWW| 亚洲热视频| 五月婷婷香蕉视频| 日韩九九视频| 久久久久人妻网址| 九一牛视频探花| 丁香五月骚喷水视频| 91精品久久久久久| 九月婷婷综合| 永久精品| 激情综合婷婷五月| 天天草天天爽| 99热这只有| 99视频在线| 91黄址| 久久综合五月天| AV大片在线观看| 啪啪色激情五月天| 综合色久| 色婷婷操逼| AV五月丁香| 综合一区二区三区| 丁香五月婷久久| 9 7总站超级碰免费视频| 婷婷色播婷婷| 99re热在线视频观看| 国产44页| 伊人久久大香线蕉av最新| 五月激情天| 婷婷色五月大香蕉在线观看| 激情网综合| 大香蕉色婷婷伊人在线| 色永久| 久久在线视频免费观看| 亭亭社区五月天| 99热这里只有精品首页| 日本美女上人| 人妻中文在线| eeuss人妻| 开心激情婷婷| 亚洲激情综合五月婷婷啪啪| 婷婷五月六月丁香| 美女丁香五婷婷| 久久影视婷婷五月| 99综合| 九九色区| 九九av| 综合97五月| 五月丁香六月激情综合| 99在线公开视频| 夜夜干夜夜操| 成人看片网站| 九月丁香八月婷婷加勒比| 五月久久丁香| 九月影院義母在线播放| 丁香五月激情啪啪| 色综合综合色| av五月丁香婷婷网| 人人草人人看| 五月综合丁香婷婷| 98国产精品综合一区二区三区 | 99色看这里只有精品| 爽tv | 人妻性爱| 国产看真人毛片爱做A片| 国产色色网站网址| 色一色综合| 婷婷夜夜夜夜| 99热欲| 狠狠色噜噜色狠狠狠综合久久成人波| 无码激情| 国产古装妇女野外A片| 色婷婷狠狠| 亚洲色久| 五月天AV大香蕉| 九九色播五月丁香| 九九久久五月天综合伊人| 大香蕉在九| 五月六月激情| 国产精品视频| 久热精品免费视频4| 99精品在线下载| 91婷婷搞| 7EzOBIhNq85TO| 天堂色婷婷| 99热99这里有免费的精品| 七七久久综合| 丁香五月婷婷啪啪| www.夜夜操| 日韩五月天婷婷| 欧美婷婷日本| 99久久户外勾搭| 999热在线视频| 丁香久久综合| www.丁香六月婷婷久久天堂影院.con| 第五色婷婷| 国产精品成人在线| 丁香五月激情久久麻豆| 另类专区在线| 狠狠操狠狠做| 丁香五月激情六月欧亚激情综合导航| a色婷婷| 色色亚洲视频| 国产精品VA在线| renre人人操国产超碰在线| 日韩成人电泉AV| 色色网站在线| 九九视频这里只有精品| 色色网五月激情| 色五月婷婷、老熟女| 亚洲中文字幕AV| 亚洲精品在线视频| 欧美色97| 丁香婷婷五月六月久久| 丁香婷婷色色| 99无码超碰| 婷婷色五月91啪啪| 天天天干夜夜夜操| 四色五月婷婷| a网站免费观看| 九九Av| 成人视频婷婷| 99热只有| 午夜激情综合| 九九99久久| 五月婷婷久久开心网| 五月激情综合性爱| 丁香五月开心七月| 夜精品无码A片一区二区蜜桃| 九九热在线视频观看| 五月丁香婷爱在线| 色综合性视频| 思思久日精品视频| 日日操夜夜骑| 97在线刺激| 五月天操逼网| 欧美这里只有精品| 亚洲黄色影视| 开心激情站| 亚洲欧洲中文日韩久久AV乱码| 99这里只有精品| 1000部毛片A片免费观看| 97五月天| 五月婷婷六月色| 99热亚洲| 亚洲精品字幕在线观看| 色人久久| 久热A片| 乱精品一区字幕二区| 香蕉97碰碰碰欧美| 久七香蕉| …亚洲黄色在线播放日韩、av中文a…| 91人人操人人看| 丁香五月综合激情久久潮喷| 日韩 中文 欧美| 桃色Av色哟哟| 男人天堂伊人五月丁香| 激情丁香婷婷六月天| 天天干天天日日| 婷婷色av| 婷婷五月天六月丁香| 九色91国产| 五月丁香亭亭| 26uuu欧美| 99热免费| 91干网| 欧洲区自拍| 美女xx不卡| 超碰碰碰碰| 99久久精品网| 日本色色色| 日本三级黄色大片| 亚洲av综合在线| 国产1区2区3区| www.91婷婷| 第四色婷婷丁香五月| 国产精品日韩十五区| 天天色天天爱天天爽| 激情五月婷婷在线| 思思热视频在线| 五月丁香啪啪网| 婷五月天| 欧美综合丁香网| 五月亭亭综合五码| www.丁香五月| 琪琪色网址| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 六月婷婷狠狠| 玖玖婷婷五月| 性爱111111| 婷婷色片| 99这里精品| 色无码| 亚洲午夜AV| 天天日日| 伊人综合网4| 九九色热视频| 欧美大肥婆大肥BBBBB| 婷婷五月丁香综合亚洲| 激情 五月 婷婷 丁香| 激情五月婷婷视频一区二区三区| 五月在线| 久热精品9999| 九九色中文| 美女主播野战视步页| 亚洲视频图片婷婷五月| 狠狠舔| 色婷五月天激情| 伊人五月天| 日本久久极品| 婷婷五亚洲| 欧美三级A做爰在线观看| 大香蕉婷婷婷| 五月丁香六月婷婷婷婷| 国产又爽又猛又粗的视频A片| 丁香五月天网站| 五月噜噜| 亚洲六月色| 五月丁香在线国产 | 思思久久99热只有频精品66| 色欲影香| 欧美乱码国产一级A片| 婷婷色综合| 亚洲精品网址| 天天日综合| AⅤ在线播放网| 亚洲综合色网| 欧美日韩中国| 丁香五月婷婷视频| 五月天婷综合| 无码人妻激情| 热九九九九| 亚洲婷婷丁香五月亚洲| 人人摸人人干| 夜夜夜叫天天天做| 激情五月丁香五月| 亚洲综合色色| 日韩一级片| 在线看黄色| 色情免费视频播放| AV中文字幕夜夜操b天天摸bb | OYIWbGcPu8H| 亚洲婷婷丁香五月在线| 涩综合网| 欧美五月丁香啪啪响视频| 欧美丁香五月夫妻天| 欧美激情久| 五月丁香影院| 视频1区2区| www.开心激情| 婷婷玖玖五月天| 婷婷中文字暮| 亚洲综合999| 99热成人在线观看| 超碰在线综合| 婷婷五月天视频免费在线观看| 免费看成人747474九号视频在线观看| 色婷婷丁香香香蕉视频| 国产亚洲网站在线| 综合伊人久久| 五月婷在线观看| 色情久久久| 五月婷婷开心网| 婷婷操逼| 色色色com| 99热超碰| 丁香六月综合激情| 秋霞学生妹一二级| 色停停影院五月天| 婷婷丁香六月天| 91操操| 五月丁香在线观看| 天天色综合网吨吧| 另类图片五月激情| 狠狠操狠狠| 色婷婷情片| 婷婷五月天小说| 婷婷五月深爱五月| www久久久| 色综合天天| 六月丁香啪| 九九色色| 久热这里只有精品在线| 99热99干| 99ER热精品视频| 99色丁香婷婷综合网| 婷婷五月欧美综合| 色色五月婷| 天天狠天天狠| seuuu婷婷| www.henhengan| 丁香六月婷婷色播| 99精品热| 99九九玖玖| 天天干夜夜欢| 天天色综和网| 久操干| 五月天com| 久久这里只有精品8| 99热免费精品| 日韩三级视频一区二区| 成人av播放| 午夜色色色极品视频| 人人色人人弄人人操| 这里只有久久精99| 丁香五月天网站| 九九久久玖玖爱| 风流少妇A片一区二区蜜桃| 久久这里只| 亚洲另类婷婷综合| 亚洲无aV在线中文字幕| 成人午夜无码视频| 五月人妻婷婷视频| 亚洲 五月 婷婷 成人| 麻豆科斗777| 婷婷五月欧美| 精品9久| 欧美性猛交99久久久久99按摩| 久碰视频| 丁香久久| 色婷婷丁香五月观看| www.久久久久久久久久久| 日韩aaa| 五月天色影院| www.色婷婷。com| 婷婷色在线播放| 日日做A爰片久久毛片A片英语| 天天透天天爱| www.henhengan| 99极品视频| 狼人婷婷久久| 国产9色在线/日韩| 日韩综合久久| 色婷婷色和| 亚洲综合五月天| 亚洲啪啪网| www999日韩精品| 日本女人久久| 婷婷伊人网| 色色色综合色| 九玖欧洲亚洲| 五月花综合视频| 十月丁香九月婷婷综合| 亚洲日日操| 秋霞电影理论| 天天插天天插天天插| 日本无va视频| 密黄站| 午夜 外网 精品 在线| 婷婷五月天AV激情| 人人色人人摸人人看| 亚洲xx网| 五月天婷婷激情在线色图| 人人搡人人| 97色综合视频| 99在线视频播放| 91啪啪视频| 九九视频这里只有精品在线播放| 五月丁香婷婷啪啪| 另类专区在线| 中文字幕在线免费| 五月婷成人网| 六月婷婷在线视频| 久久HD| 中文字幕人妻熟女在线| 日本99视频| 天天天天干| 琪琪色五月婷婷老师| 国产婷婷五月| 色色日本欧美| 99精品久久久久久久| 伊人网欧美在线男人天堂五月丁香| 再次出发二| 一区二区中文字幕| 九九这里有精品视频| 国精产品一区二区三区| 亚洲bt丁香五月天婷婷激情小说| 噜噜狠狠色综合久| 99久在线观看| 深爱激情丁香| 1024久婷| 色婷婷婷av| 婷婷五月另类网站| 欧美精品18| 亚洲电影中文字幕| 国产中文亚洲欧美日韩性交| 人人亚洲| 亚洲第一综合| 色五月婷婷久久| 99热精品在线观看| 91综合在线观看首页| 日本女va| 综合狠狠干| 人人干av| 第四色五月婷婷| 久久9精品| 丁香六月亚洲综合| 日日夜夜干| 深爱激情丁香| 久久加勒比| 五月婷婷六月丁香| 欧美五月婷婷| 丁香五月Av| 色五月自偷自拍婷婷婷婷| 五月激情婷婷开心五月| 99热这里只有精品86| 男女啪啪做爰高潮无遮挡| 五月天丁香婷| 五月天婷久精视频| 丁香五月天AV在线 | 久久久性爱网| 26uuu欧美日本| 少妇被下春药玩弄A片| 精品婷婷| 日本欧美国产| 第四色在线观看| 综合亚洲六月婷婷在线| 色婷婷五月天成人网| 久久久久视剧HD| 美女主播野战视步页| 婷婷久久色| 黄色片avv| 激情综合激情五月| 99网| 色波激情五月天| 深爱激情五月婷婷| 91伦| 婷婷五月天狠狠搞干| 99ri网站在线观看| 玖玖在线视频| 99久久激情视频| 99热精品在线播放| 99热在线爱| 色五月在线播放| 婷婷综合激情| 79精品视频在线观看,| 99视频综合网| 日本婷婷综合精品| 成人精品视频99在线观看免费| 国产婷婷色五月| 色综合激情| 做爰丰满少妇1313| 婷婷五月激情基地| 久久婷婷五月天| 日本系列_4页_777FP| 狠狠狠五月婷婷六月丁香| 国产亚洲在线观看| 激情宗合 激情宗合| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 激情综合丁| 熟女人妻一区二区三区免费看| 久久五月婷婷视频| 天天摸日日舔狠狠添婷婷婷| 日韩成人影片网站| 天天日天天狠狠操| 欧美搡BBBBB摔BBBBB| WWW久久久| 激情婷婷六月天| 久久这有这里精品| av操逼网| 激情五月天婷婷丁香 | 情色五月天网站| 色色网91| 影音先锋色婷婷| 午夜色丁香| 十月丁香九月婷婷综合| 色播五月丁香婷婷| AⅤ网站在线看| 激情五月少妇| 五月天啪啪网| 五月婷婷导航| 天天爽成人综合网站| 婷婷久久综合| www.狠狠干| 精品亚洲国产成人A片在线鸭王| 五月综合色| 大香蕉婷婷丁香天堂AV| 天天摸,天天爽| 色婷婷狠狠禁久久| 婷婷激情九月| 丁香六月激情综合网| 国产精自产拍久久久久久蜜| 99热欧| 五月婷婷综合在线视频| 17.c黄色| 另类图片五月天激情| 天天天天天天噜| 91丨九色丨白浆秘| 97亚洲视频在线| 天天舔天天爽| 激情综合网,婷婷| 亚洲精品无AMM毛片| 开心激情网五月天| 華人性愛AV在線| 波多野结衣成人作品在线| 夜夜操天天爽| 五月亚洲| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月天婷婷色播在线网| 九九激情视频| 极品少妇高潮啪啪AV无码| 欧美日韓成人亚洲精品另类| 欧美大片| 丁香五月91| 亚洲五月丁香综合网| 深爱激情五月天| 五月婷婷综合色啪首页| 九九99九九99偷拍视频免费看| 国产精品18久久久| 99ri在线| 亚洲丁香五月天在线视频| 婷婷丁香五月激情密臀av| 性做久久久久久久免费看| 婷婷综合视频| 日本女天天爽| 久久大香蕉同僚| 亞洲自怕| 色吧五月婷婷| 激情丁香六月| 99碰碰| 91精品激情9| 色婷婷五月综合| 日韩欧美五月丁综合| 99热在线观看| 丁香六月综合| 精品久久66| 激情综合激情五月| 99久久66| 99玖玖视频| 97超碰,人人舔,人人操,人人摸 | 婷婷婷婷色| 久久婷婷在线| 综合久色五月| 高清国产AV| 久久久激情| 亚洲热综合| 99色看这里只有精品| 99久在线| 激情影院69| 色色三级视频| 亚洲综合九九| 九九精品9| www.狠狠操| 色婷婷五月综合| 五月婷婷欧美| 丁香五月av在线| 狠狠色丁香婷婷综合久久97AV| 久久er这里只有精品| 九九五月天| 亚洲99一级无嗎特制在线| 韩国中文字幕91| 爱久久小说下载网| 大香蕉啪啪啪| 婷婷六月色| 婷婷五月天小说网| 最新va在线播放| 五月色婷婷AV| 精品久久久久久久久久久久人妻| 99在线视频精品| 超碰成人电影| www.99热这里精品| 丁香五月婷婷社区| 亚洲色五月婷婷| 色色色综合| 99热在线精品播放| 日韩视频99| 极品人妻VideOssS人妻| www.色五月天.com| 成人视频婷婷| 五月天开心网| 无码任你操| 色五月婷激情| 婷婷开心五月| 久8色色| 丁香五月婷婷动漫| 久久丁香五月综合六月激情红杏视频| 操操精品| 婷综合六月| 色欲婷婷五月天丁香| 色色五月天丁香| 欧美性爱一区| 激情宗合 激情宗合| 欧美A片在线视频免费观看| 色婷婷亚洲综合天堂| 精品一二三区久久AAA片| 婷婷久久久| 五月天综合在线| 国产午夜一区二区三区| 熟妇内谢69XXXXXA片| 婷婷综合激情| 操逼电影免费看| 欧美激情中文字幕| 丁香六月婷婷综合色| 99re这里只有精品99| 激情五月综合ì香亚洲| 婷婷五月天va| 婷婷五月天手机版视频| 国产密乳av一区二区三区四区| 婷婷五月天综合小说网| 97欧美在线| 丁香五月激情综合| 被男人添B超爽视频| 国产黄色大片| 牛牛色av| 婷婷va| 中文字幕无码人妻少妇免费视频| 1024人妻无码中文字幕| 五月天色软件| 99国产欧美视频| 9一精品视频观看| 狠干综合| 国产99精品免费视频| 青青草护士中出内射-欧美电影在线天堂新版| 天天日综合网射| 五月天婷婷色播综合在线| 婷婷五月情| 91九色欧美| 国产真实乱了老女人视频 | 天天摸天天高潮天天爽| 97精品欧美91久久久久久久| 亚洲精品大片| 亚洲精品V天堂中文字幕| 99久久久久久www| 色综合com| 26uuu淫色| 97干视频在线| 婷婷五月天视频| www.91av.com| 丁香五月开心亚洲| 丁香六月婷月91婷月| 日日杆天天| 99久久婷婷国产综合| 九九亚洲| 亚洲成人av在线观看| 综合99在线| 丁香五月综合在线观看| 99热这里只有精品9| 色九月欧美| 99热香港| 日本综合久久| 亚洲综合色婷| 六月婷婷无码| 色亚洲激情| 五月亭亭直播| www.99操| 综合97五月| www.久久99热地址发布| 男女啪啪做爰高潮无遮挡| 激情五婷网| 婷婷五月开心中文字幕在线| 开心五月天激情网| 久婷| 永久地址 色| 中文毛片无遮挡高潮免费| Av大香蕉| 婷婷丁香激情综合色情| 亚洲春色奇米影视| 五月丁香视频在线观看| 这里只有精品免费| 五月婷婷激情在线| 亚洲色欲AAAAAA| 日本久久综合| 色色色色色色色色色色色色色97| 97人人操人人操人人操人人| 色五月婷婷天天干| 看片视频在线免费日产在线看| 97久久综合网| 天天做综合| 亚洲激情五月天| 97在线视频观看| 五月天婷婷丁香| AVV黄| 五月丁香啪| 草草色情综合网| 亚洲成人网无码| 日韩无码色色| 色婷婷婷av| 超碰国产在线| 97色在线视频| 天天弄天天操| 婷婷五月电影| 婷婷丁香人妻天天爽| 欧美超碰亚洲| 播播网色播播| 天天操加勒比| 26uuu成人网| 99色五月| 久久久五月天| 丁香五月激情综合婷综| 五月草影视| 久久国产一区二区三区| 热久久视频99| 欧美日韩精品一区二区三区钱| 五月激情婷婷女| 人操人人| 97婷婷五月天| 9热在线| 天天干-天天日| 沈娜娜av| 淫荡综合网| 欧美成人精品A片免费一区99| 五月婷婷色| 国产精品18久久久| 亚洲第一第二网站| 色婷婷av综合网| 欧美色色色色色色| 爱性综合网| 欧美综合激情| 五月天激情网站| 日本专区久久| 激情综合一| 日本97久久久精品| 五月婷婷六月丁香| 亚洲综合在线伊人婷| 久久狠狠干| 五月综合激情视频| 亚洲无码影音| 天堂久久婷婷| 久久久999精品| 91操碰| 九九99在线观看视频| 玖玖99婷婷| 丁香婷婷色色| 欧美婷婷五月无砖| 91久久九九| 激情六月婷婷| 九九热这里有精品23| 色婷大香蕉| 五月天.com| 99er免费在线观看| 熟女色色一区二区| www.99久| 婷婷丁香六月五月天| 日日夜夜天天| 亚洲欧洲午夜成人精品av| 婷婷综合精品| 欧美在线干| 久久性爱网站| 外国碰视频网站97| 九九色精品| 日本色爽| 婷婷五月激情丁香激情| 激情综合文学| 超碰人人99| 蜜臀九九九九| 婷婷色偷拍| 色135综合网| 五月丁香在线观看| 婷婷激情五月天在线视频| 亚洲无码yw| 五月丁香综合啪啪| 99国产精品久久久久久久久久久 | 色135综合网| 久热欧美| 天天噪夜夜爽| 婷婷丁香色性爱| 99精品视频在线观看| 高清无码视频网址| 五月丁香六月婷| 色五月中文字幕| 色五月播五月| 久8色色| 另类综合激情| 狠干综合| 99色综合久久| 99热久久这里只有精品| 99无码精品| 久婷婷五月激情| 人人操碰| 1024国产在线| 激情六月丁香| 人人操AV| www.henhengan| 丁香六月婷婷综合色| 九九色欲网| 91精品国产日韩91久久久久久国模| www.金莲av| 超喷97免费在线视频| 伊人狠狠丁香婷婷综合尤物| 人人摸人人摸| 熟女激情网| 金桔一区二区ab地址| 婷婷激情97| www99热| 色五月亚洲| 欧美色性色好| 99精品视频免费观看| 婷婷亚洲激情在线观看视频| 亚洲一区二区无遮挡A片| 99国产精品白浆在线观看免费| 丁香六月情| 婷婷五月丁香六月| 五月丁香婷婷激情| 五月丁香999| 六月婷五月丁香| 三级三久久线久久99久目本WW| 国产av网| 婷婷丁香六月天激情四射网| 亚洲视频在线网站| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 26uuu在线观看| 婷婷九月丁香| 六月丁香婷婷综合狠狠爱夜夜爱| 狠狠操狠狠插| 99热日韩| 色五月天成人| 激情综合网激情五月天| WWW99热| 超碰免费人人| 婷婷五月色惰| 日本色色视频| 色播五月天激情| 激情开心五月天婷婷基地丁香社区| 亚洲色综合性| 夜夜操天天干| 射区导航| 99久在线精品99re8热| 色婷精品91| 荷兰av一级| 天天干夜夜谢| 久久女人天堂| 日本久久性| 色99色| 99热官网精品在线| 中国女人内射6XXXXX| 在线只有精品| 色色9 9| 久草免费福利视频| 色婷婷五月综合激情中文字幕| 色狠狠色噜噜AV天堂五区| 色色a| 亚洲无码 图片区| 狠狠干.com| 好色婷婷| 激情深爱婷婷网| 亭亭五月天黑人2014| 思思热再线视频| 婷婷激情五月综合丁| 狠狠五月天| 色五月 五月婷婷| 一本婷婷丁香久久 | 日韩人妻无码一区二区| www.色擼擼.com| 婷婷涩五月| 97香蕉久久超级碰碰高清版 | 凹凸7777操操操| 北条麻妃伊人| 五月天婷婷社区久久综合| 秋霞AV美国| 中文字幕,综合,91| 五月天淫乱视频| 久久a热| 五月天成人在线视频网站| 亚洲av综合在线| 97香蕉碰碰人妻国产欧美| 色99日韩| 激情综合五月色丁香婷婷| 中文字幕性爱丰满| 色五月首页| 九月婷婷综合色干| 成人在线高清| 婷婷五月免费观看| 91要啪| 激情网五月| 国产综合丁香五月天| 久久婷婷五月综合成人d啪| 丁香九月婷| 天天日天天爱天天噪| 狠狠99| 丁香激情综合| 五月天婷婷综合久久| 99热只有国产在线精品| 婷婷九月丁香| 五月婷久久综合| 91在线日| 午夜不卡成人一区二区| 91色综合网| 亚洲综合在线视频| 色色色色色色综合网| 99热第一页| 久久er免费视频| 久久免费精彩视频| www.夜夜操| 久草婷| 丁香花五月天| 久久综合九九| 久一网站| 99色色网站| 九九综合九九| 国产伦亲子伦亲子视频观看| 99久久亚洲国产| 人人草成人视频| 97人人操人人| 五月丁香婷婷五月色| 五月丁香色婷婷婷基地| 五月丁香成人| 久久久天堂国产精品女人| 久久婷婷五月天激情新地址| 丁香五月激情综合啪啪| 欧美电影在线播放| 九九综合视频在线观看| 综合激情网激情五月。| 人妻丰满精品一区二区A片| 九九超碰人人| 毛片毛片毛片毛片| 色色色色色色色色色影院| 久久伦乱| 99热资源在线| 成人网在线视频| 日本天天操| www.色九月| 思思色综合网站| 日韩999| 久久久久久97| 色五开心五月五月深深爱| 天天色天天操天天射| 色婷婷综合视频| 六月丁香VA| 日本强伦片中文字幕免费看| 久久激情综合| 人人操91| 狠狠草网| 婷婷五月色亚洲| 蒲京久久无码视频| 97婷婷五月天| 五月天堂色色| 激情五月亚洲| 黑人巨粗进入警花疼哭A片| www,色中色|