Group9

Data Base of Ship Rental and Sale Company

ข้อมูลที่ทางคณะผู้จัดทำได้นำมาวิเคราะห์และสร้างเป็นฐานข้อมูลของบริษัทที่ประกอบธุรกิจเกียวกับการขนส่งทางน้ำ ปัจจุบันบริษัทได้เปิดดำเนินงานใน 3 ลักษณะได้แก่ การให้เช่าเรือ การขายเรือ และการให้เช่าท่าเรือ ในลักษณะการดำเนินธุรกิจนั้นการให้บริการเช่าเรือถือเป็นธุรกิจหลักของบริษัทเรา ให้บริการโดยการเป็นตัวแทนทางด้านการตลาดสำหรับเรือบรรทุกสินค้าให้แก่บริษัทไทยและต่างชาติ โดยมุ่งเน้นให้เช่าเรือเพื่อการบรรทุกสินค้าในแถบเอเชียตะวันออกเฉียงใต้

ความสัมพันธ์ระบบฐานข้อมูลของ Ship Rental and Sale Company

untitled%201.JPG

ในระบบฐานข้อมูลของบริษัท Ship Rental and Sale Company จะแบ่งข้อมูลหลักออกเป็น 7 Entity ซึ่งก็คือ Ship, Customer, Captain, Crew, Shipyard, Part และ Supplier และมี 4 Bright table ซึ่งใช้แสดงความสัมพันธ์ระหว่าง Entity ซึ่งก็คือ ShipRental, ShipOwner, Component, และ ShipyardRecord

Entity

1.Ship

untitled%202.JPG

เป็น Table ที่ใช้เก็บข้อมูลของเรือซึ่งประกอบด้วย Attribute ต่างๆ ดังรูป ซึ่งกำหนดให้ Ship_ID (ระหัสของเรือ) เป็น Primary Key มีรายละเอียดต่างๆ ได้แก่ ชื่อเรือ วันที่ผลิต ชนิดของลำเรือ อาวุธบนเรือ ความเร็วเรือ (knot) ความยาวของเรือ (feet) ความสามารถในการ (kg) ราคา ค่าเช่า และ Attribute สุดท้ายเป็นตัวบ่งบอกว่าเรือได้ถูกเช่าหรือซื้อไปแล้วหรือไม่

untitled%203.JPG

2.Customer

untitled%204.JPG

Table นี้แสดงข้อมูลลูกค้าที่เข้ามาใช้บริการเช่าและซื้อเรือในบริษัท ซื้อมีการสร้าง Customer_ID ไว้เป็น Primary key ซึ่งบันทึก ชื่อลูกค้า วันเกิด เพศ ที่อยู่และเบอร์โทร ของลูกค้า

untitled%205.JPG

3.Captain

untitled%206.JPG

เป็น Table ที่ใช้เก็บข้อมูลของกัปตันเรือที่บริษัทจ้างเข้ามาทำงาน โดยกำหนดให้ Captain_ID เป็น Primary key ของ Entity นี้ และมีการบันทึก ชื่อ เพศ ที่อยู่ของกัปตัน มีการเก็บประสบการณ์การทำงาน (วัน) ของกัปตันและ Captain_status เป็น Attribute ที่บ่งบอกว่ากัปตันคนไหนที่ว่างอยู่และสามารถรับงานได้

untitled%207.JPG

4.Crew

untitled%208.JPG

Table แสดงข้อมูลลูกเรือซึ่งใช้ Crew_ID เป็น Primary key และเนื่องจากลูกเรือคนหนึ่งๆ จะต้องมีกัปตันผู้ดูแลจึงกำหนดให้ Captian_ID เป็น Foreign Key ของ Table นี้ โดยลูกเรือจะต้องมีกัปตันผู้ดูแลเพียงคนเดียวซึ่งเวลาทำงานก็จะทำงานกับกัปตันคนนี้ แต่กัปตันจะมีลูกเรือได้หลายคนทำให้ความสัมพันธ์ระหว่างกัปตันและลูกเรือเป็นแบบ 1 - Many

untitled%209.JPG

5.Shipyard

untitled%2010.JPG

