111年國家安全情報人員三等資料庫應用

四、以下為國際學術合作所需記錄有關大學 (university),研究者 (researcher),論文 (paper),計畫 (project) 等資料的相關資訊。

    1.大學 (institution) 資料應有大學名稱 (name)、國家 (country)、創始年 (year)

    2.每個大學都有一或多個系所 (department),任二系所名稱 (name) 皆不相同。

    3.研究者 (Researcher) 可分為研究助理 (RA) 及教授 (professor) 兩類人員。

    4.研究者資料包括姓名 (name),出生年 (birth),頭銜 (title)

    5.共同發表論文 (Paper) 資訊包括論文名稱(title)與共同發表之研究者。

    6.研究者資料應有最高學歷 (degree)、指導教授及畢業大學。

    7.教授可主持多個研究計畫 (project),研究計畫資訊包括計畫名稱 (title)、起始日期 (start)、結束日期 (end)

    8.教授的所有研究計畫的總經費 (funding) 資料。

    ()請設計並畫出符合上述需求的實體關連圖 (E/R diagram)。不可以有重複的實體 (entity)、關連 (relationships) 及屬性 (attributes)。(15分)

    ()請用 SQL 語法建立出上述實體關連圖的資料庫資料表。資料型態合理的定義即可,但要清楚定義主鍵 (primary key)、外來鍵 (foreign key) 及其他任何條件限制。(15分)

答:

()

pic01.png

上述的實體關連圖假設如下:

1.大學實體的大學名稱不會重複。

2.研究者實體的姓名不會重複。

3.研究者實體的畢業大學只能填一個。

4.研究計畫只能由一個教授主持。

5.研究計畫實體的研究計畫名稱不會重複。

6.研究計畫實體的研究計畫只能同時一個教授可以申請。

7.論文實體的論文名稱不會重複。

()

-- 移除表格順序要顛倒過來

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.研究計畫', N'U') IS NOT NULL

   Drop Table [dbo].[研究計畫];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.發表', N'U') IS NOT NULL

   Drop Table [dbo].[發表];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.論文', N'U') IS NOT NULL

   Drop Table [dbo].[論文];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.研究助理', N'U') IS NOT NULL

   Drop Table [dbo].[研究助理];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.教授', N'U') IS NOT NULL

   Drop Table [dbo].[教授];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.研究者', N'U') IS NOT NULL

   Drop Table [dbo].[研究者];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.系所', N'U') IS NOT NULL

   Drop Table [dbo].[系所];

GO

-- 如果表格不是空的,則移除

IF OBJECT_ID(N'dbo.大學', N'U') IS NOT NULL

   Drop Table [dbo].[大學];

GO

Create Table 大學(

    大學名稱 varchar(20) NOT NULL,

    國家 varchar(20),

    創始年 varchar(20),

    Primary Key (大學名稱)

)

GO

Create Table 系所(

    名稱 varchar(20) NOT NULL,

    大學名稱 varchar(20),

    Primary Key (名稱),

    Foreign Key (大學名稱) References 大學 (大學名稱)

)

GO

Create Table 研究者(

    姓名 varchar(20) NOT NULL,

    出生年 varchar(20) NOT NULL,

    頭銜 varchar(20) NOT NULL,

    畢業大學 varchar(20) NOT NULL,

    最高學歷 varchar(20) NOT NULL,

    指導教授 varchar(20) NOT NULL,

    系所名稱 varchar(20) NOT NULL,

    Primary Key (姓名),

    Foreign Key (系所名稱) References 系所 (名稱)

)

GO

Create Table 教授(

    姓名 varchar(20) NOT NULL,

    Primary Key (姓名),

    Foreign Key (姓名) References 研究者 (姓名)

)

GO

Create Table 研究助理(

    姓名 varchar(20) NOT NULL,

    Primary Key (姓名),

    Foreign Key (姓名) References 研究者 (姓名)

)

GO

Create Table 論文(

    論文名稱 varchar(20) NOT NULL,

    Primary Key (論文名稱)

)

GO

Create Table 發表(

    論文名稱 varchar(20) NOT NULL,

    研究者姓名 varchar(20) NOT NULL,

    Primary Key (論文名稱, 研究者姓名),

    Foreign Key (論文名稱) References 論文 (論文名稱),

    Foreign Key (研究者姓名) References 研究者 (姓名)

)

GO

Create Table 研究計畫(

    計畫名稱 varchar(20) NOT NULL,

    經費 INT,

    起始日期 varchar(20) NOT NULL,

    結束日期 varchar(20) NOT NULL,

    教授姓名 varchar(20) NOT NULL,

    Primary Key (計畫名稱),

    Foreign Key (教授姓名) References 教授 (姓名)

)

GO

arrow
arrow
    文章標籤
    資料庫應用
    全站熱搜

    jacksaleok 發表在 痞客邦 留言(0) 人氣()