阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 高等考試_三級_資訊處理:資料庫應用#115588
科目:公職◆資料庫應用
年份:112年
排序:0

申論題內容

一、國立ABC大學的校務行政電腦化,其中有關教務資料,擬採用資料庫系統,經系統分析後,得到如下需求(Requirements):
1.ABC大學由許多學系(DEPARTMENT)組成,每一學系有系代碼 (DeptId)與系名稱(DeptName),系代碼可區別不同學系。
2.各學系會開許多課程(COURSE),每一課程有課程代碼(CrsId)、課程名稱(CrsName)、課程說明(CrsDescrip)與課程學分數(CrsCredit),課程代碼可區別不同課程。
3.每一學系有許多學生(STUDENT),每個學生有學生代碼(StudId)、學生姓名(StudName)與學生電子信箱(StudEmail) ,有學生會有多個電子信箱,學生代碼可區別不同學生。
4.每一學系由許多教授(PROFESSOR)組成,每一教授有教職員工代碼 (Prof Id)、姓名(Prof Name)與職稱(Prof Rank) ,教職員工代碼可區別不同教授。
5.每個學系會開授許多課程,每一課程僅由一學系開授。
6.每個學系會有許多學生,每一學生僅隸屬於一學系。
7.每個學系會有許多教授,每一教授僅隸屬於一學系。
8.每一教授可以開授許多門課程,每一門課程僅由一個教授開授。
9.每一學生可以修習許多課程,每一課程也可由許多學生來修習,每一學生修習的課程有一成績(Grade)。
請設計此教務關聯式資料庫綱要(Relational Database Schema),並標示出此資料庫關聯(Relations)的主鍵(Primary Key)與外來鍵(Foreign Key)。(25分)

詳解 (共 2 筆)

詳解 提供者:hchungw
據給定的需求,我們可以設計一個關聯式資料庫綱要來管理ABC大學的教務資料。以下是設計出的資料庫綱要,包括各個關聯表格及其主鍵和外來鍵。
1. 學系表(DEPARTMENT)
sql
複製程式碼
CREATE TABLE DEPARTMENT (
    DeptId INT PRIMARY KEY,
    DeptName VARCHAR(255) NOT NULL
);
2. 課程表(COURSE)
sql
複製程式碼
CREATE TABLE COURSE (
    CrsId INT PRIMARY KEY,
    CrsName VARCHAR(255) NOT NULL,
    CrsDescrip TEXT,
    CrsCredit INT NOT NULL,
    DeptId INT,
    FOREIGN KEY (DeptId) REFERENCES DEPARTMENT(DeptId)
);
3. 學生表(STUDENT)
sql
複製程式碼
CREATE TABLE STUDENT (
    StudId INT PRIMARY KEY,
    StudName VARCHAR(255) NOT NULL,
    DeptId INT,
    FOREIGN KEY (DeptId) REFERENCES DEPARTMENT(DeptId)
);
4. 學生電子信箱表(STUDENT_EMAIL)
sql
複製程式碼
CREATE TABLE STUDENT_EMAIL (
    EmailId INT PRIMARY KEY,
    StudId INT,
    StudEmail VARCHAR(255) NOT NULL,
    FOREIGN KEY (StudId) REFERENCES STUDENT(StudId)
);
5. 教授表(PROFESSOR)
sql
複製程式碼
CREATE TABLE PROFESSOR (
    ProfId INT PRIMARY KEY,
    ProfName VARCHAR(255) NOT NULL,
    ProfRank VARCHAR(255),
    DeptId INT,
    FOREIGN KEY (DeptId) REFERENCES DEPARTMENT(DeptId)
);
6. 課程教授關係表(COURSE_PROFESSOR)
sql
複製程式碼
CREATE TABLE COURSE_PROFESSOR (
    CrsId INT,
    ProfId INT,
    PRIMARY KEY (CrsId, ProfId),
    FOREIGN KEY (CrsId) REFERENCES COURSE(CrsId),
    FOREIGN KEY (ProfId) REFERENCES PROFESSOR(ProfId)
);
7. 學生修課表(ENROLLMENT)
sql
複製程式碼
CREATE TABLE ENROLLMENT (
    StudId INT,
    CrsId INT,
    Grade VARCHAR(2),
    PRIMARY KEY (StudId, CrsId),
    FOREIGN KEY (StudId) REFERENCES STUDENT(StudId),
    FOREIGN KEY (CrsId) REFERENCES COURSE(CrsId)
);
資料庫關聯與鍵
DEPARTMENT:
主鍵:DeptId
COURSE:
主鍵:CrsId
外來鍵:DeptId(參考 DEPARTMENT(DeptId))
STUDENT:
主鍵:StudId
外來鍵:DeptId(參考 DEPARTMENT(DeptId))
STUDENT_EMAIL:
主鍵:EmailId
外來鍵:StudId(參考 STUDENT(StudId))
PROFESSOR:
主鍵:ProfId
外來鍵:DeptId(參考 DEPARTMENT(DeptId))
COURSE_PROFESSOR:
主鍵:CrsId, ProfId
外來鍵:CrsId(參考 COURSE(CrsId))
外來鍵:ProfId(參考 PROFESSOR(ProfId))
ENROLLMENT:
主鍵:StudId, CrsId
外來鍵:StudId(參考 STUDENT(StudId))
外來鍵:CrsId(參考 COURSE(CrsId))
關係與說明
DEPARTMENT: 存儲學系的基本資訊。
COURSE: 存儲課程的基本資訊,每個課程隸屬於一個學系。
STUDENT: 存儲學生的基本資訊,每個學生隸屬於一個學系。
STUDENT_EMAIL: 存儲學生的電子郵件,每個學生可能有多個電子郵件。
PROFESSOR: 存儲教授的基本資訊,每個教授隸屬於一個學系。
COURSE_PROFESSOR: 表示課程與教授的關係,每個課程僅由一個教授開授,但每個教授可以開授多個課程。
ENROLLMENT: 學生的選課信息,每個學生可以修習多個課程,每個課程也可以由多個學生修習,並記錄學生在該課程的成績。
這個設計確保了資料的完整性和一致性,並能有效地管理ABC大學的教務資料。
詳解 提供者:Zong Huang

共有6張表格:

1. DEPARTMENT(學系): DeptId(PK), DeptName

2. COURSE(課程): CrsId(PK), DeptId(FK), CrsName, CrsDescrip, CrsCredit, ProfId -> 每門課程僅有一位教授

3. STUDENT(學生): StudId(PK), DeptId(FK), StudName

4. Mail(信箱):StudEmail(PK), StudId(FK), DeptId(FK) -> 因學生有多個信箱, 採用獨立表紀錄

5. PROFESSOR(教授):ProfId(PK), DeptId(FK), ProfName, ProfRank

6. StudAndCurs(學生與課程):DeptId(FK),CrsId(FK),StudId(PK) -> 學生與課程的關係(N對N), 採用獨立表紀錄