Download presentation
Presentation is loading. Please wait.
1
DEMO地點:雲平大樓東棟3樓 高等資料實驗室
DBMS Term Project 教師: 李強 助教: 袁國斌、劉佩琦、林宣佑 {jordan7652, ayumi416, a } @dblab.csie.ncku.edu.tw DEMO地點:雲平大樓東棟3樓 高等資料實驗室
2
DBMS Term Project 本期末專案有兩個題目,同學們可以自行選擇其中一個題目來完成。
專案一:使用現成的 DBMS (如 SQL server,MySQL…等)來建立一個系 統資料庫(例如:人事薪資系統,學生學籍系統…等)。 (滿分 20 分) 專案二:自行開發一個 DBMS 。(滿分 30 分) 註:由於專案二較為困難,故完成專案二可以得到較多的分數。 分組需求 一人一組。 應用程式介面 (二擇一) 1.直接以SQL語法查詢 (ex: phpmyadmin) 2. 視窗介面,或是 Web 介面。把SQL語法包裝起來,使用者不需知道SQL語法也可以操作(分數較高) 專案截止日期 2011/01/03 ~ 2011/01/07 為 Demo 日。 上課程網站登記demo時間。 詳細的分組 demo 時間表會在公布於課程網頁上。 注意:拒收遲交的專案。
3
專案說明 專案一: 用現成的DBMS(如 SQL server,MySQL…等)建立database system,並可以取得使用者要求的查詢結果。 例如:人事薪資系統、學生成績系統、學生學籍系統…等。 專案二: 自行設計一個 Database 以及 管理介面(DBMS) Database需包含基本的資料結構 (如 Database 的資料結構,table 的資料結構,欄位的資料結構…等) 管理介面需可以分析使用者所輸入的 SQL Query , 並將正確結果輸出
4
需求 底下將說明期末專案的需求。同學們必須滿足這些需求才可以得到分數。 專案的需求分兩類:
基本需求:無論同學們選擇的是哪一個專案,都需要滿足此處的要求。 進階需求:對於不同的專案,我們也提出了不同的要求。
5
基本需求:兩個專案都需要滿足的要求 建立的資料庫要滿足底下的需求。 Entity type 需求 Relationship 需求
最少 5 個 entities 在這些 entities 中至少有一個 weak entity type Relationship 需求 要有Binary relationship和Ternary relationship 需標示 relationship 間的 cardinality ratio Attribute 需求 每個 table 至少有 2 個 attributes 每個 table 都要有 key attribute 這些 table 中,要能表示下列的2種 attribute Multi-valued attribute, Composite attribute
6
基本需求:兩個專案都需要滿足的要求 (Cont.)
能下達查詢指令 當使用者下達查詢後,必需將符合要求的結果展示在畫面上。 實作的程式語言不限
7
專案一:使用現成的 DBMS 來完成一個應用程式 (滿分 20 分)
進階需求
8
專案一:使用現成的 DBMS 來完成一個應用程式 (滿分 20 分)
用DBMS (如 SQL server,MySQL…等)建立一個database system,並取得使用者要求的查詢結果。 Demo時必需能下達下列的 SQL Query Demo時說明每個SQL語法對應到database system的物理意義 Modify the database (參考投影片 p.15) 需有 CREATE, DROP table 和 INSERT, DELETE, UPDATE tuple 功能 Basic queries in SQL (參考投影片 p.16~19) SELECT-FROM-WHERE Eliminates the duplicate tuples (DISTINCT) Ordering of query results (ORDER BY & DESC/ASC) Set operations (UNION) Complex queries in SQL (參考投影片 p.20~22) Nested queries (IN) Aggregate functions (COUNT, SUM, MAX, MIN, AVG) Grouping (GROUP BY & HAVING)
9
專案二: 自行開發一個 DBMS (滿分 30 分) 進階需求
10
專案二:自行開發一個 DBMS (滿分 30 分) 自行設計一個 DBMS,包含資料庫格式、資料型態…等。此 DBMS 可編譯使用者輸入的 SQL 查詢,並可正確的把使用者要求的結果輸出。 實作的程式語言不限 功能要求: Basic queries in SQL (參考投影片 p.16) SELECT-FROM-WHERE Complex queries in SQL (參考投影片 p.20~21) Nested queries (IN) Aggregate functions (COUNT, SUM, MAX, MIN, AVG)
11
報告內容要求 Demo當天請攜帶以上要求之電子檔。 Program Source Code with Clear Explanations
Executable file Document 系統架構與環境 資料庫設計 E-R schema diagram (詳細文字說明每個 table, attribute, relationship 的意義和關係) SQL syntax (create database, create table, primary key, foreign key…等,需加詳細註解) 系統使用說明 Demo當天請攜帶以上要求之電子檔。
12
Project Demo Project Demo: Demo 前注意事項:
實驗室在雲平大樓東棟3樓 高等資料實驗室 驗收請確定資料庫中有 demo 需要的各種資料 來之前先把要demo的SQL語法準備好,結省大家時間 來demo時繳交 Project Documents 電子檔 每組的驗收時間不超過 15 分鐘
13
評分標準 Total (100%) = demo(70%) + document(30%) Demo (70%)
Query 介面 (10%): look and feel, response time Database requirement (10%): 符合助教的規定 功能 (50%): 專案一:使用現成的 DBMS 來完成一個應用程式 Modify the database (10%) Basic SQL queries (20%) Complex SQL queries (20%) 專案二:自行開發一個 DBMS Complex SQL queries (30%) Document (30%) 報告的架構完整度 (10%) 系統架構與環境 、資料庫設計 (ER schema& SQL syntax )、系統使用說明 內容詳細度 (20%) 註:嚴禁抄襲,抄襲一律零分!
14
Operation requirements
15
Modify the database CREATE TABLE DROP TABLE INSERT a tuple
DELETE a tuple UPDATE a tuple Example Suppose we want to create a temporary table that has the name, number of employees, and total salaries for each department. CREATE TABLE DEPTS_INFO (DEPT_NAME VARCHAR(10), NO_OF_EMPS INTEGER, TOTAL_SAL INTEGER); INSERT INTO DEPTS_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SQL)
16
Basic queries in SQL SELECT-FROM-WHERE SELECT <attribute list>
FROM <table list> WHERE <condition> Number of <attribute list> ranging from 1 to N. Number of <table list> ranging from 1 to N. Number of <condition> ranging from 0 to N. Logical comparison operators are =, <, <=, >, >=, != Example Query 1: Retrieve the name and address of all employees who work for the ‘Research’ department. Q1: SELECT FNAME,LNAME,ADDRESS FROM EMPLOYEE,DEPARTMENT WHERE DNAME =‘Research’ AND DNUMBER = DNO
17
Basic queries in SQL (Cont.)
DISTINCT:Eliminates the duplicate tuples SELECT DISTINCT <attribute list> FROM <table list> WHERE <condition> Example Query 2: Retrieve the all distinct salary values of employees. Q2: SELECT DISTINCT SALARY FROM EMPLOYEE
18
Basic queries in SQL (Cont.)
QRDER BY & DESC/ASC:Ordering of query results SELECT <attribute list> FROM <table list> WHERE <condition> ORDER BY <attribute list> DESC/ASC Example Query3: Retrieve a list of employees and the projects they are working on, ordered by department and, within each department, ordered alphabetically by last name, first name. Q2: SELECT DNAME, LNAME, FNAME, PNAME FROM DEPARTMENT, EMPLOYEE, WORKS_ON, PROJECT WHERE DNUMBER = DNO AND SSN = ESSN AND PNO = PNUMBER ORDER BY DNAME DESC, LANME ASC, FNAME ASC
19
Basic queries in SQL (Cont.)
UNION:Set operations SELECT <attribute list> FROM <table list> WHERE <condition> There is a union operation (UNION) operations Example Query 4:Male a list of all project numbers for projects that involve an employee whose last name is ‘Smith’ as a worker or as a manager of the department that controls the project. Q4: ( SELECT PNAME FROM PROJECT,DEPARTMENT,EMPLOYEE WHERE DNUM = DNUMBER AND MGRSSN = SSN AND LNAME =‘Smith’) UNION FROM PROJECT,WORKS_ON,EMPLOYEE WHERE PNUMBER = PNO AND ESSN = SSN AND LNAME =‘Smith’)
20
Complex Basic queries in SQL
IN:Nested queries SELECT <attribute list> FROM <table list> WHERE <condition> IN ( SELECT <attribute list> WHERE <condition> ) Example Query 5: Retrieve the name and address of all employees who work for the ‘Research’ department. Q5: SELECT FNAME,LNAME,ADDRESS FROM EMPLOYEE WHERE DNO IN ( SELECT DNUMBER FROM DEPARTMENT WHERE DNAME =‘Research’)
21
Complex Basic queries in SQL (Cont.)
Aggregate functions Include COUNT, SUM, MAX, MIN, and AVG Example Query 6a: Find the maximum salary, the minimum salary, and the average salary among employees who work for the ‘Research’ department. Q6a: SELECT MAX(SALARY),MIN(SALARY),AVG(SALARY) FROM EMPLOYEE,DEPARTMENT WHERE DNO=DNUMBER AND DNAME=‘Research’ Queries 6b: Retrieve the total number of employees in the company Q6b: SELECT COUNT(*) FROM EMPLOYEE
22
Complex Basic queries in SQL (Cont.)
GROUP BY & HAVING:Grouping SELECT <attribute list> FROM <table list> WHERE <condition> GROUP BY <grouping attribute(s)> HAVING <group condition> Example Query 7: For each project on which more than two employees work, retrieve the project number, project name, and the number of employees who work on that project. Q7: SELECT PNUMBER,PNAME,COUNT(*) FROM PROJECT,WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER,PNAME HAVING COUNT(*)>2
Similar presentations