SQL - (11) Supertypes and Subtypes

මෙම ලිපියේ දී ඔබට,
  • subtype යනු කුමකුදැයි හඳුනාගැනීමට පුළුවන්
  • supertype යනු කුමකුදැයි හඳුනාගැනීමට පුළුවන්
  • entities සහ subtypes අතර ඇති සම්බන්ධාවයන් පිළිබඳවත්
  • ER diagrams තුල subtype හා supertype භාවිත වන ආකාරය පිළිබඳවත් අවබෝධයක් ලබා ගැනීමට පුලුවන්.
 
Supertypes සහsubtypes හඳුනාගනිමු.
  • Entity එකක් Supertype එකක් වශයෙන් හැඳින්වීමට පුළුවන්. 
  • එම entity එකෙහි attributes අපිට subtypes වශයෙන් හඳුනාගැනීමට පුළුවන්. 
  • මෙම subtype අතර තමන්ට ආවේණික attributes වගේම සම්බන්දතාවයන් පවතී.
  • Subtype අඳිනු ලබන්නේ Supertyp එකක් තුළය.
  • Subtype එකක් තනිව ස්ථාන ගත කරන්නේ නැත. එහෙම තනිව පවතින Subtype සඳහා භාවිතා කරනුයේ subentity ලෙසයි.
මුලින්ම අපි සැබෑ ලෝකයේ උදාහරනයක් අනුව විමසා බලමු. අනුව කෙටි ආහාර ඇනවුමක් විමසා බලමු

අනුව,
  • අපගේ entity එක වන්නේ ANIMAL වන අතර එහි දෙකක් ලෙස කොඳුඇට පෙළක් සහිත සතුන් (VERTEBRATE ) හා කොඳු ඇට පෙළක් රහිත (INVERTEBRATE) සතුන් හඳුනාගැනීමට පුළුවන්. මෙම් උදාහරණයට අනුව,
      • ANIMAL නම් entity එක supertype එක වශයෙන් හැඳින්විය හැක.
      • එහි ඇති VERTEBRATE සහ INVERTEBRATE යන කාණ්ඩ දෙක subtype වශයෙන් හඳුන්වයි.
      • පහත රූප සටහන හොඳින් නිරීක්ෂණය කිරීමෙන් මෙය හොඳින් අවබෝධ කර ගැනීමට පුළුවන්.
දැන් අපි තවත් නිදර්ශනයක් විමසා බලමු. සඳහා පහත රූප සටහන හොඳින් අධ්‍යයනය කරන්න.
මෙහි supertype එක වන්නේ EXAM. එහි subtypes වන්නේ QUIZ, MIDTERM සහ FINAL මෙම subtypes වලට පොදු වුනු attributes තිබෙනු ඔබට දැක් ගන්නට ලැබෙන්න ඇති.


සෑම විටම Subtype එකකට වඩා වැඩි ගණනක් තිබිය යුතුයි.
ER model එක අවසන් කිරීමේ දී subtypes
තනිව නොසිටි. එසේ වීමට බලපාන ප්රධාන නියමයන් දෙකක් පවතී. එනම්,

Exhaustive: supertype එකේ instance එකක් සෑම විටම එක supertype එකක් යටතට ගොනු වේ.
Mutually Exclusive: supertype එකේ instance එක් supertype එකකට අනිවාර්යයෙන්ම අයිති වෙයි.
නිදර්ශනයක් ලෙස පහත රූප සටහන බලන්න.
අනුව ඉහත නිදර්ශනයේ දී OHTER ලෙස Subtype එකක් සකස් කර ඇත්තේ supertype එකේ සෑම instance එකක්ම නිරූපණය කිරීමට හැකි වන ආකාරයටයි.


