18
คคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคคคคคค IS201 คคคคคคคคคคคคคคคคคคคคคคคคคคค My First Normalization

Design 01

Embed Size (px)

Citation preview

Page 1: Design 01

คณะพาณ�ชยศาสตร์ และการ์บั�ญช�มหาวิ�ทยาล�ยธร์ร์มศาสตร์

เอกสาร์ปร์ะกอบัค�าบัร์ร์ยายวิ�ชา IS201

การ์ออกแบับัฐานข้!อม"ลเบั#$องต!น

My First Normalization

Page 2: Design 01

Records

การ์ออกแบับัRelational Database ร์ะดั�บัต!น

Relational Database ค#อร์ะบับัฐานข้!อม"ลท�'ผู้"!ใช!มองเห*นการ์เก*บัข้!อม"ลในร์"ปข้องตาร์าง ซึ่,'งการ์มองเห*นในร์"ปแบับัน�$จะเป.นแบับัท�'เร์าเห*นและใช!ในช�วิ�ตปร์ะจ�าวิ�นอย"/แล!วิ เช/นการ์สร์!างตาร์างเก*บัเบัอร์

โทร์ศ�พท ข้องเพ#'อน เก*บัส�นค!าคงเหล#อ เก*บัร์ายช#'อน�กศ,กษาท�'เข้!าศ,กษาในมหาวิ�ทยาล�ยธร์ร์มศาสตร์ ฯลฯ ซึ่,'ง การ์ท�'ผู้"!ใช!มองเห*นในร์"ปแบับัข้องตาร์างม�จ3ดัเดั/นค#อง/ายต/อผู้"!ใช!ในการ์ออกแบับั ดั�งจะเห*นไดั!วิ/า

software ดั!านdatabase ซึ่,'งเร์�ยกวิ/า Database Management System (DBMS) ท�'ม�ข้ายในป5จจ3บั�นในร์ะดั�บัMicrocomputer จะเป.นปร์ะเภท

Relational ท�$งหมดั เช/นMicrosoft Access, Visual FoxPro, Dbase, Paradox นอกจากน�$ในเคร์#'องร์ะดั�บัMini ข้,$นไปส/วินใหญ/ในป5จจ3บั�นแนวิโน!มจะมา

ทางRelational ก�นมากข้,$น ต�วิอย/างDBMS ในเคร์#'องร์ะดั�บัน�$เช/นOracle, Ingres, Sybase, DB2

จ3ดัเดั/นข้องRelational Database ม�ไดั!แค/ง/ายต/อผู้"!ใช!ในการ์ออกแบับั แต/ย�งง/ายต/อ

end user ในการ์ใช!DBMS มาท�าการ์ สร์!างฐานข้!อม"ล (Create) ข้จ�ดัฐานข้!อม"ล

(Remove) เพ�'ม (add) ลบั (delete) แก!ไข้ (update) และค!นหา

(query) ข้!อม"ล ซึ่,'งอาจสร์3ปวิ/าเร์าไม/ม�ควิามต!องพ,'ง Programmer เลยในการ์ท�'จะสร์!าง ฐานข้!อม"ล และสามาร์ถท�าไดั!อย/างร์วิดัเร์*วิ ในอดั�ตร์ะบับัฐานข้!อม"ลให!ผู้"!ใช!มองเห*นการ์เก*บัข้!อม"ลในร์"ปข้อง ล�าดั�บั

ข้�$น (hierarchy) และ เคร์#อข้/าย (network) ซึ่,'งยากต/อการ์ออกแบับัและการ์น�าไปใช!และ งาน ซึ่,'งงานดั!านฐานข้!อม"ลท�$งหมดัจะต!องใช!ผู้"!เช�'ยวิชาญโดัยเฉพาะเท/าน�$น

องค ปร์ะกอบัข้องTableTable หร์#อ ตาร์าง จะม�องค ปร์ะกอบัดั�งต/อไปน�$

SID Name City001 น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ

002 เดัชา โชคช�ย เช�ยงใหม/

003 วิ�ภาดัา เบัญจพร์ นนทบั3ร์�

Fiel

Primary

Page 3: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

องค ปร์ะกอบั ควิามหมาย

Fields (Column)

ข้!อม"ลในแถวิต�$ง เช/น table ข้!างต!นม�fields: SID, Name, City

Records (Row)

