国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

醫(yī)藥信息管理系統(tǒng)數(shù)據(jù)庫設(shè)計:從E-R圖到事務(wù)扣庫存的完整實戰(zhàn)

醫(yī)藥信息管理系統(tǒng)數(shù)據(jù)庫設(shè)計:從E-R圖到事務(wù)扣庫存的完整實戰(zhàn) 簡介面向數(shù)據(jù)庫課程設(shè)計或醫(yī)藥行業(yè)信息化入門學習者的完整項目資料包主題為醫(yī)藥信息管理系統(tǒng)。系統(tǒng)圍繞基本信息、進貨、庫房、銷售與財務(wù)統(tǒng)計五大模塊展開覆蓋藥品/員工/客戶/供應(yīng)商維護、入庫盤點、銷售退貨和日/月報表等典型業(yè)務(wù)適合用 MySQL 完成課程設(shè)計或理解 Java Web 項目結(jié)構(gòu)。壓縮包共 335 個文件、約 4.05MB以 54 個 Java 源碼文件、38 個 HTML 頁面、44 個 JS 腳本和 12 個 CSS 樣式為主并含 SQL 數(shù)據(jù)庫腳本、Maven 配置及說明文檔150 個 GIF 動圖可輔助查看界面效果與操作流程。已有 71 人學習。通過該項目可借鑒模塊劃分、數(shù)據(jù)庫表設(shè)計、前后端組織方式和 Maven 工程搭建思路進而快速改造為符合自身選題的課設(shè)作品。1. 數(shù)據(jù)庫課設(shè)醫(yī)藥信息管理系統(tǒng)先想清楚這三點再開寫已經(jīng)把選題盯在醫(yī)藥信息管理系統(tǒng)上的人多半是因為它業(yè)務(wù)貼近生活有藥、有供應(yīng)商、有入庫出庫、有銷售和處方字段多但是不抽象做出來能演示的頁面也多。但真的動手后你會發(fā)現(xiàn)90%的課設(shè)翻車案例不是不會寫增刪改查而是把表設(shè)計成了“藥品表一張、銷售表一張”的玩具結(jié)構(gòu)答辯時老師問一句“一張?zhí)幏嚼锇鄠€藥品怎么查”就卡住。這個課設(shè)的核心考點從來不是界面上有多少個按鈕而是三件事進銷存的庫存怎么在不丟流水的前提下扣減、處方明細和主單怎么用外鍵關(guān)聯(lián)、以及多人同時開單時怎么保證庫存不為負。這篇筆記會按我踩過的坑來拆解整套方案適合正在做數(shù)據(jù)庫課設(shè)、以及準備把它當作品集項目去優(yōu)化的同學。先從業(yè)務(wù)模型說起因為表結(jié)構(gòu)錯了后面所有代碼都是在給錯誤打補丁。2. 從業(yè)務(wù)到E-R圖把醫(yī)藥庫存、供應(yīng)商和處方單拆成能交差的模型圖2.1 醫(yī)藥信息管理系統(tǒng)的核心業(yè)務(wù)閉環(huán)任何進銷存系統(tǒng)都繞不開“采購、入庫、建檔、在庫、出庫、銷售”這條線。醫(yī)藥信息管理系統(tǒng)比普通商品管理特殊在兩點藥品有“批準文號”和“有效期”出庫的時候必須先進先出不能把快過期的藥壓在庫底銷售環(huán)節(jié)涉及處方一張?zhí)幏娇梢蚤_多種藥品還要記錄醫(yī)生、藥房和數(shù)量。所以你在課設(shè)里至少要覆蓋下面這個閉環(huán)藥品錄入基礎(chǔ)檔案 → 供應(yīng)商供貨生成入庫單 → 入庫單明細增加庫存 → 銷售/處方開單 → 扣減庫存 → 生成銷售流水。任何一個環(huán)節(jié)斷了比如入庫時只改了庫存表而沒寫入庫明細或者銷售時只寫了銷售單而沒扣庫存后面的統(tǒng)計就會對不上。建模的第一件事不是打開工具畫圖而是把業(yè)務(wù)規(guī)則列成清單。我習慣先寫出來“藥品必須屬于某個分類”“同一供應(yīng)商可以供應(yīng)多種藥品”“一張入庫單包含多條入庫明細每個明細對應(yīng)一種藥品和一個庫存變動”“一張銷售單包含多條明細每條明細對應(yīng)一種藥品和銷售數(shù)量”“不允許銷售庫存為0的藥品”。這些規(guī)則直接決定了實體和關(guān)系也決定了外鍵加在哪里。數(shù)據(jù)庫增刪改查只是最后一步業(yè)務(wù)邊界定了表結(jié)構(gòu)就自然出來了。2.2 從業(yè)務(wù)規(guī)則反推實體與關(guān)系先定主鍵和外鍵按上述規(guī)則實體可以拆成藥品信息、藥品分類、供應(yīng)商、入庫單、入庫單明細、銷售單處方、銷售單明細、用戶。其中“銷售單”在醫(yī)藥場景里通常就是“處方”可以復(fù)用一張表增加字段區(qū)分是柜臺銷售還是處方銷售。主鍵的選擇遵守一個原則能用業(yè)務(wù)編號就用業(yè)務(wù)編號但業(yè)務(wù)編號不穩(wěn)定時就用自增ID。比如藥品表的“藥品ID”可以用自增而“批準文號”雖然唯一但不同劑型可能同號不能當主鍵。入庫單、銷售單建議用單號字段作為邏輯主鍵同時再加一個自增內(nèi)部ID原因后面在避坑章節(jié)細說。外鍵關(guān)系要畫成四條主線。一是“藥品分類”和“藥品”之間是一對多分類ID是藥品表的外鍵二是“供應(yīng)商”和“入庫單”之間是一對多供應(yīng)商ID是入庫單外鍵三是“入庫單”和“入庫單明細”是一對多入庫單ID是明細表外鍵四是“銷售單”和“銷售單明細”是一對多銷售單ID是明細表外鍵。藥品和供應(yīng)商之間不直接給外鍵而是通過入庫單明細建立的“多對多”關(guān)聯(lián)。這樣設(shè)計的好處是你以后想查“哪個供應(yīng)商是某種藥的主要來源”時只要對入庫明細做GROUP BY不需要用逗號拼接多值字段。2.3 從業(yè)務(wù)規(guī)則反推E-R圖的畫法要點E-R圖在課設(shè)報告里占比很高但很多人畫成了“一堆表連一堆表”這沒有把關(guān)系表達清楚。正確的做法是先畫最重要的關(guān)系在“銷售單明細”實體上畫兩個菱形一邊連“銷售單”一邊連“藥品”中間標注“包含N種”。在“入庫單明細”實體上同樣連“入庫單”和“藥品”。然后單獨抽出一張“用戶”實體與“銷售單”之間畫“審核/開單”的連線。最后才是“供應(yīng)商”和“分類”這類附屬實體從外向里連接到對應(yīng)的主實體。畫E-R圖的技巧是用“實體關(guān)系實體”的三元組去自檢從銷售單出發(fā)經(jīng)過“包含關(guān)系”到銷售單明細再到藥品這叫“主表-明細-基礎(chǔ)檔案”是關(guān)系模式里最普遍也最容易考的一對多結(jié)構(gòu)。老師很喜歡問“為什么不把明細直接塞進銷售單表”答案是因為一張?zhí)幏娇梢詫懚鄠€藥塞進去就要用重復(fù)字段或者逗號分隔既違反第一范式也查不了“某種藥賣了多少錢”這種聚合SQL。把這句話寫進課設(shè)報告分數(shù)基本穩(wěn)了。2.4 范式級別的取舍第三范式夠用反范式看場景教科書讓你規(guī)范到第三范式但實際設(shè)計里我會給自己留兩個后門。第一個是“庫存數(shù)量”字段。嚴格說庫存可以由“入庫明細合計 - 銷售明細合計”推導(dǎo)出來屬于冗余不滿足第二范式。但課設(shè)階段如果每查一次庫存都要匯總一次明細表數(shù)據(jù)量一大就慢所以我保留“藥品表.庫存數(shù)量”字段同時用事務(wù)保證每次入庫和銷售都同步更新它。這個冗余在答辯現(xiàn)場反而能展開講“用空間換查詢時間”屬于主動反范式。第二個后門是“藥品分類”在藥品表里存了個分類名稱的冗余字段。理論上應(yīng)該只存分類ID通過JOIN去查名稱但為了方便頁面表格展示和減少JOIN次數(shù)我在藥品表里冗余了“分類名稱”。代價是分類改名時要做同步更新這在課設(shè)場景基本不發(fā)生。其余所有表嚴格按第三范式來沒有重復(fù)字段組所有包含非主屬性的字段都依賴主鍵而且依賴的是完整主鍵而不是部分依賴。中間張表“入庫單明細”用的聯(lián)合主鍵入庫單ID藥品ID注意明細里不能出現(xiàn)貨物的“倉庫位置”這種只依賴入庫單的字段否則就是部分依賴需要拆出去。3. 建庫建表與基礎(chǔ)數(shù)據(jù)一套可直接跑的MySQL腳本3.1 建庫與字符集選擇utf8mb4和InnoDB是默認答案寫腳本第一步是先定字符集和存儲引擎。字符集我固定用utf8mb4不要用utf8因為utf8在MySQL里最多存3字節(jié)遇到生僻藥品名或特殊符號會出現(xiàn)亂碼。排序規(guī)則用utf8mb4_unicode_ci它對中文搜索比較友好。存儲引擎選InnoDB這是為了保證事務(wù)、外鍵約束和行級鎖可用。MyISAM雖然查詢快一點但不支持事務(wù)和外鍵在這個項目里沒有任何優(yōu)勢。數(shù)據(jù)庫創(chuàng)建語句如下CREATE DATABASE IF NOT EXISTS pharma_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE pharma_db;這里有兩個容易被忽略的點。一是“IF NOT EXISTS”在課設(shè)里很實用重新跑腳本不會報錯二是COLLATE如果不下發(fā)后續(xù)建表時字段默認排序規(guī)則各不相同做WHERE查詢比較字符串時容易報“Illegal mix of collations”。建議把所有表、字段統(tǒng)一到同一個COLLATE這是血淚經(jīng)驗。3.2 藥品表、供應(yīng)商表、入庫表、銷售表的完整建表語句核心表一共五張再加上兩張輔助表。先建被依賴的基礎(chǔ)表再建主表最后建明細表避免外鍵引用錯誤。下面是藥品表、供應(yīng)商表和用戶表的示例CREATE TABLE drug_category ( category_id INT AUTO_INCREMENT PRIMARY KEY, category_name VARCHAR(50) NOT NULL UNIQUE, remark VARCHAR(200) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci; CREATE TABLE drug ( drug_id INT AUTO_INCREMENT PRIMARY KEY, drug_code VARCHAR(30) NOT NULL UNIQUE COMMENT 藥品編碼, drug_name VARCHAR(100) NOT NULL, category_id INT NOT NULL, specification VARCHAR(50) COMMENT 規(guī)格, unit VARCHAR(20) DEFAULT 盒, purchase_price DECIMAL(10,2) NOT NULL, sale_price DECIMAL(10,2) NOT NULL, stock_quantity INT NOT NULL DEFAULT 0, expire_date DATE NOT NULL, supplier_id INT COMMENT 默認供應(yīng)商, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, CONSTRAINT fk_drug_category FOREIGN KEY (category_id) REFERENCES drug_category(category_id), CONSTRAINT fk_drug_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci; CREATE TABLE supplier ( supplier_id INT AUTO_INCREMENT PRIMARY KEY, supplier_code VARCHAR(20) NOT NULL UNIQUE, supplier_name VARCHAR(100) NOT NULL, contact_person VARCHAR(30), phone VARCHAR(20), address VARCHAR(200) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci; CREATE TABLE sys_user ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password_hash VARCHAR(64) NOT NULL, real_name VARCHAR(30), role VARCHAR(20) NOT NULL DEFAULT cashier COMMENT admin/manager/cashier ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;建表順序很重要先建drug_category再建supplier然后建drug否則drug表外鍵指向的表還不存在。注意drug表里的supplier_id設(shè)為“默認供應(yīng)商”表示一種藥可以對應(yīng)多個供應(yīng)商時默認選擇其中一個真正的供應(yīng)商和藥品的多對多關(guān)系要由入庫單明細來體現(xiàn)。price字段用DECIMAL而不是FLOAT后面避坑章節(jié)會專門解釋。接下來是入庫單和入庫明細。主表記錄這次進貨的整體信息明細表記錄每一種藥品進了多少、單價多少CREATE TABLE stock_in ( stock_in_id INT AUTO_INCREMENT PRIMARY KEY, stock_in_no VARCHAR(30) NOT NULL UNIQUE, supplier_id INT NOT NULL, operator_id INT NOT NULL, stock_in_date DATETIME NOT NULL, total_amount DECIMAL(12,2) NOT NULL, remark VARCHAR(200), CONSTRAINT fk_in_supplier FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id), CONSTRAINT fk_in_operator FOREIGN KEY (operator_id) REFERENCES sys_user(user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci; CREATE TABLE stock_in_detail ( stock_in_id INT NOT NULL, drug_id INT NOT NULL, quantity INT NOT NULL, cost_price DECIMAL(10,2) NOT NULL, production_date DATE, expire_date DATE, PRIMARY KEY (stock_in_id, drug_id), CONSTRAINT fk_detail_in FOREIGN KEY (stock_in_id) REFERENCES stock_in(stock_in_id), CONSTRAINT fk_detail_drug FOREIGN KEY (drug_id) REFERENCES drug(drug_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;銷售單和銷售明細與入庫結(jié)構(gòu)類似但多了一個“處方醫(yī)生”和“客戶姓名”的字段用來貼近醫(yī)藥管理場景CREATE TABLE sale_order ( sale_id INT AUTO_INCREMENT PRIMARY KEY, sale_no VARCHAR(30) NOT NULL UNIQUE, customer_name VARCHAR(50), doctor_name VARCHAR(30), cashier_id INT NOT NULL, sale_date DATETIME NOT NULL, total_amount DECIMAL(12,2) NOT NULL, status VARCHAR(20) DEFAULT completed, CONSTRAINT fk_sale_cashier FOREIGN KEY (cashier_id) REFERENCES sys_user(user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci; CREATE TABLE sale_order_detail ( sale_id INT NOT NULL, drug_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL(10,2) NOT NULL, amount DECIMAL(12,2) NOT NULL, PRIMARY KEY (sale_id, drug_id), CONSTRAINT fk_detail_sale FOREIGN KEY (sale_id) REFERENCES sale_order(sale_id), CONSTRAINT fk_detail_sale_drug FOREIGN KEY (drug_id) REFERENCES drug(drug_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;銷售明細表里的price字段保存的是“成交時賣的單價”不要直接去關(guān)聯(lián)藥品表的sale_price因為以后藥品調(diào)價了歷史銷售記錄還要保留當時的金額。這個字段叫“快照字段”在庫存類系統(tǒng)里非常常見。入庫明細里的cost_price同理也必須是入庫那一刻的實際成本價。3.3 約束設(shè)計主鍵、外鍵、CHECK與默認值怎么配合主鍵設(shè)計上所有自增主鍵都用INT如果覺得數(shù)據(jù)量會很大可以換成BIGINT但課設(shè)階段沒必要。唯一鍵用在業(yè)務(wù)單號上比如stock_in_no、sale_no用UNIQUE約束確保不會重復(fù)生成。外鍵約束必須有這是課設(shè)評分能直觀看到的數(shù)據(jù)庫知識點但不要在明細表上對明細記錄建“無用的級聯(lián)刪除”。正確的是主單刪除時明細應(yīng)該同時刪除所以外鍵用ON DELETE CASCADE藥品和分類之間分類不能刪要限制所以用ON DELETE RESTRICT。CHECK約束很多同學會寫比如庫存不能為負、價格大于0但MySQL 8.0.16之前的版本不強制執(zhí)行CHECK只能在應(yīng)用層校驗。我在建表腳本里仍然寫CHECK因為報告里可以寫“數(shù)據(jù)庫層面也有約束”同時應(yīng)用層再攔一道。默認值盡量給全創(chuàng)建時間用DEFAULT CURRENT_TIMESTAMP銷售狀態(tài)用DEFAULT completed數(shù)量用DEFAULT 0。這樣INSERT語句可以少寫很多字段而且不會因為漏填導(dǎo)致空指針。3.4 初始化數(shù)據(jù)與視圖讓演示狀態(tài)更合理建完表還要造一批演示數(shù)據(jù)不能用網(wǎng)上的“學生表”隨便填。我一般造5個藥品分類、20個藥品、5個供應(yīng)商、3個用戶再造3張入庫單和若干銷售單。一個重要技巧是讓部分藥品庫存低于“預(yù)警線”比如10盒部分藥品的過期時間在3個月內(nèi)這樣后面的“有效期預(yù)警”和“庫存不足查詢”視圖就有數(shù)據(jù)可演示。INSERT語句我就不全貼了給個示例INSERT INTO drug_category (category_name) VALUES (心腦血管類), (消化系統(tǒng)類), (呼吸系統(tǒng)類); INSERT INTO supplier (supplier_code, supplier_name) VALUES (SP001, 華東醫(yī)藥), (SP002, 華北制藥); INSERT INTO sys_user (username, password_hash, real_name, role) VALUES (admin, hashed_value, 管理員, admin), (cashier01, hashed_value, 張收銀, cashier); INSERT INTO drug (drug_code, drug_name, category_id, unit, purchase_price, sale_price, stock_quantity, expire_date) VALUES (DRUG001, 阿司匹林腸溶片, 1, 盒, 8.50, 15.00, 100, 2026-05-30), (DRUG002, 奧美拉唑膠囊, 2, 盒, 12.00, 20.00, 8, 2026-01-15);這里故意把奧美拉唑的庫存設(shè)為8低于預(yù)警線演示時直接跑查詢就能出效果。視圖建議建兩個一個是“庫存預(yù)警_含分類名”一個是“銷售統(tǒng)計_按日按月”。視圖的好處是答辯時不用現(xiàn)場敲很長的SQL讓評委看視圖定義更直觀CREATE VIEW low_stock_view AS SELECT d.drug_id, d.drug_name, d.stock_quantity, d.expire_date FROM drug d WHERE d.stock_quantity 10 OR d.expire_date DATE_ADD(CURDATE(), INTERVAL 90 DAY);4. 核心業(yè)務(wù)SQL寫法增刪改查之外的加分項4.1 庫存扣減與流水記錄一個銷售事務(wù)怎么寫醫(yī)藥信息管理系統(tǒng)的核心不是“藥品增刪改查”而是“銷售完成后銷售單、明細、庫存、臺賬要同時更新”。建議把這個過程寫成一個存儲過程或者事務(wù)模板答辯時展示數(shù)據(jù)庫并發(fā)鎖和事務(wù)的一致性控制。下面是我常用的銷售開單事務(wù)寫法START TRANSACTION; -- 1. 插入銷售主單 INSERT INTO sale_order (sale_no, customer_name, doctor_name, cashier_id, sale_date, total_amount) VALUES (SO20250601001, 張三, 王醫(yī)生, 2, NOW(), 0); SET sale_id LAST_INSERT_ID(); -- 2. 插入銷售明細同時計算總金額 INSERT INTO sale_order_detail (sale_id, drug_id, quantity, price, amount) SELECT sale_id, d.drug_id, 2, d.sale_price, d.sale_price * 2 FROM drug d WHERE d.drug_code DRUG001; -- 3. 更新藥品庫存并且強制要求庫存不能為負 UPDATE drug SET stock_quantity stock_quantity - 2 WHERE drug_id 1 AND stock_quantity 2; -- 4. 檢查是否有行被更新如果沒有表示庫存不足 SELECT ROW_COUNT() AS affected_rows; -- 5. 如果affected_rows為0則回滾 -- 注意在存儲過程中可以用IF判斷這里僅演示SQL順序 COMMIT;這個事務(wù)的寫法和純增刪改查的區(qū)別在第三步UPDATE語句里帶了AND stock_quantity 2這在MySQL里是“條件更新”相當于數(shù)據(jù)庫層幫你做了一次庫存校驗。執(zhí)行UPDATE后如果影響行數(shù)為0說明庫存不夠就應(yīng)該回滾。更規(guī)范的寫法是用SELECT ... FOR UPDATE給藥品行加鎖再判斷庫存量但因為課設(shè)單機環(huán)境下并發(fā)不高用條件更新已經(jīng)足夠。這種寫法能避免“庫存被扣成負數(shù)”的經(jīng)典錯誤。4.2 藥品有效期預(yù)警和庫存下限查詢用視圖與條件查詢實現(xiàn)預(yù)警功能很出效果而且只要一條SQL。除了前面建的低庫存視圖還需要按有效期排序的查詢。MySQL的DATEDIFF函數(shù)可以直接算出過期距離天數(shù)SELECT drug_name, expire_date, DATEDIFF(expire_date, CURDATE()) AS remain_days FROM drug WHERE DATEDIFF(expire_date, CURDATE()) 90 ORDER BY remain_days ASC;這條查詢放在“庫存管理”頁面按照剩余天數(shù)從少到多排序就是很直觀的效期提醒。如果你想升級成“每批藥品獨立效期管理”就要在入庫明細里增加生產(chǎn)日期和效期字段出庫時按照“先入先出”的原則選擇最早批次的庫存。課設(shè)里掛在藥品表上的expire_date一個字段就夠演示但你在報告里如果能寫清楚“藥品表上的效期是最新批次的效期更嚴格的做法是把效期放明細”老師會覺得你想過這個問題。4.3 存儲過程與觸發(fā)器課程設(shè)計的加分項很多學校的數(shù)據(jù)庫課設(shè)評分點里有“存儲過程”和“觸發(fā)器”這兩個數(shù)據(jù)庫對象。存儲過程建議封裝兩個一個是“藥品采購入庫”在insert入庫單和明細后循環(huán)更新藥品的庫存和最近入庫價另一個是“按時間范圍統(tǒng)計銷售排名”用GROUP BY生成報表。下面是一個簡單入庫存儲過程的模板DELIMITER $$ CREATE PROCEDURE sp_stock_in( IN p_supplier_id INT, IN p_operator_id INT, IN p_drug_code VARCHAR(30), IN p_quantity INT, IN p_cost_price DECIMAL(10,2) ) BEGIN DECLARE v_drug_id INT; DECLARE v_stock_in_id INT; SELECT drug_id INTO v_drug_id FROM drug WHERE drug_code p_drug_code; INSERT INTO stock_in (stock_in_no, supplier_id, operator_id, stock_in_date, total_amount) VALUES (CONCAT(SI, DATE_FORMAT(NOW(), %Y%m%d%H%i%s)), p_supplier_id, p_operator_id, NOW(), p_quantity * p_cost_price); SET v_stock_in_id LAST_INSERT_ID(); INSERT INTO stock_in_detail (stock_in_id, drug_id, quantity, cost_price, expire_date) VALUES (v_stock_in_id, v_drug_id, p_quantity, p_cost_price, DATE_ADD(NOW(), INTERVAL 2 YEAR)); UPDATE drug SET stock_quantity stock_quantity p_quantity, purchase_price p_cost_price WHERE drug_id v_drug_id; END$$ DELIMITER ;注意DELIMITER的使用在命令行和Navicat里存儲過程體中多個分號會被MySQL當成語句結(jié)束DELIMITER $$就是為了臨時把終止符改成$$避免過程體內(nèi)插值報錯。參數(shù)名前面的p_后綴是為了避免和列名沖突這算是個小習慣。觸發(fā)器可以作為“庫存不足自動提醒”的補充。比如在銷售明細表上做一個AFTER INSERT觸發(fā)器自動更新藥品表的庫存觸發(fā)器代碼不長但它會隱藏業(yè)務(wù)邏輯讓日后排錯變難。我的建議是課設(shè)里寫一個觸發(fā)器證明你會用就行核心業(yè)務(wù)邏輯放存儲過程或應(yīng)用層不要把大量規(guī)則都壓進觸發(fā)器。觸發(fā)器一旦出錯SQL很難調(diào)試而且觸發(fā)器里的SELECT不能往臨時表以外的地方返回結(jié)果容易被繞暈。4.4 權(quán)限控制不同角色看到不同的菜單和記錄數(shù)據(jù)庫層的權(quán)限控制要做到基于角色的訪問控制。我的做法是在sys_user表里加role字段應(yīng)用層根據(jù)角色選擇查詢語句。比如管理員可以看到所有用戶的銷售記錄收銀員只能看到自己的。SQL層面可以用WHERE條件拼角色入?yún)?- 應(yīng)用層傳遞當前用戶的 role 和 user_id SELECT so.sale_no, so.sale_date, so.total_amount, u.real_name AS cashier FROM sale_order so JOIN sys_user u ON so.cashier_id u.user_id WHERE ( role admin OR so.cashier_id user_id ) ORDER BY so.sale_date DESC;這個SP里用變量role和user_id表示從應(yīng)用層傳入的會話變量。數(shù)據(jù)庫課上講視圖時也可以給一個“我的銷售記錄”視圖視圖定義里帶上DATABASE用戶函數(shù)但MySQL里做行級安全不太方便所以我在視圖和存儲過程之間選擇了存儲過程作為主力。數(shù)據(jù)庫連接池場景下每個請求建立連接后要執(zhí)行SET role ?才能保證不同人的數(shù)據(jù)隔離。5. 課設(shè)避坑數(shù)據(jù)庫設(shè)計階段的五個高頻問題5.1 藥品和供應(yīng)商關(guān)系做成單表導(dǎo)致供應(yīng)商覆蓋現(xiàn)象藥品表里有一個supplier_name字段一次給同一個藥品維護了兩個供應(yīng)商后來發(fā)現(xiàn)只能存一個另一個被覆蓋了。原因把多對多關(guān)系硬塞進基礎(chǔ)檔案表藥品表根本沒法表達“同一藥品由多個供應(yīng)商供貨”。解決拆中間表或依賴入庫明細表讓每次進貨同時記錄“供應(yīng)商藥品批次”這樣既能查某個藥品的歷史供應(yīng)商又能在報表里按供應(yīng)商聚合采購金額。課設(shè)報告里明確寫出“供應(yīng)商和藥品是多對多關(guān)系通過入庫單明細表實現(xiàn)”這一句話就能證明你懂數(shù)據(jù)庫關(guān)系。5.2 金額用FLOAT存儲對賬差了幾分錢現(xiàn)象錄入采購金額后列表頁顯示108.60導(dǎo)出的報表卻是108.599999。原因FLOAT和DOUBLE是浮點數(shù)二進制不能精確表示十進制小數(shù)拿來做金額會產(chǎn)生舍入誤差。解決所有金額字段一律改成DECIMAL(10,2)或DECIMAL(12,2)。DECIMAL是按數(shù)字存儲的加減乘除都精確。這個坑在醫(yī)藥系統(tǒng)里很致命因為進銷存對賬差一分都會引起麻煩。如果已經(jīng)建錯了表可以用ALTER TABLE來改字段類型但要暴露給所有相關(guān)表和存儲過程。5.3 銷售后沒有流水記錄庫存和報表對不上現(xiàn)象演示時先做一筆銷售然后打開庫存查詢發(fā)現(xiàn)庫存沒變。原因只往sale_order表插了一條記錄沒有同步更新drug表的stock_quantity也沒有在sale_order_detail里記錄明細。解決把銷售流程收斂到同一個事務(wù)里或者在應(yīng)用層用一個Service方法把“插入主表”“插入明細”“更新庫存”三步包在Transactional里。數(shù)據(jù)庫課設(shè)推薦用存儲過程因為課堂環(huán)境里前端語言可能沒法演示事務(wù)存儲過程能直接把事務(wù)行為展示在數(shù)據(jù)庫客戶端。別忘了最后再查一次庫存把扣減后的值顯示在界面上。5.4 外鍵濫用導(dǎo)致插入失敗考場手忙腳亂現(xiàn)象在明細表里插入數(shù)據(jù)時報“Cannot add or update a child row”然后整個銷售流程中斷。原因外鍵約束要求外鍵值必須在主表中存在。常見情況是先在明細分錄里引用了sale_id但sale_order還沒來得及提交自動生成的ID。解決先INSERT主表用LAST_INSERT_ID()拿到新ID再插入明細表。另一個典型錯誤是給“藥品分類”表外鍵加了ON DELETE CASCADE導(dǎo)致刪除一個分類時把所有藥品全刪了。分類屬于“被引用數(shù)據(jù)”應(yīng)該用RESTRICT禁止級聯(lián)刪除只有明細表才算“依賴數(shù)據(jù)”才適合用CASCADE。5.5 并發(fā)銷售時庫存變成負數(shù)現(xiàn)象兩個窗口同時賣最后一件藥兩個窗口都顯示庫存為1也都扣減成功最后庫存變成-1。原因先查庫存再更新庫存是“非原子操作”兩個會話在“查詢”階段讀到相同值后面各自做了減一導(dǎo)致數(shù)據(jù)庫并發(fā)鎖沒有真正保住庫存。解決把“判斷庫存大于0”和“扣減庫存”合并到一條UPDATE語句里也就是前面寫的UPDATE ... WHERE stock_quantity n。InnoDB默認行級鎖這條UPDATE會鎖住該藥品行第二個會話必須等第一個提交或回滾才能繼續(xù)這樣就避免了負庫存。如果有意演示悲觀鎖可以用SELECT stock_quantity FROM drug WHERE drug_id ? FOR UPDATE但注意事務(wù)結(jié)束后要立即提交否則鎖會一直占著這就是數(shù)據(jù)庫死鎖的高發(fā)場景。6. 把數(shù)據(jù)量做大用索引和執(zhí)行計劃給系統(tǒng)加分課設(shè)答辯到后期老師通常會問“如果這張表有幾十萬條記錄你的查詢還會快嗎”。這個問題別空談索引直接在MySQL里做一做往sale_order_detail表里用存儲過程灌入10萬條模擬數(shù)據(jù)再跑兩條等價的統(tǒng)計SQL對比執(zhí)行計劃里的掃描行數(shù)。我給一個可跑的模擬數(shù)據(jù)生成腳本DROP PROCEDURE IF EXISTS sp_generate_sale_data; DELIMITER $$ CREATE PROCEDURE sp_generate_sale_data(IN p_loop_count INT) BEGIN DECLARE i INT DEFAULT 0; DECLARE v_sale_id INT; SET AUTOCOMMIT0; WHILE i p_loop_count DO INSERT INTO sale_order (sale_no, customer_name, cashier_id, sale_date, total_amount) VALUES (CONCAT(BIG, DATE_FORMAT(NOW(), %Y%m%d%H%i%s), LPAD(i, 6, 0)), 批量客戶, 1, NOW(), 0); SET v_sale_id LAST_INSERT_ID(); INSERT INTO sale_order_detail (sale_id, drug_id, quantity, price, amount) VALUES (v_sale_id, FLOOR(1 RAND() * 20), FLOOR(1 RAND() * 5), 10.00, 0); SET i i 1; END WHILE; COMMIT; END$$ DELIMITER ; CALL sp_generate_sale_data(100000);跑完后再執(zhí)行EXPLAINEXPLAIN SELECT so.sale_date, so.total_amount FROM sale_order so WHERE so.sale_date BETWEEN 2025-01-01 AND 2025-12-31;在沒有索引時type列通常是ALL行數(shù)是全表統(tǒng)計隨后你在sale_date上建立索引再跑一遍EXPLAINtype會變成range。這就是一個很有說服力的現(xiàn)場調(diào)優(yōu)演示。接著做一個更貼近業(yè)務(wù)的口徑統(tǒng)計每一種藥賣了多少錢。SELECT d.drug_name, SUM(sod.amount) AS total_sale_amount FROM sale_order_detail sod JOIN drug d ON sod.drug_id d.drug_id GROUP BY d.drug_id, d.drug_name ORDER BY total_sale_amount DESC LIMIT 10;這條SQL在數(shù)據(jù)量上去以后要保證drug_id是主鍵、sale_order_detail的drug_id上有索引不然JOIN慢。這也是“數(shù)據(jù)庫同步工具”概念里經(jīng)常提到的索引問題如果兩張表關(guān)聯(lián)字段忘了建索引數(shù)據(jù)同步和實時查詢都會卡住。我的個人習慣是給每條核心查詢寫“優(yōu)化前”和“優(yōu)化后”兩版并把EXPLAIN結(jié)果截圖貼進課設(shè)報告。老師其實很清楚學生做的數(shù)據(jù)量不大他更在意你有沒有驗證的意識和排查手段。你只要做一次并不復(fù)雜的索引對比就能和其他交了個增刪改查的課設(shè)拉開差距。最后再說一句實在話數(shù)據(jù)庫課設(shè)的分數(shù)不是靠堆功能堆出來的而是靠表結(jié)構(gòu)合理、事務(wù)不丟數(shù)據(jù)、查詢有據(jù)可查這三個維度撐起來的。醫(yī)藥信息管理系統(tǒng)是個很好的載體把進銷存和中小型業(yè)務(wù)數(shù)據(jù)庫的常見問題都覆蓋了值得你多花兩個晚上把細節(jié)打磨好。希望這篇筆記能幫你在做課設(shè)和答辯的路上少踩幾個坑。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美丰满熟妇XXXX性ppX人交| 亚洲中文字幕av | 久久久久白虎| 亚洲欧美日韩夜夜| 中文字幕一区二区三区蜜桃视频| 精品丝袜无码一区二区三APP| 超碰91在线| 91日日夜夜| 中文字幕日韩人妻视频| 超碰在线人妻不卡| 俺去啦俺来也久久综合| 澳门人妻久久| 超碰免费97| 婷婷香蕉欧美在线一区二区三区| 国语精品av| 日本一区二区不卡精品| 亚洲成成熟女人综合一区二区| 日本三级一区二区 在线| 三上制服丝AV| 干我久操| 丁香五月天久久精品视频一区二区三区| 国产高清午夜成人在线观看| 毛片17S| 插插综合网天天影视网| 午夜天堂精品久久久久91| 精品少妇一区二区| 日本三级日本三级99| 无卡一区=区| 亚洲精品xxx| 国产久久一区二区| 免费人成?大片在线播放| 青青青草原| 国产成人无码高清| 日韩无限资源| 蜜桃精久三区| 囯产乱伦一区二区三女| 欧美熟妇精品黑人巨大91| 玖玖色综合| 美女网站91| 激情五月综合网| 欧美v日韩v亚洲v最新在线| 精品视频日日夜夜| 国产精品久久久久久高清无码免费看 | 884t在线| 免费人成?大片在线播放| 精品玖九九久| 人妻熟女一区二区三区在线| 亚州AV无码国产精品| 色香网| 天天综合91在线| 午夜性生活av免费在线看| 综合久欧洲| 国产精品久久久久亚洲av| 久久亚州大香蕉| 婷婷色网| 精品丝袜无码一区二区三APP| 99精品丰满人妻无码| 亚洲一区二区三区欧美日韩| 精品国产91内射久久| 18禁久久| 国产精品视频电影| 日韩av影片在线观看| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 好淫网一二三视区| 把腿张开老子CAO烂你| 久久黄黄黄| 丝袜制服字幕在线| 久草婷婷| 在线国产福利网址导航| 欧美天天干| 久久99精品国产| 丁香色五月 97干| 国产午夜在线观看| 亚洲日韩97| 97av在线观看| 人妻人人澡人人爽人人| 99性爱视频| 二男一女成人A片| 成人性交免费视屏| av久日| 国产原创精品| 亚洲欧洲综合视频在线| 伊人久久综合影院精品久久久| 日韩精品影视| 91日产欧美| 超碰三级秋霞| 色婷婷六月| 欧美日韩国产三级黄色| 日本韩国国产精品一区| 99无码| 中文字幕精品专区搜索结果91| 亚洲 中文 女同| 强免费黄色网址| 欧美一区二区日韩三区| 黄骗免费网站| 性天堂| 久久精品无码熟妇一区二区三区视频导航| 麻豆人妻少妇在线免费观看| 人人天天欧洲| 五月天婷婷综合| 亚洲二区精品在线观看| 免费日韩黄片| 少妇被c 黄 免费观看| 99超碰碰| 国产精品久久泡妞网站| 亚洲久久天堂| 2020中文字幕在线| 欧美成人国产精品| 欧美熟女妇同| 久草资源在线视频官方总站日韩丝袜美腿| 亚州伊人色综台| 久久久久久国产精品免费网站| 色在线综合| 精品人妻一区二区三区四区石在线| 中国91AV| 伊人九九九| 亚洲欧美洲综合| 久久中文字幕人妻熟av女蜜柚| 青青操视频在线| 欧美日韩亚洲高清不卡一区二区三区| 午夜精品一区二区三区三上悠亚| 桃色五月天| 久久婷五月天| 日本不卡卡一区| 熟妇熟女亚洲天堂网| 欧洲熟妇xxXx欧美老妇裸体| 色婷视频| 亚洲综合五月天| 99啪啪| 巨爆乳肉感一区二区三区竹菊影视| 日操粉逼逼| 免费看黄视频亚洲网站| 自慰白浆在线观看| 无码伊人久久大杳蕉中文无码| 五十路三级片| 久99| 日韩人妻少妇中文字幕| 国产污视频麻豆传媒一区二区 | 日韩91网| 探花视频免费观看国产专区| 强奸抽插av| 国产无码久久高清| 91在线无码精品秘 软件| 国产亚州高清国产拍精| 国产欧美伊人| 天天干天天日天天射黄色大片 | 欧美亚洲素人制服精品| 无码精品一区二区三区潘金莲| 色成人Www精品永久观看| 亚洲欧美中文日韩视频中国语| 久久五月综合| 亚洲一区二区 麻豆传媒| 欧美青青视频| 丁香7月婷婷| 青草一区二区| 一区二区三区高清天码| 日本久久网| 麻豆天美国美国产| 久久大陆| 综合少妇网| 加勒比伊人| 国产亚洲日韩在线三区黑人| 啊视频在线| 超碰97爽| 伊人久久亚洲色欲综合网站| 精品黄色电影| 男人高清无码一区二区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 亚洲图片婷婷五月天| 国产精品无码av嫩草| ?亚洲伊人伊成久久人综合网| 99色综合| 干B| 美女黄页网站| 另类亚洲一区二区三区| 五月婷婷啪啪| 狠插 制服 自拍| 午夜精品久久久久久久99| 黑丝制服中文字幕| 啪啪性爱免费视频| 99久久精品国产高潮| 67914亚洲精品| 亚洲中文字幕日产无码久久| 欧美亚州综合网图片| 国产又猛又粗又爽又黄| 思思热免费视频观看| 国产精品老熟女一区二区| 日韩人妻无码精品系列| 99999国产精品| 午夜啪| 无码国产精品久久久久| 欧美 亚洲 制服 精品| 97超碰免费人人性爱| 中国和日本人色哪个不下载能放| 秋霞免费无码视频日韩A片| 探花在线免费观看视频国产一区| 1024久久高清视频| 精品成人久久久人人亚洲| 国产精品内射婷婷一级二| 秋霞蝌科网日本一区| 欧美一区91大爱| 欧美综合网1| 97香蕉网| 99爱在线视频| 亚洲精品97中文字幕| 成人国产视频在线观看| 日韩精品99999| 97亚洲欧美日韩| 中文字幕成人乱码熟女精品国50| 26uuu性| 天天综合网91入口| 激情一区二区| 国产福利第一视频| 亚洲精品 欧美精品| 好吊色综合| 亚洲乱码国产乱码精网站| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 精品人妻中文字幕高清| 人妻久久久久久久久久久久久久久| Aa东京男人的天堂| 欧美aa一级片| 国产suv精品一区二区四| 国产精品久久泡妞网站| 韩国一级婬片A片AAAAA| 1024午夜激情男人的天堂| 亚洲婷婷综合网| 成人五月香网在线| 亚洲欧美伦综合| 婷婷综合五月| 四虎影视永久在线观看精品免费网站| 人妻献身系列第54部| 91 手机在线播放 绯色| 国产精品不卡少妇白| 亚洲古典另类欧美在线| 欧美熟女丝袜| 先锋激情∨在线视频播放| 青青草白白色| 韩国一级婬片A片无码天美| 人妻精品综合中文字幕在线| 国产精品播放| 丁香五月av| 九九九999久久久网站| 亚洲第一成人影院色播| 啊啊啊啊啊好大好舒服想要| 巨爆乳一区二区爆乳区| 久久久久久日韩| 欧美午夜色妇色鬼| 久久性爱精品一区| 97色欧州| 国产探花日韩援交| 久久精品成人一区二区三区蜜臀| 国产精品久久久久久久毛片1| 成人在线午夜视频一区| 久久久久久国产无码精品| 日韩人妻无码精品系列| 麻花传媒免费网站在线观看| 超碰是碰在线观看| 日韩av乱伦| 91丝袜在线播放| 天堂av2019| 丝袜人妻av一区二区| 一二三啪啪专区| 欧美爆乳精品一区二区| 极品久久久久久久久久久久久久| 免费观看国产小粉嫩喷水精品午| 亚洲综合射| 日韩乱伦影音先锋| 91精品国| 中文字幕 一区二区 亚洲无码| 日韩免费福利在线观看| 九七毛片九九毛片| 网页导航五月天免费一二三区| 懂色av中文字幕一区二区三区天美| 91 亚洲 欧美 日韩 国产 综合| 人妻喷水| 天堂男人网| 欧美综合色站| 亚洲综合中文字幕有码 | 91爰爱欧美| 强奸乱伦免费网站| 欧美少妇高潮| 欧美亚洲20p| 久操凹凸视频| 上床啊啊啊| 区一在线观看| 美女国产一区二区久久| 精品美女少妇一区二区| 色婷婷综合久久久久中文一区二区 | 91制服丝袜中文字幕| 打av高清| 色牛牛AV| 一区二区不卡视| 亚洲欧美日韩电影网站一区| 日韩精品99999| 妇女性内射冈站HDWWWCOM| wuyechaopeng| 91n美女视频| 人妻丰满熟妇一区二区三| 伊人网在线点播| 青青草在线视频欧美| 久草视频在线视频在线视频在线观看| 99中文字幕| 91久久堂| 五月天黄色av| 大香蕉综合| 久久狠狠色噜噜狠狠狠狠97| 久草免费在线视频| 婷婷九月丁香| 精品一久久久| 大香蕉亚洲中文| 久久国产热视频97电影| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 婷婷国产精品一区二区| 人人澡人人弄| 骚货人妻偷情自拍在线视频| 91动漫操逼视频| 13小男生GAY自慰脱裤子| 亚欧美色图| 亚洲AV资源| 天天综合网一91网| 日本欧美国内在线| 中文字幕中文字幕一区二区| 久久久久久九九九九| 亚洲久久东京热一二三四五区视频| 日韩内射视频| 夜色五月天| 操逼网站地址| 国产精品一区二区三区,亚洲综合| 成人毛片免费| 91丝袜| 91狠狠狠| 在线观看午夜婷婷久久久久清性观看| 97高清啪啪| 久久国色天香香蕉| 精品久久一区二区三区四区五区| 国产91久久九九免费精品无码| 乱伦色图网址是多少| 激情小说在线视频| 屁股久久久久久久久久| 国产精品久久久久9999小说| 丝袜AV一区二区三区| 污电影在线观看| 韩国女主播青草在线| 日韩国产品视频中文字| 亚洲人精| 国产老女人久久毛| 天天操妹子| 亚洲熟女诱惑| 一区二区三区四区理论片| 俞拍自拍| 麻豆精品天美| 亚洲污污网站| 欧美天天综合站| 青青草日本中文字幕| 天天综合影院91| 国产精品久久久久久夜夜夜| 中文字幕国产精品1区| 色蜜AV| 国产亚洲 中文欧美久久| 婷婷五月色| 日本特黄f c2| 国内精品999| 久久精品免费| 四虎视频在线观看| www.男人天堂| 日本 情色 1区2区3区| 热天堂一区二区| 久久只有精品一区二区三区| 啊啊啊啊二区好大| 99蜜月精品久久| 中日韩久久久免费看| av橘色网站| 日本熟妇自慰性高潮一区二区三区| 高清无码学生妹高潮| 欧美丝袜中文字幕07在线| 婷婷激情四射| 久久产精品一区二区三区电影| 国产品精品自在在线午夜免费| 日本淫乱女一区二区三区视频| 亚洲色婷婷久久91| 欧美性爱视频免费一区一A| 人人 操人人 操人人| 黑人精品成人一区二区三区| 五月天综合| 91精品无码久久久久久久 | 嗯嗯啊啊好爽| 日韩欧洲操屄视频| 美女黄频a美女大全免费皮| 亚洲综合婷婷| 国产视频三区四区| 日本东京热大香蕉a片| 色阁阁AV综合网| 神马久久免费电影观看| 91亚洲综合| 精品九九国产无码| 免费精品99| 亚洲永久AV无码精品秋霞| 死我十八禁| 久久国产乱子伦精品免费女,网站| 亚欧高清| 动漫爆乳3D奶水一区在线观看| 能看的av| 极品久久久久久久久久久久久久| 97鸡把在线视频| 国产9 9在线 | 亚洲| 日本一级二级三级网站| 人妻天天操天天爽视频免费| 97热视频在线观看| 国产午夜在线观看| 欧美操人| 330dv亚洲成年视频网| 欧美日韩亚洲少妇寂寞影院正在播放 | 一本大道久| 国产强奸乱伦欧美| 超碰99在线| 97超碰免费人人性爱| 亚洲色图欧美色18直播在线| 国产日韩精品人妻久久久久色欲网站| 一区三区啪啪| 熟女久久久| 日韩免费在线观看不卡| 99热这里只有精品9| 日韩操逼HD| 性吧在线视频| 中 文字幕一区二区三四 五 区日 日 骚| 人人操人人操人妻人| se吧提供国产乱老熟视频胖女人| 激情五月综合| 另类专区加勒比| 人妻一区二区三区四区视频 | 亚欧无码在线| 免費人妻夜夜爽天天爽爽一区| 国产成人啪一区二区| 亚洲伊人a线观看视频| 爽 好舒服 无码刺激久久| 91爰爱欧美| 91丝袜在线观看| 五月婷婷激情综合| 天天综合网合集91| 一本一道波多野毛片中文在线| 亚洲成人碰碰| 91丨人妻丨国产丨丝袜| 色五月婷婷麻豆在| 色97欧美| 天天做日日爱夜夜爽| 大香蕉在线视频重口味毛片在线| 人人妻人人澡人人爽久久av| 丁香六月啪啪| 久久激情四射婷婷丁香五月天| 高潮的A片激情扒开一区| 色月天AV导航| 嗯嗯啊啊好爽| 欧美少妇大量自拍视频在线观看| 91国模| 大香蕉婷婷| 成人草草视频| 久久99精品视频| 吊色| 国产精品久久久三级无码| 久操视频免费观看| 18禁网站在线播放| 一区二三区四区视频大全套| 少妇3P性爱自拍| 色综合潮| 狠狠躁日日躁夜夜躁A| 日本三级A片网站com| n1038 一二三区| 日韩电影在线观看网址| 久久国产99精品72福利| 欧美97av| 东京热亚洲一区二区| 99re久久| 亚洲综合网电影91| 人人人干干人人干| 亚洲第一色页夜| 亚洲一区二区三区不卡国产欧美| 日欧毛片久久| 亚洲日韩美女中文字幕乱| 日韩资源网| 成年人性爱日韩| 人人九九精| 久久丁香五月天| 日本色日夜干| 麻豆国产原创AV色哟哟| 黄片免费视频2019| 精品中文一区二区| 久久久成人国产精品无码| 五月天人妻综合| 狠狠干综合| 亚洲欧美日韩激情不卡| 中文字幕88av在线| 天堂中文资源在线bt| 97国产|免费| 日韩精品一二三四| 国产超碰AV在线精品| 亚洲色悠悠久久88| 大香蕉久操| 另类亚洲一区二区三区| 精品二999| 日本综合久久| 熟女激情综合网| 青青草玖玖爱| 久久久人妻| 精品日韩人妻视频| 后入合集| 亚洲色欲一区二区三区| 果冻国产精品麻豆成人av| 日韩欧视频| 不卡中文字幕aⅴ在线| 国产乱青青草久久| www.婷婷| 97精品熟女少妇一区| 欧美丝袜91| 丁香婷婷激情五月天无毒不卡 | 欧美精品在线观看| 插日本熟女视频| 777超碰| 肉丝无码中文高清| 久久久久久久久久久久久9999| 亚洲精品性爱片| 麻豆熟妇乱妇熟色A片在线看| 精品国产网站| 婷婷五月丁香五月| 黑人操一区二区| 国产精品操| 国产中午字一暮区| 大香蕉天天看妹子| 久操九九九九| 免费人成?大片在线播放| 国产视频人人网| 成年人免费观看网站| www四虎| 亚洲中文字幕精品久久久久久直播| 天天谢天天干| 凹凸精品熟女在线观看| 亚洲文学偷乱拍啪啪啪啪| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 91jk色拍| 男人的天堂2019AV| 欧美日韩岛国大片在线观看| 欧美日韩国产另类综合| 激情综合网亚洲| 凹凸 69堂 在线播放| 亚洲AV不卡在线观看尤物| 天天干少妇| 人人操,操人人| 大香蕉乱级| 蜜桃狠狠色伊人亚洲综合网站| 亚洲情色综合网| wwwxxx日本爽| 五月丁香激情四射| 外国免费性情大片| 校园春色 亚洲| 偷拍2020| 久久一二三四五六七八九区区| 99热色这里只有精品| 久久五月综合| 国产理论视频在线播放| 日韩精品国产一区二区| 97超碰磁| 久操操AV电影| 精品一区二区国产日韩| 成 人 A V免费视频在线观看| 久久久日本电影| 日本ZZ高免费A级视频| 亚洲精品1区| 东北老女人的激情视频| 成人网欧美风情| 亚洲国产精品久久久久婷婷青年| 热天堂一区二区| 91蜜臀在线久久久久| 青青操青娱乐| 久久极品一区二区| 97人肏| 少妇毛片久久| 欧美在线色图| 久久久不卡区一区二区三区久久久| 97干色天堂| 中文字幕精品人妻丝袜| 欧美色图偷拍另类| 久久中日麻豆| 欧美在线视频播放| 天天日天天屌天天操| 国产熟妇一区二区| 亚洲熟女乱色一区二区三区久久久| 一直超碰| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 偷拍新久久| 黑白配性爱AV成| 欧美偷| 青青草AV色| 中文字幕激情小说| 91狠狠综| 日韩熟女操逼| 家庭乱伦性爱av| 久草视频分类在线| 2010男人的天堂| 91丝袜美女| 麻豆伊人网| AV中文字幕剧情1区2区3| 青青草日韩免费观看高清在线| 亚洲成人色情五月天丁香花| 91无摭挡| 91狠狠综合久久| 久久久9品一区二区三区| 国产嫩草精品A88AV在线| 狠狠躁天天躁日日躁| 超碰日韩美妻| 亚洲高清91| 亚洲欧洲无码bt精品合集| 色婷婷视频| 啪啪91| 99.色网| av在线人气| 国产九九九九九九| 啪啪啪综合| 人人干黄色| 色综合尤物| 精品久久久久瑟瑟| 欧美激色| 一区二区高清视频| 蜜乳AV一区| 日韩一级二级| 欧美激色| 国产强奸乱伦第1页| 中文字幕精品一区二区精| 国产亚洲在线观看| 校园春色宗合网| 中文字幕第2页| 黑人白女精品一区| 久久女婷| 大香蕉综合| 亚洲色图片区| 樱花蜜乳av| 久久草草欧美精品| 久久综合av| 色吧 综合| 中文字幕精品资源在线| 啊啊啊啊啊啊啊好爽不要| 亚欧美无遮挡| 中文字幕亚洲永久精品| 欧美专区第一页| 99re6在线视频精品免费完整版安卓版| 我要色综合网| 26uuu国产日韩综合在线观看| 色女女女导航| 午夜噜噜噜| 免费的很黄很污的全部视频| 欧美专区在线| 校园春色AV天堂| 深夜国产一区二区三区在线看| 午夜激情床戏激情| 男人的天堂久久| 色色色欧美| 亚洲五区熟女| 91色香| 国内毛片无码一级毛片| 国产精品网站免费| 国产91美女视频| 国产超碰AV在线精品| 色老汉玖玖爱| 日本亚洲嫩草影院啪啪| 韩国一级做A片免费的| 搞中出视频在线观看| 日韩性爱长视频免费| 秋霞视频一区二区| 久久噜噜噜精品国产亚洲综合| 国产av激情无码久久天堂| baisiav| 人妻丝袜日本| 视频在线观看免费一区二区三区| 91撸色网 玖玖网 欧美| 性色亚洲| 碰碰在线视频| 日韩三级av片| 91校园春色长篇| 欧美小说区视频区| 蜜乳性色无码专日粉嫩骚逼AV| 97超碰资源网| 无码最新| 亚洲欧洲第二视频在线观看色图| 无遮挡一级毛片视频免费的| 尤物av网站| 亚洲欧美色图小说| 亚洲官网在线| 黄片qw| 少妇500双飞99| 国产在线激情视频| 久久超碰大香蕉| 370p日韩欧美亚洲精品| 伊人青青一区成人视频在线观看区 | 啪啪视频亚洲第一| AV丝袜少妇| 久久精品国产99精品亚洲蜜...| 超碰午夜在线| 91丝袜美女视频| 人妻久久久久久久久久久久久久久| 国产日韩怡红院| 熟女精品一区二区三区| 啊啊啊啊网站| 超碰 另类 欧美| 先锋影音av先锋一区| 日本免费不卡二区| 特级特黄一级毛片免费| 大香蕉琪琪日本女优不卡| 狠狠色狠狠色狠狠五月| 欧美在线l亚洲| 亚洲精品a人片在线观看视| 女上位精品在线| 9999久久久久| 日本 情色 1区| 炮色五月| 9丨亚洲一区二区在线| 精品一区二区三区四区女| 国产激情av女片自拍| 欧美性色欧美| 国产欧美一区二区| 翔田千里AⅤHD无码| 大香蕉性欧美| 禁片 高清 在线观看视频网站| 欧美高清18A片| 色综合99999| 亚洲精品色| 欧美日韩大香蕉| 亚洲凸凹超碰成人| 色播五月婷婷| 51久久夜色精品国产麻豆| 丰满人妻一区二区中文| 9色在线| 久久亚洲国产成人| AV天黑人| 天堂av2019| 精品偷拍13p欧美dodk视频| 超碰久超碰久| 伊人精品视频| 久久99网站| 天天上日日上日韩精品| 亚熟hd视频在线| 成人av免费观看| 日韩国产精品人妻无码久久久| 18禁久极品美女久久哦哟呀!| 婷婷伊人| 一级@啪啪视频| 亚洲第一页色网| 久久亚洲天天做| 亚洲成人在线播放| 97在线精品观看视频| 传媒在线观看一区二区三区| 啊啊啊啊二区好大| 亚洲男人的天堂亚洲| 国产精品点击进入在线影院| 精品人妻久久久久一区二区三区| 亚洲国产一区二区三区在线| 强免费黄色网址| 51国产午夜精品视频| 97人人夜| 人人操人人射人人干| 9/A片| 日本精品一区二区中文字幕| 岛国1区2区3区在线观看| 性色综合网| 久久大精品乱码视频人妻熟女| 区日韩亚洲乱码av电影| 国产精品999zyz| 欧美激情专区| 欧美日韩不卡传媒| 亚洲AV无码久久精品蜜桃小说| 神马福利久草| 人妻99p| 曰韩操B| 美女天天干| 亚洲在线91| 极品出轨视频网站| 久久妇| 亚洲限制级| 18一区二区三区| 深爱五月婷婷| 免费A V在线| 亚洲欧美综合区自拍另类| 东北女人无套内谢视频| 老司机香蕉久久久久| 九九久久国产精品怡红院| 99re99视频在线免费观看| 手机不卡视频不卡在线一二三区| 日本精品不卡一二三区| av在线一区二区三区| 亚洲无码国产精品久久| 91操操操操| 日韩三级伊人| 久久少妇| 欧美 亚洲| 99re99在线视频| av 模特一区了| 精品人妻一区春色| 久久亚洲不卡一区二区三区| 精彩国产视频播放1区2区| 一二三四日本视频高清| 四虎AV在线观看| 长长久久免费视频| 91久久久久免| wwwss在线观看| 久久ww| 人妻少妇一区二区| 天天插天天射| 99热精品在线观看| 裸体美女国产免费久久久网站| 亚洲另类在线观看| 国产99 中文字幕日韩小视频| 无码国产Av| 国产剧情AV不卡在线观看| 亚洲AV噜噜狠狠网址蜜桃动漫| 一类av片在线看| 亚洲国产成人精品久久久国产成人一区二区三. | 97精品视频| 亚洲欧美首页| 一级AV性爱| 1人人看人人摸人人操| 偷拍三区| 日韩A优精品在线观看| 免费看欧美美女黄色大片| 色综合久| 防屏蔽在线视频| 亚洲、日韩、综合、另类| 日韩久久超碰色| 超碰99热中文字幕| 欧美日韩亚洲天堂网| 久久99草| 大香蕉日亚洲日本亚大 | 超碰九区| 国产午夜在线观看| 老子午夜伦不卡影院| 秋霞一集毛片观看| 美女操逼福利视频| 熟女视频久久| 欧美色图天堂在线| 亚洲天堂自拍| 九一性生活免费视频| 麻豆色99999| 热99这里有精品综合久久| 大香蕉乱级| 日韩亚洲国产视频| 婷婷丁香六月| 日本精品88888888| 国产亚洲日本| 国产伊人精品在线| 97啪啪| 色网在线视频观看免费| 三级网色| 黄页大片在线观看| 中文字幕视频免费| 91青青在线| 国产美女自拍AV| 日本操BAV| 亚洲麻豆精品二区三区| 97干天天| 视频在线97| 亚洲色综合| 男人a天堂手机在线版| 性色一线| 久久久免费懂色| 性欧美91| 国产精品一级毛片不卡视| 九九色逼| 久久超碰免费的| 又黄又硬又粗又长国产视频| 中国AAAAAA黄色片| 大香蕉黄色一区| 亚射在线| 欲色综合| 岛国黄色短视频| 亚洲精品久| 亚洲在钱| 国产一区二区三区免费视频在性观看| 中文乱码99| 大香蕉综合| 少妇色综合| 97手机日韩| 亚洲 日韩 丝袜 熟女 变态| 97人妻碰碰中文无码久热丝袜| 久久久啊啊| 怡红院亚洲怡春院av| 成年人黄色| 偷看洗澡一二三区美女| 婷婷99狠狠躁天天躁| 夜精品久无码| 日本一区二区中文字幕久久| 日韩精品亚洲专区在线影视| 超碰亚洲97| 日韩久射综合| 国产亚洲精品农村妇女| 午夜久久一区二区无码中出| 狠狠爱夜夜| 99日精品欧美国产| 欧美日韩另类字幕中文| 亚洲 暴爽 AV人人爽日日碰| 亚洲va综合va国产va中文| 日本黄色天堂| 国产欧美精选自拍一区| 亚洲国产精品久久久久婷婷青年| 亚洲少妇在线影音| 亚洲影院成人| 久久婷婷国产一区二区色| 91痴汉| 香蕉人人操tv| 十八禁一区二区无码观看| 欧美色网| 久久久99久9| 亚洲 暴爽 AV人人爽日日碰| 日本熟妇一区二区三区| 日韩一级二级三级| 极品色社| 夜夜性| 97精品国产97久久久久久免费| 久久日本熟妇熟色一区| 亚洲欧美九九| 毛片久久| 中文字幕-区二区三区四区视频中国| 亚洲欧洲av影音| 精品人妻一区二区三区-国产| 国产在线视频午夜精华在| 天天看人人操屄犊摸阴| 啪啪啪东京| 青青伊人加勒比海| 欧美麻豆成人同性GⅤ在线| 国产精品久久久午夜夜伦鲁鲁| 九九99精品视频在线观看| 亚洲欧洲自拍| 中出789在线视频| 久久精品国产亚洲AV高级北京| 九九超碰综合网| 久操99| 免费公开人人操| 色牛aV| 天美麻豆精品视频99| 欧美天天| 本道在线| 五月天亚洲网| 五月婷视频| 97在线精品观看视频| 精品久久久久成人码免| 一区二区久久天天干狠狠| 人妻系列无码专区中文有码| 大香蕉伊人75| 蜜桃久久久久久久| 在线中文字幕极品av| 免费国产视频| 久久久精品九| 久草毛片电影怡| 国产按摩一区二区三区| 自拍偷拍 高清无码| 欧美天天影院| 久色99999| 玖玖蜜臀资源网| 久久人妻视频网| 色婷婷五月综合激情中文字幕| 国产一区二区成人av在线播放| 操一对老熟妇爽上天视频| 亚洲一区二区三区麻豆传媒| 五月丁香婷婷色| 亚洲欧美在线观看2021| 国产又色又粗又黄又爽| 天天拍夜夜| 91熟女视频网| 九九九九九九免费视频| 久久久久久久久久久久黄色| 天堂蜜桃无码视频一区二区| 九九热超碰| 久草福利在线资源站| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 国产高清26uuu| 91福利网在线观看| 久久久91| 一二三四区操操Av| 亚洲双插| 亚洲玖玖爱| 麻豆一区二区AV天美| 熟女少妇一区二区三区| 中文区中文字幕免费看| 性欧美999| 美女诱惑一区| 欧差乱伦二三| 午夜精品久久久| 人妻色偷色噜| 操www| 国产大学生口爆吞精合集| 一本大道不卡一二三区| 免费观看的黄色的网站| 精品伊人久久久大香线蕉小说| 欧美v亚洲v日韩v最新在线二区| 久久亚洲av成人无码国产| www.99热| 丰满搜索结果 -第18页- 久久高清无码 | 久久亚州高清| 黄色二级片网站| 神马久久啊啊| 久久老熟女| 中国AV美女| 天天肏美女| 色婷婷五月天| 亚洲精品天天影视综合网| 最新中文字幕在线亚洲| 人人做天天爱| 亚洲综合另类小说色区亚洲成av人片在www | 人人妻人人澡人人爽久久av| 亚洲欧洲日本精品中文a∨| 国产精品成人蜜臀AV在线| 欧日韩不卡视.频| 亚洲污污网站| 97视频在线播放| 国产偷拍自拍在线视频| 亚洲码和欧洲精品激情系列| 色九色久| 人人操肉肉| 国产有码一区| 欧美第五页| 国产成人精品日本亚洲语言| 欧美色图人妻| 99亚洲国产精品色一区二区三区| 三级激情网站| 99re公开精品免费视频| a男人的天堂久久一级A毛片| 无码av永久免费专区网站| 久久久久久国产手机AV| 日日碰狠狠添天天爽超| 91中文精品日韩欧美在线| 狠操91,com| 久久久久久人体| 人人操人人爽人人操人人| 一本久道在线综合视频| 屌逼麻豆| 蜜臀久久久99久久久久| 欧美aaaaaaa| 久操操| 天天综合97| 国产精品亚洲高清在线| 欧亚第一综合网| 91精品无码久久久久久久| 丁香五月天堂网| 老熟女综合网| 久久这里只精品99re66图| 试看60秒| 在线性黄高清免费视频| 日本加勒比无码专区一二三| 密乳AV免费观看| 久久一区二区加油站| 国产传媒操逼视频| 一本久久精品中文字| 97精品熟女少妇一区| 欧美天堂第二区| 久久综合资源一区二区| 亚洲AV在线资源| 99熟女| 欧美高清第一页| 校园春色综合色| 国产一区在线观看无码AV| 欧美午夜视频| 成人性爱电影一区二区| 国产精品网址| 四季AV综合网址| 欧日a| 九九热国产| 欧亚日韩一区在线| 91超碰人人| 国产一进一出视频网站| 亚洲性刺激| 亚洲丝袜色图| 凹凸视频特色日本特黄| 久操视频在线观看| 黄色十八禁| 老鸭窝亚洲毛片| 琪琪精品免费一区二区三区| 精品少妇一区二区三区| 亚射在线| 午夜高清成人在线视频| 国产精品久久久| 久草久日| 热天堂一区二区| 国产吞精a级片激情电影| 在线观看亚洲成人精品| 亚洲色图日韩丝袜制服一区二区五月在线| 9/A片| 这里都是精品在线观看| 久久社区一区二区三区| 综合色好色| 日韩欧美中文字| 国产欧美伊人| 成人av动漫在线观看| 精品久久久久久中文字幕三区| 欧美精品激情| 久久、1234| 超碰亚洲欧美日韩无| 日韩无码服务区| 九九热视频在线观看| 国产AV激情无码久久无码| 日韩在线欧美精品一区二区| 国产激情在线| 97欧美资源| 欧美色图99| 精品成人久久久人人亚洲| 好屌色综合| 精品一二三区女同| 欧洲精品久久| 加勒比人妻综合| 国产人妻精品一区二区三区秋霞 | 熟妇的味道HD中文字幕| 强奸乱伦αv片| 999九九九九国产动| B049AV在线播放| 天美传媒Av在线| 爱啪精品一区| 精品国产乱码久久久兰草影视| 激情第四色| 五月婷婷激情| 亚洲中文人妻色| 丝袜六区| 久久m| 欧美在线色图| 北京美女一区二区| 日本熟妇精品九九| 国产青青综合伊人| 少妇精品久久| av在线播放国产一区| 少妇高潮对白在线观看| 成人性爱电影一区二区| 日韩成人色图| 男人久久精品| 久99在线免费观看视频| 国产1024在线播放| 欧美亚洲一级在线观看| 精品v日韩欧美国产| 亚洲中文字幕av| 精品视频专区| 中文字幕诱惑制服人妻丝袜美丝袜美| 99久在线精品99re8| 搡老熟女免费视频| 日韩性爱高清免费视频| 玖玖视频在线资源一区二区三区| 欧美久久久15P| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 99久草| 久久久久久亚洲中文| 骚逼高潮久久精品| 精品中文日韩字幕视频| 欧美性爱第1 页| 欧美日韩岛国大片在线观看| 久久国产99精品72福利| 9.1小视频| AAAA欧美日韩| 久久精品性| 青青操视频在线| 99精彩视频| 欧美最大综合网| 国产男女边吃边摸视频网站| 日韩免费人妻色情网站| 国产一区二区在线看| 亚洲国产欧美另类自拍| 丁香激情五月| 亚洲精品国产拍免费91在线| 欧美婷婷五月天| 中文字幕免费看|