Subtypes සැම විටම පවතිනවා
සෑම entity එකකම subtype තියෙනවා. ඉහත දී අපි සාකච්ඡා කළ නිති වලට අනුකුලව අවශ් ඕනෑම විටක දී ගැලපෙන පරිදි subtype සකස් කිරීම කළ හැකියි. නමුත් ව්යාපාරයක දී මෙම අපි සකස් කරන subtype අතර සමානකම් මෙන්ම අසමානකම් හඳුනාගත යුතු වෙනවා.
නිවැරදි ලෙස Subtypes හඳුනාගැනීම
මේ සඳහා මූලික ප්රශ්න 03ක් භාවිතා කරනු ලබනවා. එම ප්රශ්න ඇසීම මගින් Subtypes නිසි ආකාරයෙන් හදුනාගැනීමට අවස්ථාව ලැබෙනවා.
  1. මේ subtype එක අදාල supertype එක හා ගැලපේ ?
  1. සෑම සිදුවිය හැකි අවස්ථාවක්ම (exhaustive) ආවරණය වී ඇත් ?
  1. අප යොදාගන්නා උදාහරණය අයත් වන්නේ එක් subtype එකකට පමණක් ?

Nested Subtypes
අපගේ අවශ්යතාවන්ට ගැලපෙන ආකාරයට Nested Subtypes නැවත නැවත කුඩා කොටස් වලට බෙදීමට පුළුවන්. පහත නිදර්ශනයේ දැක්වෙනුයේ එම ආකරයට නැවත කොටස් කරන ලද Subtypes වලට නිදර්ශනයකි.
සාමාන්‍යයෙන් මේ සඳහා levels දෙකක් භාවිත කරනු ලැබුවත් අපගේ පහසුව අනුව ඊට වැඩි ප්‍රමාණයක් වුවද භාවිත කරීමට අවස්ථාව ඇති බව මතක තබා ගන්න.
 

SQL - (10) Matrix Diagrams


මෙම ලිපියේ දී අපි,
  • Matrix diagramඑකක් භාවිතා කර entities අතර පවත්නා සම්බන්ධතාවයන් හඳුනාගන්නා ආකාරයත්,
  • Matrix diagramඑකක් අධාරයෙන් ERDසකස් කර ගන්නා ආකාරය විමසා බලමු.
 

Entity අතර ඇති සම්බන්ධතාවයන් (relationships) නිවැරදිව හඳුනාගැනීම අතිශයින් වැදගත් කරුණක්. මෙම සම්බන්ධතාවයන් හදුනාගැනීම සඳහා වවිධ ක්රමවේද ඇති බව අපි දනිමු.

Matrix diagram

Matrix diagram භාවිතයෙන් අපට කිසිම සෑම සම්බන්ධතාවයක්ම නිසි අයුරින් හඳුනාගැනීමට අවකාශ සැලසේ. මෙය තවත් පැහැදිලි වන අයුරින් ප්රකාශ කලොත් කිසිම සම්බන්ධතාවයක් මග නොහැරෙන අන්ඳමට සම්බන්ධතාවයන් විශාල ප්රමාණයක් සමග කටයුතු කිරීමේ දී matrix diagram භාවිතා කිරීම ඉතාමත් සුදුසු ක්රියාමාර්ගයක් ලෙස පෙන්නා දීමට පුළුවන්.

Entities 03ක් පෙන්වන පහත උදාහරණයේ දී සම්බන්ධතාවයන් සැකසීම මනෝමයෙන් වුවද සිදු කර ගැනීමට පුළුවන්.


එහෙත් Entities විශාල සංඛ්යාවක් ඇති පහත දැක්වෙන නිදර්ශනයේ දී ආකාරයෙන් සම්බන්ධතා මනෝමයෙන් සිදු කිරීම පහසු කටයුත්තක් නොවේ.


Matrix diagram එකක් භාවිත කරන ආකාරය නිදර්ශනයක් ඇසුරින් සාක්ච්ඡා කරමු.

සංචාරක ව්යාපාරයකදී සංචාරකයින් ගමන්ගත් රටවල් හා නැරඹූ ස්ථාන පිළිබඳ තොරතුරු ඇත්නම් ඔවුන් සඳහා සංචාරයන් සංවිධානය කිරීම පහසු කටයුත්තකි. මේ සඳහා අපි භාවිත කරන්නට යන්නේ matrix diagram එකකි