เป็น Table แสดงข้อมูลของท่าเรือ ซึ่งกำหนดให้ Shipyard_ID เป็น Primary key และประกอบด้วย ชื่อของท่าเรือ ค่าใช้จ่ายในการจอดเรือต่อ 1 วัน และ Shipyard_Status ซึ่งบอกว่าท่าเรือว่างอยู่หรือไม่

untitled%2011.JPG

6.Part

untitled%2012.JPG

Table แสดงข้อมูลชิ้นส่วนที่ใช้ซ่อมและประกอบเรือ ซึ่งกำหนดให้มี Part_ID เป็น Primary keyและมี Foreign key คือ Supplier_ID เป็นตัวบอกว่าวัสดุถูกส่งมาจากบริษัทอะไรโดยวัสดุ 1 ID จะต้องถูกส่งมาจากบริษัทเพียงบริษัทเดียวแต่หนึ่งบริษัทอาจมีการซื้อวัสดุมาได้หลาย ID ระหว่าง Supplier และ Part จึงมีความสัมพันธ์กันแบบ 1 - Many

untitled%2013.JPG

7.Supplier

untitled%2014.JPG

Table แสดงข้อมูลของบริษัทที่มีการซื้อชิ้นส่วนมาใช้ในบริษัทเรือแห่งนี้ ซึ่งกำหนดให้ Supplier_ID เป็น Primary key และมีการบันทึก ชื่อบริษัท ที่อยู่และเบอร์โทรไว้เพื่อใช้สำหรับการติดต่อซื้อขาย

untitled%2015.JPG

Bright Table

1.ShipRental

เป็น Table ที่แสดงข้อมูลการยืมเรือ ซึ่งเป็น Bright Table ที่เชื่อมความสัมพันธ์ระหว่าง Ship table และ Customer table ซึ่งมีความสัมพันธ์แบบ Many – Many ก็คือ ลูกค้าทุกคนสามารถยืมเรือลำไหนก็ได้ ดังในรูป

1-1%281%29.jpg

ซึ่งกำหนดให้ ShipRental_ID เป็น Primary key และมี Ship_ID, Customer_ID และ Captain_ID เป็น Foreign key ซึ่งความสัมพันธ์ระหว่าง Captain Table และ ShipRental Table เป็นแบบ 1 – Many ซึ่งก็คือ การยืมเรือ 1 ครั้งจะต้องมีกัปตันคุมเรือ 1 คน แต่กัปตัน 1 คน จะมีการคุมเรือหลายครั้ง ดังเช่นในรูป

1-2.jpg

และมีการเก็บบันทึกในส่วนของวันที่ยืมเรือ และจำนวนวันที่ยืมเพื่อเป็นข้อมูลไว้ใช้ในการทำบัญชีรายได้ และเพื่อใช้ในการสืบค้นข้อมูลเพื่อจุดประสงค์ต่างๆ อีกด้วย

1-3.jpg

2.ShipOwner

เป็น Bright Table ซึ่งแสดงข้อมูลการเป็นเจ้าของเรือที่ถูกซื้อในบริษัท ซึ่งเชื่อมความสัมพันธ์ระหว่าง Ship table และ Customer table ซึ่งมีความสัมพันธ์แบบ Many – Many โดยเรือ 1 ลำจะสามารถมีเจ้าของร่วมได้หลายคนและลูกค้า 1 คนก็สามารถที่จะซื้อเรือได้มากกว่า 1 ลำ

2-1.jpg

ซึ่งกำหนดให้ ShipOwner_ID เป็น Primary key และมี Ship_ID, Customer_ID เป็น Foreign key ซึ่งนอกจากนี้ยังบันทึกวันที่มีการซื้อขายเกิดขึ้นตามราคาของเรือที่อยู่ใน Ship Table

2-2.jpg

3.ShipyardRecord

เป็น Bright Table ซึ่งแสดงข้อมูลการใช้ท่าเรือว่าเรือลำใดใช้ท่าเรือในวันใดบ้าง ซึ่งกำหนดให้ ShipyardRecord_ID เป็น Primary key ซึ่งเชื่อมความสัมพันธ์ระหว่าง Ship table และ Shipyard table ซึ่งมีความสัมพันธ์แบบ Many – Many โดยเรือ 1 ลำ จะจอดในท่าเรือใดก็ได้ และท่าเรือทุกท่าจะให้บริการเรือลำได้ก็ได้ ก็จะได้ความสัมพันธ์ดังรูป

