Saturday, March 5, 2016

3.7 Enforcing Referential Integrity

Relationships
Define how the data in tables is related, such as ID fields or name fields in different tables that should match.

A one-to-one relationship exists when two tables have an identical field containing the same information, meaning each record in a table has one matching record in a related table.

A one-to-many relationship exists when each record in a table has one or more matching records in the related table.

An advantage to establishing relationships between tables is that you can enforce referential integrity, which helps prevent inaccurate values from being entered into related fields. Referential integrity requires that the record(s) in one table in a relationship have one or more corresponding records in the other table in the relationship.

ကြ်န္ေတာ္တို႕မွာ ျပည္နယ္၊တိုင္း tblStateRegion Table တစ္ခုရွိမယ္။
1 Kachin
2 Kayah
12 Yangon
ID က 1,2,3...(PK: Number)
StateRegionName က (Text) ေပါ့။
ေနာက္ထပ္ ျပည္နယ္၊တိုင္း Table တစ္ခု။
ျပည္နယ္တိုင္း ID က 1,2,3,4
ေနာက္ လူဦးေရ(က်ား)၊ လူဦးေရ(မ)၊ အက်ယ္အ၀န္း၊ တည္ေနရာ (လတၱီတြဒ္၊ ေလာက္ဂ်ီတြဒ္)၊ စတဲ့ အေၾကာင္းအရာေတြ ပါမယ္။
ဒီ ျပည္နယ္တိုင္း Table ႏွစ္ခုကို ID နဲ႕ relationship လုပ္ပါမယ္။
တစ္ခုခ်င္းဆီ ဆက္စပ္တဲ့အတြက္ ဒါမ်ိဳးကို A one-to-one relationship လို႕ေခၚပါတယ္။
(ဘာေၾကာင့္ Table တစ္ခုတည္း မသံုးသလဲ။)

Township Table တစ္ခုရွိမယ္။
Kachin ရဲ႕ Township ေတြ
1. Myintkyina
2. ...
Kayah ရဲ႕ Township ေတြ
1. ..
2.
Yangon ရဲ႕ Towship ေတြ
ဒီ Township Table ကို Desing စဥ္းစားတဲ့အခါ
Township ID ရွိမယ္။ Township Name ရွိမယ္။
ဘယ္တိုင္း၊ ဘယ္ျပည္နယ္လည္းသိေအာင္ ျပည္နယ္တိုင္းရဲ႕ ID ထည့္မယ္။
TownshipID, TownshipName, StateRegionID ဒီလိုျဖစ္မယ္။
ဒီTownship Table ရဲ႕ Primary Key ကို ဘယ္လိုေပးမလဲ။
TownshipID ကို တစ္ခုနဲ႕တစ္ခု မတူေအာင္ေပးႏိုင္မယ္ ဆိုရင္
ဒီ TownshipID တစ္ခုတည္းကိုပဲ PK ေပးလို႕ရတယ္။
(ကခ်င္အတြက္ ျမစ္ၾကီးနားကိုလည္း ၁ ကစခ်င္တယ္။ ရန္ကုန္အတြက္ ကမာရြတ္ကိုလည္း ၁ ကစခ်င္တယ္။
ဘယ္လိုလုပ္ရလဲ)

ျပည္နယ္တိုင္း Table နဲ႕ Township ကို StateRegionID နဲ႕ ဆက္စပ္ပါမယ္။ one-to-many relationship ျဖစ္ပါတယ္။

If referential integrity were enforced between tblStateRegion and tblTownship, for example, you could not enter a StateRegionID into tblTownship if the ID was not also listed in tblStateRegion.

Enforce Referential Integrity မွာ checked လုပ္ထားရင္ tblStateRegion မွာ မရွိတဲ့ ID ကို tblTownship မွာ ထည့္သြင္းလို႕မရပါဘူး။
Cascade Update Related Fields မွာ checked လုပ္ထားရင္
tblStateRegion မွာ ID နံပါတ္ျပင္တာနဲ႕ tblTownship မွာ ျပင္ျပီးသားျဖစ္ပါတယ္။
Cascade Delete Related Records ကို checked လုပ္ထားရင္
tblStateRegion မွာ Delete လုပ္တာနဲ႕ လုပ္တဲ့ ျပည္နယ္တိုင္း ID နဲ႕ ဆက္စပ္တဲ့ tblTownship က Record အားလံုး Deleted ျဖစ္ပါတယ္။
Download Example DB>>