පහත දැක්වෙන්නේ ඉහත නිදර්ශනය සඳහා ඇදගත් entities සහ MATRIX DIAGRAM
එකයි. හොඳින් නිරීක්ෂණය කරන්න.


වගුවේ සිරස් අතට මෙන්ම තිරස් අතට entities නම් කර ඇත. මැද දෙකටම පොදු කොටු පෙළ ඉවත් කර තිබේ. එමගින් එකම් entity සඳහා සම්බන්ධතාවයන් නිර්මාණය වීම වලකා ඇත.

අනුව පහත රූප සටහනින් දක්වා ඇත්තේ ඉහත දී අපි සාකච්ඡා කල නිදර්ශනය සඳහා වන සම්බන්ධතාවයන් සමූහයයි.

එහෙත් Matrix diagrams
තුලදී optionality සහ cardinality පිළිබඳව නිරූපනයක් සිදු නොවන බව අපි මෙතනදී මතක තබා ගත යුතු වැදගත්ම කරුණයි.

පහත දැක්වෙනුයේ ඉහත නිදර්ශනයට අනුව අදිනු ලැබු ERD එකයි.







SQL - (9) ERDish සහ සම්බන්ධතාවයන් (Relationships ) ඇඳීම

-->
මෙම ලිපියේ දී,
  • ERDish පිළිබඳවත්
  • ERD වලදී නිසි පරිදි සම්බන්ධතාවන් හා වචන භාවිත කිරීම පිළිබඳවත් අවබෝධයක් ලබා ගැනිමට හැකි වේ.
 

ERDish යනු
සෑම ව්‍යාපාරයකටම නැතිනම් විෂයයකට ආවේණික වචන මාලාවන් පවති.
Data modeling වලදීද ඒ ආකාරයේ ම විශේෂ වචන මාලාවක් පවතී. මෙන්න මේ වචන මාලාව හඳුන්වනු ලබන්නේ ERDish ලෙසය. ඒ අනුව ERD එකකදී entities අතර සම්බන්ධතාවයන් නිර්මාණය කිරීම සඳහා භාවිත කරන භාෂාව ERDish ලෙස තවදුරටත් හඳුන්වා දීමට පුළුවන.

ERD එකක් නිර්මාණය කිරිමට ERDish එකක් භාවිත කිරීමෙන් client Database
Administrators අතර නිර්මාණය කරන සැලසුම පිළිබඳව නිසි අවබෝධයක් ලබා ගැනීමට හැකි වේ.

ERD එකක් නිර්මාණය කිරීම.
Entities අතර සම්බන්ධතාවන් හඳුනාගැනීමෙන් අනතුරුව optionality සහ cardinality පිළිබදව අවධානය යොමු කළ යුතුයි. ඉන් අනතුරුව ERDish මගින් සකස් කල වාක්‍යය සංඝටක රූපසටහනක් බවට පත් කර ගත යුතුයි. පහත නිදර්ශනයේ දැක්වෙනුයේ එවැනි රූප සටහනකි.


ඉහත රූපයේ දැක්වෙන සංඝටක අපි වෙන් වෙන් වශයෙන් හඳුනාගනිමු. ඒ අනුව,

පියවර 01
(සාමාන්‍යයෙන් වමේ සිට කියවීම ඇරඹේ.) ඒ අනුව පහත රූප සටහන විමසා බලමු.

EMPLOYEE (entity A ලෙස අවධානය යොමු කරමු)
MUST BE (optionality එක පෙන්වීමට තනි ඉරක් (solid line))
WORKING IN (සම්බන්ධතාවයේ (relationship) න ම)
ONE (cardinality එක පෙන්වීමට single toe)
DEPARTMENT (entity B ලෙස අවධානය යොමු කරමු )

පියවර 02