ข้!อม"ลในแถวินอน เช/น table ข้!างต!นม� record ข้อง น�ตยา เดัชา และวิ�ภาดัา

Primary Key

ค#อfield ซึ่,'งเอาไวิ!บั/งช�$ record

Primary Key ใน table จะต!องม�field ( หร์#อกล3/มข้องfield) ท�'ท�าหน!าท�'บั/งช�$ record ดั�งต�วิอย/างค#อ

field: SID ควิามหมายข้องค�าวิ/าบั/งช�$ record ค#อ เม#'อบัอกค/าข้อง field น�$นแล!วิจะต!องม� เพ�ยง record เดั�ยวิเท/าน�$นท�'ปร์ากฏ เช/น4002610026 จะแสดัง record ข้อง เดัชา โชคช�ย เท/าน�$น

ตามต�วิอย/างข้!อม"ลในตาร์างข้!างต!น SID, Name, City ต/างก*สามาร์ถท�าหน!าท�'

primary key ไดั! เน#'องจากถ!าเร์าเร์�ยกช#'อวิ�ภาดัา เบัญจพร์ หร์#อจ�งหวิ�ดักร์3งเทพ ก*จะปร์ากฏเพ�ยง

record เดั�ยวิ แต/ในทางปฏ�บั�ต�Name และcity สามาร์ถซึ่�$าไดั!Name และCity จ,งไม/สามาร์ถเป.นPrimary key ไดั!

หากเร์าพบัวิ/า table ท�'เร์าออกแบับัม�มากกวิ/าหน,'งfield ท�'เป.นprimary key ไดั!ให!เร์า เล#อกเองวิ/าจะเอาfield ไหนเป.นprimary key เช/น table ข้!างต!นเร์าเก*บัหมายเลข้บั�ตร์

ปร์ะชาชน เร์าจะต!องเล#อกวิ/าจะเอาfield ไหนเป.นprimary key ร์ะหวิ/าง ID และ หมายเลข้

บั�ตร์ปร์ะชาชน ซึ่,'งตามทฤษฏ�ก�าหนดัไวิ!วิ/า table หน,'งๆ ม�primary key ไดั!เพ�ยงต�วิเดั�ยวิ

(แม!วิ/าม�หลายต�วิท�'สามาร์ถเป.นไดั!) และน�'นหมายถ,งDBMS จะอน3ญาตให!เร์าก�าหนดั

primary key ไดั!เพ�ยงต�วิเดั�ยวิใน table

Primary นอกจากเอาไวิ!บั/งช�$ record แล!วิย�งม�ปร์ะโยชน ในแง/การ์ร์�กษาควิามถ"กต!องให!ก�บัข้!อม"ลดั!วิยกล/าวิค#อร์ะบับัจะไม/อน3ญาตให!ผู้"!ใช!ใส/ข้!อม"ลใน field ท�'เป.นprimary key ซึ่�$าไดั!เลย

( เพร์าะวิ/าซึ่�$าแล!วิจะบั/งช�$ record ไดั!อย/างไร์) ซึ่,'งการ์ท�'ไม/อน3ญาตให!ท�าเช/นน�$นจะเป.นการ์ช/วิยให!ฐานข้!อม"ลเร์าม�ควิามถ"กต!องมากข้,$น

นอกจากท�'กล/าวิข้!างต!นเก�'ยวิก�บัprimary key แล!วิวิ/าค/าห!ามซึ่�$า ค/าน�$ย�งห!ามเป.นค/าNull ดั!วิย

( ค/าNull ค#อค/าวิ/างน�'นเอง หร์#อการ์ท�'user ไม/ใส/ค/าเข้!าไปท�'field ท�'เป.นprimary key) สาเหต3ท�'ไม/สามาร์ถเป.นค/าวิ/างก*เพร์าะวิ/า วิ�ตถ3ท�'เร์าให!ควิามสนใจท�'จะเก*บัข้!อม"ลจะต!องสามาร์ถบั/งช�$ต�วิเองไดั! ต�วิอย/าง ม�น�กศ,กษาธร์ร์มศาสตร์ คนไหนไม/ม�หมายเลข้ทะเบั�ยนบั!าง ม�ปร์ะชาชนคนไทยคนไหนไม/ม�หมายเลข้บั�ตร์ปร์ะจ�าต�วิปร์ะชาชนบั!าง

Page 4: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

การ์ออกแบับั tableการ์ออกแบับั table ( น�กdatabase ม�กจะใช!ค�าวิ/า table มากกวิ/า file ซึ่,'งต/อไปน�$จะ

ข้อใช!ค�าวิ/า table) จะม�หล�กการ์ออกแบับัดั�งน�$

ใน table หน,'งๆ เร์าจะเก*บัเพ�ยงเร์#'องเดั�ยวิโดัยม�fields ซึ่,'งเป.นร์ายละเอ�ยดัอธ�บัาย table น�$น

1. เช/นมหาวิ�ทยาล�ยจะออกแบับัตาร์างเพ#'อเก*บัข้!อม"ลเก�'ยวิก�บัมหาวิ�ทยาล�ย อ�นปร์ะกอบัไปดั!วิยข้!อม"ล

น�กศ,กษา และวิ�ชาท�'เป<ดัสอน เพร์าะฉน�$น tables จะม�ท�$งหมดั สอง tables ดั!วิยก�นค#อ

Student, Course โดัย Student เก*บัเร์#'องเก�'ยวิก�บัน�กศ,กษา โดัยม�fields: เลข้ทะเบั�ยน (SID) ช#'อ

(Name) จ�งหวิ�ดัท�'อย"/ (City) ซึ่,'งfields เหล/าน�$จะเป.นร์ายละเอ�ยดัท�'อธ�บัาย

table Student Course เก*บัเร์#'องเก�'ยวิก�บัวิ�ชาท�'มหาวิ�ทยาล�ยเป<ดัสอน โดัยม�fields: ร์ห�สวิ�ชา

(Code) ช#'อวิ�ชา (Description) หน/วิยก�ต (Units) ซึ่,'งfields เหล/าน�$ จะเป.นร์ายละเอ�ยดัท�'อธ�บัาย table Course

StudentSID Name City001 น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ

002 เดัชา โชคช�ย เช�ยงใหม/

003 วิ�ภาดัา เบัญจพร์ นนทบั3ร์�

CourseCode Description UnitsAC201

Introduction to Accounting

3

IS201

Introduction to Information System

3

MK201

Introduction to Marketing

3

Page 5: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

2. ในกร์ณ�ท�' table เก*บัข้!อม"ลชน�ดัเดั�ยวิก�นมากกวิ/าหน,'งfields ให!ท�าการ์แยกfields เหล/า น�$นมาเป.นอ�กหน,'ง table

ต�วิอย/าง หากเร์าต!องการ์เก*บัวิ/าน�กศ,กษาลงเร์�ยนวิ�ชาอะไร์บั!างเร์าอาจออกแบับั table ดั�งดั!านล/าง

SID

Name City Code1

Code2

Code3

001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ AC201

IS201

MK201

002

เดัชา โชคช�ย เช�ยงใหม/ AC201

FN201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� MK201

FN201

IS201

ซึ่,'งหากเร์าออกแบับัดั�ง table ข้!างต!นจะเก�ดัป5ญหาวิ/า เร์าจะม�fields: Code1, Code2,… จ�านวินท�$งหมดัก�'fields ดั� น�กศ,กษาอาจบัอกวิ/าม�ท�$งหมดัถ,งCode48 (4 ป=x 2 เทอมx 6 วิ�ชา = 48 วิ�ชา) ค�าถามต/อมาค#อมหาวิ�ทยาล�ยอน3ญาตให!จบั7 ป= เพร์าะฉ

น�$นน/าจะถ,งCode84 ค�าถามต/อมาเป.นไปไดั!หร์#อไม/ท�'มหาวิ�ทยาล�ยอาจเปล�'ยนกฏดั�งกล/าวิท�าให!จ�านวิน วิ�ชามากส3ดัท�'ลงไดั!เปล�'ยนไป ค�าตอบัค#อ เป.นไปไดั! ป5ญหาท�'เก�ดัข้,$นค#อ เร์าควิร์จะก�าหนดัfield ก�'field

ส�าหร์�บัCode ดั� (จ�านวินวิ�ชาท�'น�กศ,กษาสามาร์ถลงไดั!) ค�าตอบัค#อ ไม/ร์" !

น�กศ,กษาบัางคนอาจบัอกวิ/าเร์าก�าหนดัไปก/อนให!ถ,งCode48 หล�งจากน�$นหากม�การ์หร์#อเพ�'มข้องวิ�ชา เร์าค/อยมาเพ�'มหร์#อลดัfield เอาท�หล�งก*ไดั! วิ�ธ�น�$เป.นวิ�ธ�ท�'น�กออกแบับัdatabase ไม/ใช!ก�นเหต3ผู้ล

ท�'หน,'งค#อ โคร์งสร์!างข้อง table ไม/ควิร์จะม�การ์เปล�'ยนแปลงหล�งจากท�'ไดั!สร์!างแล!วิ และหากม�การ์

เปล�'ยนแปลงโคร์งสร์!างแล!วิเร์าจะต!องท�าการ์แก!ไข้program ดั!วิย เช/นก/อนน�$นเร์าส�'งให!ค!นหาจาก

Code1 จนถ,งCode48 มาตอนหล�งเร์าเพ�'มเป.นCode84 เร์าต!องมาน�'งแก!โปร์แกร์มให! ค!นจนถ,ง84 ดั!วิย นอกจากน�$เวิลาท�'เร์าQuery ข้!อม"ลจะท�าไดั!ล�าบัาก เช/น หากเร์าต!องการ์หาวิ/า ใคร์

ลงวิ�ชา IS201 บั!าง เร์าต!องท�าการ์ค!นต�$งแต/field: Code1 จนถ,งCode48 ซึ่,'งย3/งยากในการ์เข้�ยนมาก

Page 6: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

วิ�ธ�การ์ออกแบับัท�'ถ"กต!องค#อต!องแยกfield ท�'เก*บัข้!อม"ลชน�ดัเดั�ยวิก�นมากกวิ/าหน,'งfields ให!ท�าการ์ แยกfields เหล/าน�$นมาเป.นอ�กหน,'ง table ดั�งต�วิอย/างดั!านล/าง

StudentSID Name City Code

1Code2

Code3

001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ AC201

IS201

MK201

002

เดัชา โชคช�ย เช�ยงใหม/ AC201

FN201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� MK201

FN201

IS201

Student RegisterSID Name City SID Code001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ 001 AC201

002

เดัชา โชคช�ย เช�ยงใหม/ 001 IS201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� 001 MK201

002 AC201002 FN201003 MK20

1003 FN201003 IS201

ข้!อส�งเกต

Table ท�'ม�fields หลายfields ซึ่,'งเก*บัข้!อม"ลชน�ดัเดั�ยวิก�นจะต!องแยกออกมาเป.น

table ต/างหากและเหล#ออย"/field เดั�ยวิ ( code1, code2, code3… ->code)

Table ใหม/จะปร์ะกอบัไปดั!วิยสองfields ค#อfields ท�'เก*บัข้!อม"ลซึ่�$าๆ ก�น (code) และfield ท�'เอาไวิ!เช#'อมก�บัTable หล�ก (SID)

Field ข้อง table หล�กท�'เอาไวิ!เช#'อมจะเป.นprimary key เสมอ (SID ข้อง

Student)

Page 7: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

Field ข้อง table ร์องท�'แยกออกมาท�'เอาไวิ!เช#'อมควิามส�มพ�นธ อาจเป.นหร์#อไม/เป.น

primary key ก*ไดั! ( บั�งเอ�ญต�วิอย/างSID ข้อง table REGISTER เป.น

primary key) Table ใหม/ (REGISTER) จะท�าให!เร์าสามาร์ถเก*บัข้!อม"ลวิ/า น�กศ,กษาหน,'งคนลงก�'วิ�ชาก*ไดั!

ซึ่,'งแต/ละวิ�ชาท�'ลงจะเป.นหน,'ง record ส�าหร์�บัคนท�'ไม/ลงก*จะไม/ม�ข้!อม"ลใน table น�$เลย การ์แยกเป.น table ย/อย ภาษาDatabase เร์าเร์�ยกวิ/าNormalization ส�'งท�'กล/าวิมาข้!างต!นเป.นการ์Normalize ร์ะดั�บัท�'หน,'ง ซึ่,'งปกต�จะม�หกร์ะดั�บั เวิลาออกแบับัเร์าสนใจเฉพาะวิ/าจะสามาร์ถ เพ�'ม ลบั แก!ไข้ ไดั!หร์#อเปล/าเท/าน�$น เร์าไม/สนใจวิ/าจะท�าให!ดั"

ล�าบัาก ( ต�วิอย/าง table Register จะดั"ยาก) ในทางปฏ�บั�ต�แล!วิDBMS บัางต�วิสามาร์ถแปลงการ์แสดังข้!อม"ลให!อย"/ในร์"ปแบับัท�'เร์าต!องการ์ไดั!

ถ,งแม!วิ/าน�กศ,กษาอาจออกแบับัให!field ม�เพ�ยงfield เดั�ยวิ แต/เป.นfield ท�'ม�ควิามกวิ!างมากซึ่,'ง สามาร์ถเก*บัข้!อม"ลไดั!หลายวิ�ชาภายในfield เดั�ยวิดั�งต�วิอย/างข้!างล/าง ป5ญหาก*เหม#อนก�บัการ์ออกแบับัซึ่�$า

field เช/นก�น ( เหม#อนก�บัการ์ออกแบับัเป.นCode1, Code2, Code3, … เช/นก�น) กล/าวิค#อfield Code จะกวิ!างเท/าไหร์/ดั�? นอกจากน�$การ์ออกแบับัในล�กษณะเช/นน�$ก*ม�ป5ญหา

เก�'ยวิก�บัการ์Query เช/นเดั�ยวิก�น เช/นน�กศ,กษาแต/ละคนลงก�'วิ�ชา? ซึ่,'งการ์เข้�ยนค�าส�'งเพ#'อให!ไดั!ค�าตอบั น�$หากการ์ออกแบับั table เป.นดั�งดั!านล/างจะท�าไดั!ล�าบัากมาก เร์าจะถ#อวิ/าม�การ์เก*บัข้!อม"ลท�'ม�การ์ซึ่�$า

field เช/นก�น เพร์าะฉน�$นจะต!องแยกออกมาเป.นสอง tables เหม#อนก�บัการ์แยกข้!างต!น

SID Name City Code001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ AC201, IS201, MK201

002

เดัชา โชคช�ย เช�ยงใหม/ AC201, FN201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� MK201, FN201, IS201

แผู้นผู้�งควิามส�มพ�นธ ข้องร์ะบับั

STUDENT

REGISTER

COURSE

Sid Sid CodeName Code Descripti

onCity Units

Page 8: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

กฏแห/งการ์อ!างอ�ง (REFERENTIAL INTEGRITY)กฏแห/งการ์อ!างอ�งเป.นกฏท�'ช/วิยร์�กษาควิามถ"กต!องให!ก�บัข้!อม"ลในร์ะบับัฐานข้!อม"ล ซึ่,'งเป.นกฏท�'ง/ายแต/เป.นปร์ะโยชน ต/อควิามถ"กต!องข้องข้!อม"ลในร์ะบับัเป.นอย/างมาก

AStudent RegisterSID Name City SID Code001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ 001 AC201

002

เดัชา โชคช�ย เช�ยงใหม/ 001 IS201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� 001 MK201

002 AC201002 FN201003 MK20

1003 FN201003 IS201

BStudent RegisterSID Name City SID Code001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ 001 AC201

002

เดัชา โชคช�ย เช�ยงใหม/ 001 IS201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� 001 MK201

004

วิ�มล เช#$อข้ย�น กร์3งเทพ 002 AC201

002 FN201003 MK20

1003 FN201003 IS201

Page 9: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

Page 10: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

CStudent RegisterSID Name City SID Code001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ 001 AC201

002

เดัชา โชคช�ย เช�ยงใหม/ 001 IS201

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� 001 MK201

002 AC201002 FN201003 MK20

1003 FN201003 IS201004 IS201

สมมต�วิ/าในร์ะบับัฐานข้!อม"ลม�ข้!อม"ลเท/าท�'ปร์ากฏในตาร์างStudent และRegister ดั�ง ตาร์างท�'ปร์ากฏในกล3/มA เท/าน�$น

หากเร์าเพ�'ม record ท�' table Student อ�กหน,'ง record 004 วิ�มล เช#$อ

ข้ย�น กร์3งเทพ ท�' table Student ดั�งปร์ากฏในตาร์างกล3/มB เร์าสามาร์ถเพ�'มไดั! โดัยไม/ม�อะไร์ท�'ผู้�ดั ( แม!วิ/าไม/ม� record ข้องหมายเลข้004 ใน table Register เลย)

สาเหต3ท�'การ์เพ�'ม record 004 วิ�มล เช#$อข้ย�น กร์3งเทพ น�$ไม/ม�อะไร์ผู้�ดัเน#'องจากหากม�น�กศ,กษา

ใหม/เข้!ามาจะต!องมาบั�นท,กท�' table น�$เป.น table แร์ก แต/หากเร์าเพ�'ม record ท�' table Register อ�กหน,'ง record 004

IS201 โดัยไม/ม�ข้!อม"ล record 004 วิ�มล เช#$อข้ย�น กร์3งเทพ ท�' table Student ดั�งปร์ากฏในตาร์างกล3/มC ดั"จะไม/สมเหต3สมผู้ล เน#'องจาก record 004

วิ�มล เช#$อข้ย�น ย�งไม/ลงทะเบั�ยนเป.นน�กศ,กษาข้องมหาวิ�ทยาล�ย ( น�'นหมายถ,งเข้าย�งไม/ม�ช#'อใน table Student) เข้าจะลงทะเบั�ยนเร์�ยนวิ�ชาไดั!อย/างไร์ ( น�'นหมายถ,งเข้าจะม�ข้!อม"ลใน table Register ไดั!อย/างไร์)

เร์าสามาร์ถสร์3ปไดั!วิ/า ต!องม�ข้!อม"ลSID ใน table Student ก/อนถ,งจะม�ข้!อม"ลSID ใน

table Register ไดั! หร์#อกล/าวิอ�กน�ยหน,'งค#อSID ใน table Register จะต!อง อ!างอ�งค/าข้องSID ใน table Student เสมอ ซึ่,'งเร์าเร์�ยกกฏข้!อน�$วิ/า กฏแห/งการ์อ!างอ�ง

(Referential Integrity น�'นเอง)

Page 11: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

ในท�านองเดั�ยวิก�นCODE ใน table Register จะต!องคอยอ!างอ�งCODE ใน

table Course เช/นเดั�ยวิก�นดั!วิยเหต3ผู้ลท�'วิ/า มหาวิ�ทยาล�ยต!องเป<ดัสอนวิ�ชาก/อน ( ต!องม�ข้!อม"ลใน

table Course ก/อน) น�กศ,กษาถ,งค/อยลงทะเบั�ยนเร์�ยนไดั! ( ถ,งค/อยม�ข้!อม"ลใน

table Register ไดั!)

ในภาษาdatabase เร์าจะเร์�ยก table ท�'ถ"กอ!างอ�งวิ/า table หล�ก ส/วิน table ท�' อ!างอ�ง table อ#'นเร์�ยกวิ/า table ร์อง ในกร์ณ�น�$ table หล�กก*ค#อStudent และ

Course ส/วิน table Register จะเป.น table ร์อง เร์าอาจจะเข้�ยนแผู้นผู้�งแห/งการ์อ!างอ�งไดั!ดั�งร์"ปดั!านล/าง

แผู้นผู้�งแห/งการ์อ!างอ�ง (Referential Diagram)

STUDENT

REGISTER

COURSE

Sid Sid CodeName Code Descripti

onCity Units

อาจกล/าวิไดั!วิ/า การ์ออกแบับัฐานข้!อม"ลข้�$นพ#$นฐานจะม�หล�กท�'ส�าค�ญเท/าท�'ไดั!กล/าวิมาแล!วิ และเป.นหล�กท�'ใช!มากใน การ์ออกแบับั และต/อไปน�$เพ#'อให!น�กศ,กษาม�ควิามเข้!าใจการ์ออกแบับัมากข้,$นจะเป.นการ์ให!ต�วิอย/างในการ์

ออกแบับัเพ�'มเต�ม

เร์าสามาร์ถสร์3ป tables ท�'เร์าออกแบับัไดั!ดั�งน�$Student (Sid, name, city)Register (Sid, Code)Course (Code, Description, Units)

Page 12: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

ต�วิอย/าง: เพ�'มเกร์ดัท�'ไดั!ร์�บัจากการ์เร์�ยน หากเร์าต!องการ์เก*บัเกร์ดัท�'น�กศ,กษาไดั!ร์�บัในวิ�ชาท�'ลง เร์าต!องเก*บัไวิ!ท�' table Register เพร์าะฉ

น�$น ท�' table ดั�งกล/าวิจะม�field ดั�งต/อไปน�$Register (Sid, Code, Grade)

ซึ่,'งเร์าสามาร์ถต�ควิามหมายข้องตาร์างไดั!วิ/า น�กศ,กษาหมายเลข้ทะเบั�ยนน�$ (Sid) ลงวิ�ชาน�$ (Code) ไดั!เกร์ดัเท/าน�$ (Grade) นอกจากน�$ให!น�กศ,กษาส�งเกตดั!วิยวิ/า การ์ไดั!ร์�บัเกร์ดัเป.นเร์#'องข้องการ์ลง

ทะเบั�ยนเร์�ยน ซึ่,'งเป.นไปตามกฏตามการ์ออกแบับัข้!อ1. ท�'กล/าวิวิ/าใน table หน,'งๆ เร์าจะเก*บัเพ�ยงเร์#'อง

เดั�ยวิท�'อธ�บัาย table น�$น

ต�วิอย/าง: เก*บั ช#'อ พ�'น!อง ข้องน�กศ,กษา

หากร์ะบับัต!องการ์เก*บัช#'อพ�'น!องข้องน�กศ,กษาเร์าสามาร์ถท�'จะเพ�'มfield Sibling เป.นอย/าง

table ในกล3/มA ซึ่,'งก/อให!เก�ดัป5ญหาวิ/า เร์าจะม�Sibling ก�'field ดั�ถ,งจะพอ ค�าตอบัค#อ ไม/ร์" !

เพร์าะฉน�$นเร์าต!องแยกfield ดั�งกล/าวิเป.นอ�กหน,'ง table ดั�งปร์ากฏในกล3/มB และสามาร์ถเข้�ยน แผู้นผู้�งแห/งการ์อ!างอ�งร์ะหวิ/าง table Student และSibling ไดั!ดั�งร์"ปC โดัยม�

table Student เป.น table หล�ก และSibling เป.น table ร์อง สาเหต3ท�'

table Student เป.น table หล�กเน#'องจาก น�กศ,กษาต!องเป.นน�กศ,กษาข้องธร์ร์มศาสตร์

ก/อน ( ต!องม�ข้!อม"ลท�' table Student ก/อน) ทางมหาวิ�ทยาล�ยถ,งจะเก*บัช#'อพ�'น!องข้องน�กศ,กษา

AStudentSID Name City Sibling1 Siblin

g2Sibling3

001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ ส3นทร์ วิน�ดัา

002

เดัชา โชคช�ย เช�ยงใหม/ เดัโช ก�ญญา เสาวิน�ย

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� ป5ญญา โสภา สร์ญา

Page 13: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

BStudentSID Name City Siblin

g1Sibling2

Sibling3

001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ ส3นทร์ วิน�ดัา

002

เดัชา โชคช�ย เช�ยงใหม/ เดัโช ก�ญญา เสาวิน�ย

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� ป5ญญา โสภา สร์ญา

Student SiblingSID Name City SID Snam

e001

น�ตยา ส3วิร์ร์ณเอก กร์3งเทพ 001 ส3นทร์

002

เดัชา โชคช�ย เช�ยงใหม/ 001 วิน�ดัา

003

วิ�ภาดัา เบัญจพร์ นนทบั3ร์� 002 เดัโช

002 ก�ญญา

002 เสาวิน�ย

003 ป5ญญา

003 โสภา

003 สร์ญา

CStudent SiblingSid SidName SnameCity

Page 14: Design 01

My first Normalization อ.ดัร์. ส3ร์�ตน โคอ�นทร์างก"ร์

ต�วิอย/าง: เก*บัเบัอร์ โทร์ศ�พท ข้องน�กศ,กษาเพ�'ม เช/นเดั�ยวิก�บัต�วิอย/างเก*บัช#'อพ�'น!องข้องน�กศ,กษา เร์าจะต!องสร์!างอ�กหน,'ง table ช#'อ

Telephone และม�เพ�ยงสองfields เท/าน�$นค#อSid, Tel โดัยม� table Student เป.น table หล�ก และ table Telephone เป.น table ร์อง

เร์าอาจเข้�ยนแผู้งผู้�งข้องการ์อ!างอ�ง เป.นดั�งร์"ปต/อไปน�$

Sibling Student RegisterSid Sid SidSname Name Code

City Grade

Telephone

Course

Sid CodeTel Descripti

onUnits