ඕනෑවට වඩා මෝස්තර කිරීම හොඳ පුරුද්දක් නොවේ. එනම් - අවශ්ය නොවන විට සෑම විටම ස්වයංක්රීය වර්ධක int ප්රාථමික යතුරක් තිබීම හොඳ පුරුද්දක් නොවේ.
එකක් අවශ්ය නොවන උදාහරණයක් බලමු.
ඔබට ලිපි සඳහා වගුවක් ඇත - මෙයට ප්රාථමික ප්රාථමික යතුරක් ඇත id
, සහ වර්චාර් තීරුවක් නම් කර title
ඇත.
ඔබට ලිපි කාණ්ඩ වලින් පිරුණු වගුවක් ද ඇත - id
int ප්රාථමික යතුර, varchar name
.
ලිපි වගුවේ එක් පේළියක id
5 ක් ඇති අතර title
“බටර් සමග පාත්තයා පිසින ආකාරය” ඇත. ඔබේ කාණ්ඩ වගුවේ පහත දැක්වෙන පේළි සමඟ එම ලිපිය සම්බන්ධ කිරීමට ඔබට අවශ්යය: "කුකුළා" ( id : 20), "පාත්තයා" ( id : 12), "ඉවුම් පිහුම්" ( id : 2), "බටර්" (id: 9) .
දැන්, ඔබට වගු 2 ක් ඇත: ලිපි සහ කාණ්ඩ. ඔබ දෙදෙනා අතර සම්බන්ධතාවය ඇති කරන්නේ කෙසේද?
ඔබට තීරු 3 ක් සහිත වගුවක් තිබිය හැකිය: id (ප්රාථමික යතුර), article_id (විදේශීය යතුර), category_id (විදේශීය යතුර). නමුත් දැන් ඔබට එවැනි දෙයක් තිබේ:
| id | a_id | c_id |
| 1 | 5 | 20 |
| 2 | 5 | 12 |
| 3 | 5 | 2 |
වඩා හොඳ විසඳුමක් වන්නේ තීරු 2 කින් සමන්විත ප්රාථමික යතුරක් තිබීමයි.
| a_id | c_id |
| 5 | 20 |
| 5 | 12 |
| 5 | 2 |
මෙය කිරීමෙන් මෙය කළ හැකිය:
create table articles_categories (
article_id bigint,
category_id bigint,
primary key (article_id, category_id)
) engine=InnoDB;
ස්වයංක්රීය වර්ධක සංඛ්යාවක් භාවිතා නොකිරීමට තවත් හේතුවක් වන්නේ ඔබ ඔබේ ප්රාථමික යතුර සඳහා UUID භාවිතා කරන්නේ නම්.
UUIDs යනු ඔවුන්ගේ අර්ථ දැක්වීම අනුව අද්විතීය වන අතර එමඟින් අද්විතීය නිඛිල භාවිතා කිරීම සිදු කරයි. පූර්ණ සංඛ්යා වලට වඩා ඔවුන්ට ඔවුන්ගේම අමතර ප්රතිලාභ (සහ අවාසි) ඇත. උදාහරණයක් ලෙස, UUID සමඟ, ඔබ සඳහන් කරන අද්විතීය නූල විශේෂිත දත්ත වාර්තාවකට යොමු කරන බව ඔබ දන්නවා; ඔබට කේන්ද්රීය දත්ත සමුදායන් 1 ක් නොමැති අවස්ථාවන්හිදී හෝ නොබැඳි ලෙස දත්ත වාර්තා නිර්මාණය කිරීමට යෙදුම් වලට හැකියාවක් ඇති අවස්ථාවලදී මෙය ප්රයෝජනවත් වේ (පසුව ඒවා පසු දිනකදී දත්ත සමුදායට උඩුගත කරන්න).
අවසානයේදී, ඔබ ප්රාථමික යතුරු ගැන යමක් නොසිතිය යුතුය. ඔවුන් ඉටු කරන කාර්යය ලෙස ඔබ සිතිය යුතුය. ඔබට ප්රාථමික යතුරු අවශ්ය වන්නේ ඇයි? අනාගතයේදී වෙනස් නොවන ක්ෂේත්රයක් භාවිතා කරමින් වගුවකින් නිශ්චිත දත්ත කට්ටල අද්විතීයව හඳුනා ගැනීමට හැකිවීම. මෙය සිදු කිරීම සඳහා ඔබට විශේෂිත තීරුවක් id
අවශ්යද, නැතිනම් වෙනත් (වෙනස් කළ නොහැකි) දත්ත වලින් මෙම අද්විතීය හඳුනාගැනීම පදනම් කර ගත හැකිද?