මෙහිදි සිදු වන්නේ ERDish ඒක අවසානයේ සිට කියවීමයි. පහත රූපය හොඳින් නිරීක්ෂණය කර බලන්න.


DEPARTMENT (entity B ලෙස අවධානය යොමු කරමු)
MAY BE (optionality එක පෙන්වීමට කඩ ඉරි (dotted line) භාවිත කරයි)
THE COST CENTER FOR (සම්බන්ධතාවයේ (relationship) න ම)
ONE OR MORE (cardinality එක පෙන්වීමට crow’s foot)
EMPLOYEE (entity A ලෙස අවධානය යොමු කරමු)

පියවර 03

මෙම පියවරේදි සිදු කර ඇත්තේ ඉහත අවස්ථාවන් දෙකම එක් වර පෙන්වීමයි. අපට සෑම විටම මේ ආකාරයට වාක්‍යය දෙපැත්තෙන්ම කියවා තේරුම් ගැනීමට හැකියාව තිබිය යුතුයි. පහත රූපය විමසා බලන්න.




SQL - (8) ER Diagram සකස් කිරීම

මෙම ලිපියේ දී ඔබට,
  • entities හා attributes භාවිත කරමින් ER diagram එකක් සකස් කිරීමට යොමු වන ආකාරය විමසා බලන්න පුළුවන්.

ER Diagram ඇඳීම

  • Entities නියෝජනය කරනු ලබන්නේ softboxes වලිනි.
  • Entity යේ නම softbox එක තුල ලිවිය යුතුයි.
  • Entity යේ නම සැම විටම කැපිටල් අකුරින් හා ඒක වචනයෙන් ලිවිය යුතුයි. 
 පහත රුපසටහනේ දැක්වෙන්නේ නිසි අයුරින් එම කරුණු  softbox එකක් තුල නිර්මාණය කරන අයුරුයි.
 
