---
# System prepended metadata

title: DB HW1 (03/27)
tags: [DB]

---

---
title: DB HW1 (03/27)
tags: DB
---

# 資料庫系統 Database <small>(CE6039*)</small> <br>HW 1
> 劉子雍．108502523
> 資訊工程學系四年級 A 班


<!--
## Notes
![](https://i.imgur.com/3NuRoCW.png)
![](https://i.imgur.com/JvKIb6x.png)
![](https://i.imgur.com/vsdVtYs.png)


## Graphviz Test
- https://github.com/ballantony/dot-graphviz/blob/main/graphs.org
- https://graphviz.org/Gallery/neato/ER.html

```graphviz
graph ER {
	fontname="Helvetica,Arial,sans-serif"
	node [fontname="Helvetica,Arial,sans-serif"]
	edge [fontname="Helvetica,Arial,sans-serif"]
	layout=neato
	node [shape=box]; course; institute; student;
	node [shape=ellipse]; {node [label="name"] name0; name1; name2;}
		code; grade; number;
	node [shape=diamond,style=filled,color=lightgrey]; "C-I"; "S-C"; "S-I";

	name0 -- course;
	code -- course;
	course -- "C-I" [label="n",len=1.00];
	"C-I" -- institute [label="1",len=1.00];
	institute -- name1;
	institute -- "S-I" [label="1",len=1.00];
	"S-I" -- student [label="n",len=1.00];
	student -- grade;
	student -- name2;
	student -- number;
	student -- "S-C" [label="m",len=1.00];
	"S-C" -- course [label="n",len=1.00];

	label = "\n\nEntity Relation Diagram\ndrawn by NEATO";
	fontsize=20;
}
```
-->


<style>
.markdown-body
{
    max-width: 1200px !important;
}
</style>


```graphviz
graph HW_0 {
    label = "題目原圖\n\n";
    labelloc="t";
	fontsize=26;

    layout=dot;
    fontname="Sarasa Fixed TC, monospace";
	node [fontname="Sarasa Fixed TC, monospace"];
	edge [fontname="Sarasa Fixed TC, monospace"];
    
    //
    // Entities
    //
    {
        node [shape=box, fontsize=16, style=filled, fillcolor=lightgrey, ordering="out"];

        COLLEGE; INSTRUCTOR;
        DEPT;    STUDENT;
        COURSE;  SECTION;
    };
    
    //
    // Relationships
    //
    {
        node [shape=diamond, fontsize=16, style=filled, fillcolor=whitesmoke];
        
        DEAN;   ADMINS; CHAIR;   EMPLOYS; HAS;
        OFFERS; TAKES;  TEACHES; SECS;
    }
    
    //
    // Attributes
    //
    {
        node [shape=oval, fontsize=14];

        COLLEGE -- {
            CName [label=<<u>CName</u>>];
            COffice; CPhone;
        };

        DEPT -- {
            DName [label=<<u>DName</u>>];
            DCode [label=<<u>DCode</u>>];
            DOffice; DPhone;
        };

        INSTRUCTOR -- {
            Id [label=<<u>Id</u>>];
            Rank; IName; IOffice; IPhone;
        };

        STUDENT -- {
            SId [label=<<u>SId</u>>];
            DOB; SName; Addr; Phone; Major;
        };
        SName -- {FName; MName; LName;};

        COURSE -- {
            CCode [label=<<u>CCode</u>>];
            CoName [label=<<u>CoName</u>>];
            Credits; Level; CDesc;
        };

        SECTION -- {
            SecId [label=<<u>SecId</u>>];
            SecNo; Sem; Year; CRoom; DaysTime;
        };
        CRoom -- {Bldg; RoomNo;};
        
        CHAIR -- {CStartDate};
        
        TAKES -- {Grades};
    };
    
    //
    // Participations
    //
    {
        edge [label=" ", len=1.8];

        COLLEGE -- DEAN [label="(1,1)"];
        DEAN -- INSTRUCTOR [label="(0,1)"];
        
        COLLEGE -- ADMINS [label="(0,N)"];
        ADMINS -- DEPT [label="(1,1)"];
        /* invis */ CName -- ADMINS [style=invis];
        
        INSTRUCTOR -- CHAIR [label="(0,1)"];
        CHAIR -- DEPT [label="(1,1)"];
        
        DEPT -- EMPLOYS [label="(0,N)"];
        EMPLOYS -- INSTRUCTOR [label="(1,1)"];
        
        DEPT -- HAS [label="(0,N)"];
        HAS -- STUDENT [label="(0,1)"];
        
        DEPT -- OFFERS [label="(0,N)"];
        OFFERS -- COURSE [label="(1,1)"];
        /* invis */ DName -- OFFERS [style=invis];
        
        COURSE -- SECS [label="(0,N)"];
        SECS -- SECTION [label="(1,1)"];
        
        STUDENT -- TAKES [label="(0,N)"];
        TAKES -- SECTION [label="(5,N)"];
        
        INSTRUCTOR -- TEACHES [label="(0,N)"];
        TEACHES -- SECTION [label="(1,1)"];
    }
    
    {rank=same; COLLEGE; DEAN; INSTRUCTOR;};
    {rank=same; ADMINS; CHAIR; CStartDate; EMPLOYS;};
    {rank=same; DEPT; HAS; STUDENT; TEACHES;};
    {rank=same; OFFERS; Grades; TAKES;};
    {rank=same; COURSE; SECS; SECTION;};
}
```

---

```graphviz
graph HW_1 {
    label = "HW 1\n1. 修改標記為單雙線\n\n";
    labelloc="t";
	fontsize=26;

    layout=dot;
    fontname="Sarasa Fixed TC, monospace";
	node [fontname="Sarasa Fixed TC, monospace"];
	edge [fontname="Sarasa Fixed TC, monospace"];
    
    //
    // Entities
    //
    {
        node [shape=box, fontsize=16, style=filled, fillcolor=lightgrey, ordering="out"];

        COLLEGE; INSTRUCTOR;
        DEPT;    STUDENT;
        COURSE;  SECTION;
    };
    
    //
    // Relationships
    //
    {
        node [shape=diamond, fontsize=16, style=filled, fillcolor=whitesmoke];
        
        DEAN;   ADMINS; CHAIR;   EMPLOYS; HAS;
        OFFERS; TAKES;  TEACHES; SECS;
    }
    
    //
    // Attributes
    //
    {
        node [shape=oval, fontsize=14];

        COLLEGE -- {
            CName [label=<<u>CName</u>>];
            COffice; CPhone;
        };

        DEPT -- {
            DName [label=<<u>DName</u>>];
            DCode [label=<<u>DCode</u>>];
            DOffice; DPhone;
        };

        INSTRUCTOR -- {
            Id [label=<<u>Id</u>>];
            Rank; IName; IOffice; IPhone;
        };

        STUDENT -- {
            SId [label=<<u>SId</u>>];
            DOB; SName; Addr; Phone; Major;
        };
        SName -- {FName; MName; LName;};

        COURSE -- {
            CCode [label=<<u>CCode</u>>];
            CoName [label=<<u>CoName</u>>];
            Credits; Level; CDesc;
        };

        SECTION -- {
            SecId [label=<<u>SecId</u>>];
            SecNo; Sem; Year; CRoom; DaysTime;
        };
        CRoom -- {Bldg; RoomNo;};
        
        CHAIR -- {CStartDate};
        
        TAKES -- {Grades};
    };
    
    //
    // Participations
    //
    {
        edge [label=" ", len=1.8, color=red, fontcolor=red];

        COLLEGE -- DEAN [label="1", color="red:invis:red"];  // [label="(1,1)"];
        DEAN -- INSTRUCTOR [label="1"];  // [label="(0,1)"];
        
        COLLEGE -- ADMINS [label="1"];  // [label="(0,N)"];
        ADMINS -- DEPT [label="N", color="red:invis:red"];  // [label="(1,1)"];
        /* invis */ CName -- ADMINS [style=invis];
        
        INSTRUCTOR -- CHAIR [label="1"];  // [label="(0,1)"];
        CHAIR -- DEPT [label="  1", color="red:invis:red"];  // [label="(1,1)"];
        
        DEPT -- EMPLOYS [label="1"];  // [label="(0,N)"];
        EMPLOYS -- INSTRUCTOR [label="N", color="red:invis:red"];  // [label="(1,1)"];
        
        DEPT -- HAS [label="1"];  // [label="(0,N)"];
        HAS -- STUDENT [label="N"];  // [label="(0,1)"];
        
        DEPT -- OFFERS [label="1"];  // [label="(0,N)"];
        OFFERS -- COURSE [label="  N", color="red:invis:red"];  // [label="(1,1)"];
        /* invis */ DName -- OFFERS [style=invis];
        
        COURSE -- SECS [label="1"];  // [label="(0,N)"];
        SECS -- SECTION [label="N", color="red:invis:red"];  // [label="(1,1)"];
        
        STUDENT -- TAKES [label="M"];  // [label="(0,N)"];
        TAKES -- SECTION [label="  N", color="red:invis:red"];  // [label="(5,N)"];  // TODO: ???
        
        INSTRUCTOR -- TEACHES [label="1"];  // [label="(0,N)"];
        TEACHES -- SECTION [label="  N", color="red:invis:red"];  // [label="(1,1)"];
    }
    
    {rank=same; COLLEGE; DEAN; INSTRUCTOR;};
    {rank=same; ADMINS; CHAIR; CStartDate; EMPLOYS;};
    {rank=same; DEPT; HAS; STUDENT; TEACHES;};
    {rank=same; OFFERS; Grades; TAKES;};
    {rank=same; COURSE; SECS; SECTION;};
}
```

---

```graphviz
graph HW_3 {
    label = "HW 1\n2. 考慮加入不分系學生\n\n";
    labelloc="t";
	fontsize=26;

    layout=dot;
    fontname="Sarasa Fixed TC, monospace";
	node [fontname="Sarasa Fixed TC, monospace"];
	edge [fontname="Sarasa Fixed TC, monospace"];
    
    //
    // Entities
    //
    {
        node [shape=box, fontsize=16, style=filled, fillcolor=lightgrey, ordering="out"];

        COLLEGE; INSTRUCTOR;
        DEPT;    STUDENT;
        COURSE;  SECTION;
    };
    
    //
    // Relationships
    //
    {
        node [shape=diamond, fontsize=16, style=filled, fillcolor=whitesmoke];
        
        DEAN;   ADMINS; CHAIR;   EMPLOYS; HAS;
        OFFERS; TAKES;  TEACHES; SECS;
        {node [color=red, fontcolor=red, fillcolor=mistyrose] CONTAINS;}  // Newly added
    }
    
    //
    // Attributes
    //
    {
        node [shape=oval, fontsize=14];

        COLLEGE -- {
            CName [label=<<u>CName</u>>];
            COffice; CPhone;
        };

        DEPT -- {
            DName [label=<<u>DName</u>>];
            DCode [label=<<u>DCode</u>>];
            DOffice; DPhone;
        };

        INSTRUCTOR -- {
            Id [label=<<u>Id</u>>];
            Rank; IName; IOffice; IPhone;
        };

        STUDENT -- {
            SId [label=<<u>SId</u>>];
            DOB; SName; Addr; Phone; Major;
        };
        SName -- {FName; MName; LName;};

        COURSE -- {
            CCode [label=<<u>CCode</u>>];
            CoName [label=<<u>CoName</u>>];
            Credits; Level; CDesc;
        };

        SECTION -- {
            SecId [label=<<u>SecId</u>>];
            SecNo; Sem; Year; CRoom; DaysTime;
        };
        CRoom -- {Bldg; RoomNo;};
        
        CHAIR -- {CStartDate};
        
        TAKES -- {Grades};
    };
    
    //
    // Participations
    //
    {
        edge [label=" ", len=1.8];

        COLLEGE -- DEAN [label="(1,1)"];
        DEAN -- INSTRUCTOR [label="(0,1)"];
        
        COLLEGE -- ADMINS [label="(0,N)"];
        ADMINS -- DEPT [label="(1,1)"];
        /* invis */ CName -- ADMINS [style=invis];
        
        INSTRUCTOR -- CHAIR [label="(0,1)"];
        CHAIR -- DEPT [label="(1,1)"];
        
        DEPT -- EMPLOYS [label="(0,N)"];
        EMPLOYS -- INSTRUCTOR [label="(1,1)"];
        
        DEPT -- HAS [label="(0,N)"];
        HAS -- STUDENT [label="(0,1)"];

        // Newly added
        COLLEGE -- CONTAINS [label="(0,N)", color=red, fontcolor=red];
        CONTAINS -- STUDENT [label="(0,1)", color=red, fontcolor=red];
        
        DEPT -- OFFERS [label="(0,N)"];
        OFFERS -- COURSE [label="(1,1)"];
        /* invis */ DName -- OFFERS [style=invis];
        
        COURSE -- SECS [label="(0,N)"];
        SECS -- SECTION [label="(1,1)"];
        
        STUDENT -- TAKES [label="(0,N)"];
        TAKES -- SECTION [label="(5,N)"];
        
        INSTRUCTOR -- TEACHES [label="(0,N)"];
        TEACHES -- SECTION [label="(1,1)"];
    }
    
    {rank=same; COLLEGE; DEAN; INSTRUCTOR;};
    {rank=same; ADMINS; CHAIR; CStartDate; EMPLOYS;};
    {rank=same; DEPT; HAS; STUDENT; TEACHES;};
    {rank=same; OFFERS; Grades; TAKES;};
    {rank=same; COURSE; SECS; SECTION;};
}
```

---

```graphviz
graph HW_2 {
    label = "HW 1\n3. INSTRUCTOR 考慮合聘\n\n";
    labelloc="t";
	fontsize=26;

    layout=dot;
    fontname="Sarasa Fixed TC, monospace";
	node [fontname="Sarasa Fixed TC, monospace"];
	edge [fontname="Sarasa Fixed TC, monospace"];
    
    //
    // Entities
    //
    {
        node [shape=box, fontsize=16, style=filled, fillcolor=lightgrey, ordering="out"];

        COLLEGE; INSTRUCTOR;
        DEPT;    STUDENT;
        COURSE;  SECTION;
    };
    
    //
    // Relationships
    //
    {
        node [shape=diamond, fontsize=16, style=filled, fillcolor=whitesmoke];
        
        DEAN;   ADMINS; CHAIR;   EMPLOYS; HAS;
        OFFERS; TAKES;  TEACHES; SECS;
    }
    
    //
    // Attributes
    //
    {
        node [shape=oval, fontsize=14];

        COLLEGE -- {
            CName [label=<<u>CName</u>>];
            COffice; CPhone;
        };

        DEPT -- {
            DName [label=<<u>DName</u>>];
            DCode [label=<<u>DCode</u>>];
            DOffice; DPhone;
        };

        INSTRUCTOR -- {
            Id [label=<<u>Id</u>>];
            Rank; IName; IOffice; IPhone;
        };

        STUDENT -- {
            SId [label=<<u>SId</u>>];
            DOB; SName; Addr; Phone; Major;
        };
        SName -- {FName; MName; LName;};

        COURSE -- {
            CCode [label=<<u>CCode</u>>];
            CoName [label=<<u>CoName</u>>];
            Credits; Level; CDesc;
        };

        SECTION -- {
            SecId [label=<<u>SecId</u>>];
            SecNo; Sem; Year; CRoom; DaysTime;
        };
        CRoom -- {Bldg; RoomNo;};
        
        CHAIR -- {CStartDate};
        
        TAKES -- {Grades};
    };
    
    //
    // Participations
    //
    {
        edge [label=" ", len=1.8];

        COLLEGE -- DEAN [label="(1,1)"];
        DEAN -- INSTRUCTOR [label="(0,1)"];
        
        COLLEGE -- ADMINS [label="(0,N)"];
        ADMINS -- DEPT [label="(1,1)"];
        /* invis */ CName -- ADMINS [style=invis];
        
        INSTRUCTOR -- CHAIR [label="(0,1)"];
        CHAIR -- DEPT [label="(1,1)"];
        
        DEPT -- EMPLOYS [label="(0,N)"];
        EMPLOYS -- INSTRUCTOR [label="(1,N)", fontcolor=red];  // [label="(1,1)"];
        
        DEPT -- HAS [label="(0,N)"];
        HAS -- STUDENT [label="(0,1)"];
        
        DEPT -- OFFERS [label="(0,N)"];
        OFFERS -- COURSE [label="(1,1)"];
        /* invis */ DName -- OFFERS [style=invis];
        
        COURSE -- SECS [label="(0,N)"];
        SECS -- SECTION [label="(1,1)"];
        
        STUDENT -- TAKES [label="(0,N)"];
        TAKES -- SECTION [label="(5,N)"];
        
        INSTRUCTOR -- TEACHES [label="(0,N)"];
        TEACHES -- SECTION [label="(1,1)"];
    }
    
    {rank=same; COLLEGE; DEAN; INSTRUCTOR;};
    {rank=same; ADMINS; CHAIR; CStartDate; EMPLOYS;};
    {rank=same; DEPT; HAS; STUDENT; TEACHES;};
    {rank=same; OFFERS; Grades; TAKES;};
    {rank=same; COURSE; SECS; SECTION;};
}
```