3-1.jpg

นอกจากนั้นยังมีการบันทึกข้อมูลวันที่เข้าออกของเรือที่ใช้ท่าเรือและสามารถหาจำนวนวันเพื่อคิดราคาต้นทุนในการจอดเรือ ซึ่งมีราคากำหนดไว้ใน Shipyard table อีกด้วย

3-2.jpg

4.Component

เป็น Bright Table ซึ่งแสดงข้อมูลส่วนประกอบของเรือ เพื่อใช้ในการหาชิ้นส่วนต่างๆ เพื่อใช้ซ่อมเรือและผลิตเรือลำใหม่ที่มีรูปแบบคล้ายๆ กัน ซึ่งเชื่อมความสัมพันธ์ระหว่าง Ship table และ Part table ซึ่งมีความสัมพันธ์แบบ Many – Many โดยเรือ 1 ลำจะต้องใช้วัสดุหลายชนิดและวัสดุ 1 ชนิดก็ใช้ในเรือหลายๆ ลำ ซึ่ง Component table จะมีการระบุจำนวนซื้อขายของชิ้นส่วนนั้นๆ และมีการบันทึกราคาในการซื้อขายครั้งนั้นๆ ไว้ด้วย

4-1.jpg

ซึ่งใน Component table จะกำหนดให้ Component_ID เป็น Primary key เพื่อระบุการสั่งของเป็นครั้งๆ

4-2.jpg

Query

1.Ship Required

ลูกค้าต้องการเรือที่มีความเร็ว (Hull Speed) อย่างต่ำ 35 knot เพื่อใช้ในการเดินทางให้ถึงที่หมายให้ทันเวลา และยังต้องการที่เก็บของ (Cargo) สำหรับสินค้าน้ำหนัก 1,800 kg เพื่อใช้ในการขนสินค้า
- การค้นหาข้อมูลจึงต้องการเรือที่มีความเร็วมากกว่า 35 knot และมีพื้นที่สำหรับเก็บสินค้าที่รับน้ำหนักได้มากกว่า 1,800 kg ต้องแสดงค่าเช่าเรือ และเรือที่แสดงออกในตารางยังต้องเป็นเรือที่พร้อมสำหรับออกเรืออีกด้วย

Query%201-1.JPG

จากตารางจะเห็นได้ว่าในช่องแรกทำการเลือก Ship_Name ซึ่งก็คือชื่อเรือและมีการระบุเงื่อนไข Ascending ซึ่งทำให้ลำดับเรือที่ออกมาจะเรียงตามตัวอักษรของชื่อเรือ ในช่องที่ 2 ก็คือ Ship_Type ก็คือชนิดของเรือ ช่องที่ 3 คือ Ship_HullSpeed ก็คือความเร็วของเรือซึ่งใน Query นี้เราจะกำหนดให้ความเร็วของเรือจะต้องไม่น้อยกว่า 35 knot ช่องที่ 4 ให้แสดงผลความยาวของเรือ ช่องที่ 5 ก็คือพื้นที่เก็บของซึ่งกำหนดให้มากว่า 1,800 kg เพื่อให้เพียงพอกับการจัดเก็บสินค้า จากนั้นก็เป็นค่าเช่าเรือ และท่าเรือที่เก็บเรือไว้ และสุดท้ายคือ Ship_Status ซึ่งเป็นตัวบอกว่าเรือถูกยืมไปแล้วหรือไม่ ซึ่งมีการระบุไว้ใน Criteria ว่าเรือจะต้องพร้อมใช้ซึ่งก็คือ “Yes”

Query%201-2.JPG

จาก Data Base ของบริษัทก็จะพบว่ามีเรือ 5 ลำที่มีคุณสมบัติตามเงื่อนไขที่วางไว้

Query%201-3.JPG

2.CaptainFree