සම්බන්ධතා නිර්මාණය කිරීම 
  • Attributes ලයිස්තු ආකාරයෙන් entity නමට පහලින් ඉදිරිපත් කෙරේ.
  • Mandatory (අත්ය්‍යාවශ්‍ය) attributes තරු ලකුණ යටතේ (asterisk: “*”) ඉදිරිපත් කෙරේ.
  • Optional (අතිරේක) attributes රවුමක් (“o”) යටතේ ඉදිරිපත් කෙරේ.
  • Unique identifiers (Unique identifiers) යනු මොනවාදැයි මීට පෙර සාකච්ඡා කර ඇත.) හැෂ් ලකුණින් (“#”) ඉදිරිපත් කෙරේ.
 පහත රුප සටහනෙන් දැක්වෙනුයේ ඒ ආකාරයට සකස් කල softbox කිපයකි.
  • Relationships තමයි entities ඒක් කරමින් අඳිනු ලබන රේඛාවන්. 
  • මෙම රේඛා තනි රේඛා මෙන්ම කඩ ඉරි වීමට පුළුවන්. 
  • මෙම රේඛාව අවසානය එක්කෝ single toe ලෙස අවසන් වන අතර නැතිනම් crow’s foot ලෙස අවසන් වෙයි. (පහත රූප සටහන බලන්න)


SQL - (7) Relationships හඳුනාගනිමු.

Relationships හඳුනාගනිමු.

මෙම ලිපියේ දී ඔබට,
  • relationship වල ඇති optionality පිළිබඳවත්,
  • relationship වල ඇති cardinality පිළිබඳත්,
  • Entities වලට relationship ලබා දීමේදී භාවිතා කරන cardinality සහ
    optionality නීති රීති පිළිබඳවත් අවබෝධයක් ලබා ගැනීමට පුළුවන්.
දත්ත අතර පවත්නා සුවිහේෂි සම්බන්ධතාවයන් හඳුනාගැනීම සඳහා entities අතර relationships ඇති කරනු ලබනවා. නිදසුනක් මගින් පෙන්නා දුන්නොත් STUDENT කියන entity එකයි COURSE කියන entity එකයි අතර සම්බන්ධතාවයක් පවතී. මෙන්න මේ තත්ත්වය relationships ලෙස හඳුන්වා දෙනවා.

ව්‍යාපාරයක් model කිරීමේ දී entities වගේම, එම entity අතර පවත්නා සම්බන්ධතාවයන් ද (relationships ) ද අතිශයින් වැදගත් වෙනවා.

Relationships මඟින්,
  • ව්‍යාපාරයක ඇති වැදගත් අත්‍යාවශ්‍ය අංගයන් නිරූපනය කරයි.
  • Entities අතර සම්බන්දතාවයන් පෙන්නුම් කරයි.
  • සෑම විටම entities දෙකක් අතර හෝ entity එකක් දෙවරක් යොදා ගනිමින් සම්බන්ධතාවයන් ඇති කර ගනී.
  • හැම විටම දෙපැත්තක් නියෝජනය කරයි.
  • එම දෙපැත්තම නම් කර ගත යුතුයි.
  • optionality භාවයක් ඇත.
  • Cardinality භාවයක් ඇත.

Optionality සම්බන්ධතාවයක් (Relationship) එකක් යනු කුමක්ද?

සෑම සම්බන්ධතාවයක් ඒක්කෝ අත්‍යාවශ්‍ය ( mandatory) නැතිනම් අත්‍යාවශ්‍ය නොවන (optional) එකක් වශයෙන් පෙන්නා දීමට පුළුවන්. මෙය තීරණය වන්නේ අප යොදා ගන්නා entity එකේ පවත්නා instances මතිනි.

පහත නිදර්ශන දෙස අවධානය යොමු කරමු,
  • employee නැමති entity එකක නියෝජනය කරන සෑම අයෙකුටම job එකක් තිබීම අවශ්‍යමයි. ඒ නිසා employee කියන entity එකෙහි mandatory නැතිනම් optional සම්බන්ධතාවයක් (relationship) එකක් ලෙස අය පෙන්නා දීමට පුළුවන්.
  • ඒසේම සෑම job එකක්ම කරනු ලබන්නේ employee කෙනෙකු විසිනි. ඒ නිසා මේක job කියන entity එකෙහි mandatory නැතිනම් optional සම්බන්ධතාවයක් (relationship) එකක් ලෙස පෙන්නා දීමට පුළුවන්.
නිදර්ශන :- mandatory
Each PRODUCT must be classified by one and only one PRODUCT TYPE

නිදර්ශන :- optional
Each PRODUCT TYPE may classify one or more PRODUCTs

Cardinality සම්බන්ධතාවයක් (Relationship) එකක් යනු කුමක්ද?

මෙම සම්බන්ධතාවය මගින් සම්බන්ධතාවන්ගේ කිසියම් ප්‍රමාණයක් නිරූපණය කරයි. මෙමගින් කොපමණ ප්‍රමාණයක් ද යන පැනයට පිළිතුරු සපයයි.

නිදර්ශන කීපයක් සලකා බලමු.
  • Employee කොපමණ jobs ප්‍රමාණයක් සපයයිද ?
  • job එකක් employees ලා කී දෙනෙක් මගින් නිම කරනවාද? ආදිය මීට නිදර්ශන ලෙස පෙන්නා දීමට පුළුවන්.
නිදර්ශන :- Cardinality
Each EMPLOYEE must hold one and only one JOB
Each JOB may be held by one or more EMPLOYEEs
මීළගට අපි SEAT සහ PASSENGER කියන entity දෙක අතර පවත්නා සම්බන්දතාවයන් (Relationships ) කවරාකාර විය හැකිද යන්න විමසා බලමු.
  • Each SEAT may be sold to one or more PASSENGERs
  • Each PASSENGER may purchase one SEAT 
  • SEAT is sold to a PASSENGER (දෙදෙනෙකුට ලබා දිය නොහැක) 
  • PASSENGER purchases or books a SEAT