เมื่อลูกค้าทำการเช่าเรือจึงทำการหากัปตันเรือเพื่อคุมเรือให้ลูกค้า จึงต้องดูว่ามีกัปตันคนไหนว่างบ้าง
-จึงค้นข้อมูลใน Captain table เพื่อให้ได้รายชื่อกัปตันที่สามารถรับงานได้และค้นใน ShipRental table เพื่อดูประวัติการเดินเรือของกัปตันเพื่อประกอบการตัดสินใจว่าจะให้งานแก่กัปตันคนไหน

Query%202-1.JPG

ในตารางแสดงผลชื่อของกัปตันเรียงตามตัวอักษรโดยระบุเงื่อนไข Ascending แสดงรายละเอียดของกัปตัน ได้แก่ เพศ ประสบการณ์การทำงาน และเบอร์โทรของกัปตัน โดยจะเลือกจาก Captain_status ที่เป็น “Yes” ซึ่งบ่งบอกว่ากัปตันคนไหนที่พร้อมจะออกเรือ

Query%202-2.JPG
Query%201-3.JPG

3.WhoRent

ทางบริษัทอยากรู้ว่าตั้งแต่วันที่ 1 สิงหาคม 2551 มีลูกค้าคนไหนยืมเรือ "Black Pearl" บ้าง และกัปตันรวมทั้งลูกเรือคนใดบ้างที่อยู่บนเรือ
-การค้นหาจะค้นหา Record ตั้งแต่ วันที่ 1 สิงหาคม 2551 จนถึงปัจจุบัน โดยหาข้อมูลเฉพาะข้อมูลของเรือ "Black Pearl" ซึ่งจะต้องแสดงผลกัปตันผู้คุมเรือ และลูกเรือที่ทำงานในวันนั้นๆ ด้วย จึงต้องใช้ Table 5 Table ด้วยกัน ได้แก่ Ship Table, ShipRental Table, Captain Table, Crew Table และCustomer Table

Query%203-1.JPG

เงื่อนไขที่ใช้ใน Query นี้ ก็คือชื่อของเรือให้เลือกแค่ข้อมูลในส่วนของเรือ "Black Pearl" และระบุวันที่ตั้งแต่วันที่ 1 สิงหาคม 2551 โดยใส่เงื่อนไข >#1/8/2551#

Query%203-2.JPG
Query%203-3.JPG

4.MonthRevenue

บริษัทอยากรู้รายได้ที่ได้จากการเช่าเรือในเดือนสิงหาคมของปี 2551
-การค้นหาจะเลือก Record ของ ShipRental ซึ่งมีวันที่ยืมเรือตั้งแต่วันที่ 1สิงหาคม 2551 จนถึงวันที่ 31 สิงหาคม 2551 จากนั้นทำการคูณ Ship_Rent ซึ่งก็คือค่าเช่ากับ ShipRental_day ก็จะออกมาเป็นรายได้ต่อ 1 Record ของ ShipRental

Query%204-1.JPG

ระบุเงื่อนไขการเลือกวันที่โดยเขียนเงื่อนไข >#1/8/2551# And <#31/8/2551# และสร้างช่องตารางรายได้จากการคูณกันของค่าเช่าเรือและจำนวนวันที่ยืม Expr1: [Ship_Rent]*[ShipRental_Day]

Query%204-2.JPG
Query%204-3.JPG

5.ShipComponent

บริษัทอยากรู้วัสดุที่ใช้ทำเรือ “Flying Dutchman” ว่ามีวัสดุอะไรบ้างและมี Supplier ใดขายวัสดุนี้และวัสดุมีราคาเท่าไหร่
-ค้นหาข้อมูงของเรือ “Flying Dutchman” จาก Ship table และจากนั้นค้นหาว่าประกอบด้วย Part ต่างๆ อะไรบ้าง แสดงชื่อ Part แสดงจำนวนที่ใช้ แสดงราคารวมทั้งหมดของชิ้นส่วนที่ซื้อในครั้งนั้นๆ รวมไปถึงแสดงช่องทางการสั่งซื้อวัสดุจาก Supplier

Query%205-1.JPG
Query%205-2.JPG
Query%205-3.JPG