طراحی پایگاه داده رابطه ای: DBMS – DEV Community

طراحی پایگاه داده رابطه ای: راهنمای جامع
طراحی پایگاه داده رابطه ای سنگ بنای سیستم های پایگاه داده موثر است که بر سازماندهی کارآمد داده ها و در عین حال کاهش افزونگی و حفظ یکپارچگی داده ها تمرکز دارد. این مقاله کاوش کاملی در مورد تجزیه، نرمال سازی، وابستگی های عملکردی و کلیدها ارائه می دهد و اطمینان می دهد که شما درک کاملی از اصول طراحی پایگاه داده رابطه ای دارید.
تجزیه در طراحی پایگاه داده رابطه ای
تجزیه فرآیند شکستن یک رابطه بزرگ (جدول) به روابط کوچکتر و معنی دار برای حذف افزونگی، بهبود ثبات و بهینه سازی عملکرد است. این یک جنبه حیاتی از عادی سازی است.
انواع تجزیه
-
تجزیه تلفاتی:
- یک تجزیه است زیان ده اگر جدول اصلی را نتوان با پیوستن به روابط تجزیه شده به طور کامل بازسازی کرد.
- این زمانی اتفاق می افتد که برخی از داده ها یا روابط در طی تجزیه از بین می روند.
- مثال: جدول را در نظر بگیرید:
EmployeeID | ProjectID | ProjectManager --------------------------------------- E1 | P1 | M1 E2 | P1 | M1
اگر این به زیر تجزیه شود:
- جدول 1: EmployeeID | شناسه پروژه
- جدول 2: شناسه پروژه | ProjectManager پیوستن مجدد به این جداول میتواند منجر به دادههای تکراری یا متناقض شود که منجر به تجزیه با اتلاف میشود.
-
تجزیه بدون تلفات:
- یک تجزیه است بدون ضرر اگر جدول اصلی را بتوان با پیوستن به روابط تجزیه شده بدون از دست دادن داده یا ایجاد ناسازگاری، کاملاً بازسازی کرد.
- این زمانی به دست می آید که تجزیه تمام وابستگی های عملکردی را حفظ کند یا زمانی که ویژگی های کلیدی در هر رابطه تجزیه شده گنجانده شود.
وابستگی عملکردی
الف وابستگی عملکردی (FD) یک رابطه بین دو ویژگی را در رابطه ای توصیف می کند که در آن مقدار یک ویژگی (یا مجموعه ای از ویژگی ها) مقدار ویژگی دیگر (یا مجموعه ای از ویژگی ها) را تعیین می کند. این یک مفهوم اساسی در طراحی و عادی سازی پایگاه داده رابطه ای است.
تعریف:
اجازه دهید X و Y مجموعهای از ویژگیها در یک رابطه R باشند. یک وابستگی تابعی X → Y به این معنی که برای هر دو تاپل (ردیف) در R، اگر تاپل ها روی مقادیر X توافق داشته باشند، باید روی مقادیر Y نیز توافق کنند.
- X: تعیین کننده (ویژگی(های) سمت چپ).
- Y: وابسته (ویژگی(های) سمت راست).
مثال:
جدولی را در نظر بگیرید که اطلاعات دانش آموز را ذخیره می کند:
StudentID | Name | Major
----------------------------
S1 | Alice | CS
S2 | Bob | EE
S3 | Alice | CS
اینجا، StudentID → Name, Major
زیرا StudentID
به طور منحصر به فرد هر دو را تعیین می کند Name
و Major
.
ویژگی های وابستگی های تابعی:
- انعکاس پذیری: اگر Y زیر مجموعه ای از X باشد، X → Y است.
- افزایش: اگر X → Y، سپس XZ → YZ (افزودن ویژگی ها به هر دو طرف وابستگی را حفظ می کند).
- گذرا: اگر X → Y و Y → Z، سپس X → Z.
کلیدها در پایگاه های داده رابطه ای
کلیدها برای شناسایی سوابق منحصر به فرد در جدول و اعمال یکپارچگی داده ها ضروری هستند.
انواع کلیدها:
-
سوپرکلید:
- مجموعه ای از یک یا چند ویژگی که می تواند به طور منحصر به فرد یک تاپل را در یک رابطه شناسایی کند.
- مثال: در یک جدول با ویژگی ها
EmployeeID
وName
،{EmployeeID}
،{EmployeeID, Name}
سوپرکلیدها هستند
-
کلید نامزد:
- یک سوپرکلید حداقل، به این معنی که هیچ زیرمجموعه مناسبی از آن نیز یک سوپرکلید است.
- مثال: اگر
{EmployeeID}
می تواند به طور منحصر به فرد یک تاپل را شناسایی کند، این یک کلید نامزد است.
-
کلید اصلی:
- یک کلید نامزد انتخاب شده توسط طراح پایگاه داده برای شناسایی منحصر به فرد تاپل ها.
- مثال:
EmployeeID
در یکEmployee
جدول
-
کلید خارجی:
- یک ویژگی (یا مجموعه ای از ویژگی ها) در یک جدول که به کلید اصلی در جدول دیگر ارجاع می دهد و رابطه ای بین جداول برقرار می کند.
- مثال:
DepartmentID
در یکEmployee
ارجاع به جدولDepartmentID
در یکDepartment
جدول
-
کلید ترکیبی:
- یک کلید اولیه متشکل از دو یا چند ویژگی.
- مثال:
(StudentID, CourseID)
در جدول ثبت نام دانش آموزان
-
کلید منحصر به فرد:
- یک محدودیت کلیدی که تضمین می کند همه مقادیر در یک ستون (یا ترکیبی از ستون ها) منحصر به فرد هستند.
عادی سازی و اشکال عادی
عادی سازی فرآیند سازماندهی ویژگی ها و روابط برای کاهش افزونگی و وابستگی، تضمین یکپارچگی داده ها است. این با رعایت تدریجی معیارهای متوالی به دست می آید فرم های معمولی.
فرم های عادی (نمای کلی جامع)
اولین فرم عادی (1NF)
تعریف:
گفته می شود که یک رابطه وجود دارد اولین فرم عادی (1NF) اگر معیارهای زیر را برآورده کند:
- اتمی بودن: همه صفات (ستون ها) باید دارای مقادیر اتمی باشند. این بدان معنی است که مقادیر در هر ستون غیرقابل تقسیم هستند و نمی توان آنها را بیشتر تجزیه کرد.
- ورودی های تک ارزشی: هر ستون در جدول باید حاوی مقادیری از یک نوع داده باشد و هیچ ستونی نباید مجموعه، لیست یا آرایه داشته باشد.
- منحصر به فرد بودن ردیف ها: هر ردیف باید منحصر به فرد باشد، به این معنی که جدول باید دارای یک کلید اصلی برای تمایز بین ردیف ها باشد.
- بدون گروه های تکراری: جدول نباید چندین ستون برای یک ویژگی داشته باشد (مانند Item1، Item2، و غیره)، همچنین نباید چندین مقدار ذخیره شده در یک سلول واحد داشته باشد.
توضیح:
- ارزش های اتمی: داده های هر سلول باید به ساده ترین شکل خود باشند. به عنوان مثال، به جای ذخیره چندین آیتم در یک سلول، هر آیتم باید ردیف خودش را اشغال کند.
- گروه های تکراری: اینجا جایی است که چندین ستون یا ردیف نشان دهنده یک نوع داده است که باعث می شود جدول با 1NF سازگار نباشد.
- کلید اصلی: یک کلید اولیه تضمین می کند که هر ردیف به طور منحصر به فرد قابل شناسایی است، که یک نیاز اساسی برای پایگاه های داده رابطه ای است.
مثال:
جدول ناسازگار (در 1NF نیست):
OrderID | Items
-------------------
1 | Pen, Notebook
2 | Pencil
- این
Items
ستون اتمی را نقض می کند زیرا حاوی مقادیر متعددی است (به عنوان مثال، “Pen, Notebook”). - گروه های تکراری وجود دارد زیرا موارد در یک سلول به جای ردیف های جداگانه ذخیره می شوند.
جدول سازگار (در 1NF):
OrderID | Item
---------------
1 | Pen
1 | Notebook
2 | Pencil
- اینجا،
Items
ستون به مقادیر اتمی تقسیم می شود و هر مورد در یک ردیف جداگانه قرار می گیرد. - هیچ سلولی حاوی مقادیر متعددی نیست که اتمی بودن را تضمین می کند.
- جدول هیچ گروه یا آرایه تکراری ندارد، که آن را با 1NF سازگار می کند.
فرم دوم عادی (2NF)
تعریف:
یک رابطه وجود دارد فرم دوم عادی (2NF) اگر:
- در حال حاضر وارد شده است اولین فرم عادی (1NF) (یعنی بدون گروه چند ارزشی یا تکراری).
- هر ویژگی غیر اصلی کاملاً به کل کلید اصلی وابسته است.
- ویژگی غیر اصلی: یک ویژگی که بخشی از هیچ کلید کاندید نیست.
- کاملاً از نظر عملکردی وابسته است: یک ویژگی غیر اصلی باید به کل کلید اولیه مرکب و نه فقط به بخشی از آن بستگی داشته باشد.
توضیح:
- الف وابستگی جزئی زمانی اتفاق میافتد که یک ویژگی غیر اصلی به جای کل کلید، تنها به بخشی از کلید اولیه ترکیبی وابسته باشد.
- 2NF وابستگی های جزئی را حذف می کند با تجزیه رابطه به روابط کوچکتر، اطمینان از اینکه ویژگی های غیر اصلی فقط به کل کلید اصلی یا کلید کاندید دیگری وابسته هستند.
این مرحله افزونگی ناشی از وابستگی های جزئی را کاهش می دهد و داده ها را بهتر سازماندهی می کند.
مثال:
جدول ناسازگار (در 2NF نیست):
جدولی را در نظر بگیرید که اطلاعات دوره دانشجویی را ذخیره می کند:
StudentID | CourseID | Instructor | Department
----------------------------------------------
S1 | C1 | Dr. Smith | CS
S2 | C2 | Dr. Jones | EE
S1 | C2 | Dr. Jones | EE
-
کلید اولیه مرکب:
(StudentID, CourseID)
. -
وابستگی جزئی:
-
Instructor
وDepartment
فقط بهCourseID
و نه در کل کلید اصلی(StudentID, CourseID)
.
-
این 2NF را نقض می کند زیرا ویژگی های غیر اصلی (Instructor
و Department
) تا حدی به کلید ترکیبی وابسته هستند.
جداول سازگار (در 2NF):
برای حذف وابستگی جزئی، جدول را به دو رابطه تجزیه کنید:
- جدول دانشجویی دوره:
StudentID | CourseID
--------------------
S1 | C1
S2 | C2
S1 | C2
- جدول جزئیات دوره:
CourseID | Instructor | Department
-----------------------------------
C1 | Dr. Smith | CS
C2 | Dr. Jones | EE
فرم سوم عادی (3NF)
تعریف:
یک رابطه وجود دارد فرم سوم عادی (3NF) اگر:
- در آن است فرم دوم عادی (2NF) (یعنی بدون وابستگی جزئی).
-
هیچ وابستگی گذرا وجود ندارد، که به این معنی است:
- هیچ ویژگی غیر اولی به ویژگی غیر اصلی دیگری وابسته نیست.
- یک ویژگی غیر اصلی باید فقط به یک کلید کاندید بستگی داشته باشد، نه از طریق یک ویژگی غیر اصلی دیگر.
- ویژگی غیر اصلی: یک ویژگی که بخشی از هیچ کلید کاندید نیست.
- وابستگی گذرا: وابستگی که در آن یک ویژگی غیر اصلی به طور غیرمستقیم به یک کلید کاندید از طریق یک ویژگی غیر اصلی دیگر بستگی دارد.
توضیح:
در 3NF، ما وابستگی های گذرا را حذف می کنیم تا افزونگی را کاهش دهیم و سازگاری داده ها را بهبود دهیم.
-
مثال وابستگی گذرا: اگر
A → B
وB → C
، سپسA → C
یک وابستگی گذرا است. این یعنیC
غیر مستقیم بستگی داردA
از طریقB
. - این گونه وابستگی ها افزونگی را به عنوان تغییراتی معرفی می کنند
B
می تواند منجر به ناهنجاری در هنگام به روز رسانی شودC
.
مثال:
جدول ناسازگار (در 3NF نیست):
StudentID | Department | HOD
--------------------------------
S1 | CS | Dr. Lee
S2 | EE | Dr. Brown
S3 | CS | Dr. Lee
کلید نامزد: StudentID
هر ردیف را به طور منحصر به فرد شناسایی می کند.
-
موضوع:
HOD
ویژگی بستگی داردDepartment
، مستقیماً روشن نیستStudentID
.-
StudentID → Department
(وابستگی مستقیم). -
Department → HOD
(وابستگی گذرا). - بنابراین،
StudentID → HOD
یک وابستگی گذرا است.
-
این ساختار منجر به افزونگی می شود: اگر HOD
برای CS
تغییرات بخش، چندین ردیف نیاز به به روز رسانی دارند.
جداول سازگار (در 3NF):
برای حل وابستگی گذرا، جدول را به دو رابطه تجزیه کنید:
- میز دانش آموزی-گروه:
StudentID | Department
-----------------------
S1 | CS
S2 | EE
S3 | CS
- میز بخش-HOD:
Department | HOD
-----------------
CS | Dr. Lee
EE | Dr. Brown
فرم معمولی بویس-کاد (BCNF)
تعریف:
یک رابطه وجود دارد فرم معمولی بویس-کاد (BCNF) اگر:
- در آن است فرم سوم عادی (3NF) (یعنی هیچ وابستگی جزئی یا گذرا وجود ندارد).
- هر تعیین کننده یک کلید کاندید است.
- تعیین کننده: یک صفت (یا مجموعه ای از ویژگی ها) که ویژگی دیگری از نظر عملکردی به آن وابسته است.
- کلید نامزد: حداقل مجموعه ای از ویژگی ها که می تواند به طور منحصر به فرد هر تاپل را در یک رابطه شناسایی کند.
تفاوت کلیدی بین 3NF و BCNF:
- در حالی که 3NF برخی وابستگیها را مجاز میکند که در آن یک ویژگی غیر اصلی از نظر عملکردی به یک کلید کاندید وابسته است، BCNF هر گونه ناهنجاریهایی را با اطمینان از اینکه هر تعیینکننده یک کلید کاندید است حذف میکند.
توضیح:
BCNF سختتر از 3NF است و به موقعیتهایی میپردازد که یک رابطه ممکن است 3NF را برآورده کند اما همچنان افزونگی ناشی از وابستگیهایی است که BCNF را نقض میکنند.
هنگامی که BCNF مورد نیاز است:
- BCNF زمانی ضروری است که یک ویژگی کلید غیر کاندید، بخشی از یک کلید کاندید را تعیین می کند، که منجر به افزونگی و ناهنجاری می شود.
مثال:
جدول ناسازگار (در BCNF نیست):
CourseID | Instructor | Room
----------------------------
C1 | Dr. Smith | R101
C1 | Dr. Smith | R102
C2 | Dr. Jones | R101
وابستگی های عملکردی:
-
CourseID → Instructor
-
Instructor → Room
کلید نامزد: CourseID
موضوع:
- تعیین کننده
Instructor
یک کلید کاندید نیست بلکه تعیین کننده استRoom
. - این BCNF را نقض می کند، زیرا همه عوامل تعیین کننده کلیدهای کاندید نیستند.
جداول سازگار (در BCNF):
برای دستیابی به BCNF، جدول را به دو رابطه تجزیه کنید:
- میز دوره آموزشی:
CourseID | Instructor
----------------------
C1 | Dr. Smith
C2 | Dr. Jones
- مربی-میز اتاق:
Instructor | Room
------------------
Dr. Smith | R101
Dr. Smith | R102
Dr. Jones | R101
فرم چهارم عادی (4NF)
تعریف:
یک رابطه وجود دارد فرم چهارم عادی (4NF) اگر:
- در آن است فرم معمولی بویس-کاد (BCNF) (یعنی بدون ناهنجاری جزئی، گذرا یا دیگر).
- هیچکدام را ندارد وابستگی های چند ارزشی.
- وابستگی چند ارزشی (MVD): یک وابستگی چند ارزشی زمانی وجود دارد که یک ویژگی در جدول چندین مجموعه مستقل از ویژگی ها را تعیین کند. به عبارت دیگر، اگر یک رابطه حاوی دو یا چند ویژگی چند ارزشی مستقل باشد که به یکدیگر مرتبط نیستند، 4NF را نقض می کند.
توضیح:
در 4NF، هدف اولیه حذف است وابستگی های چند ارزشی، که زمانی رخ می دهد که یک رکورد حاوی دو یا چند ویژگی مستقل باشد که مستقیماً به هم مرتبط نیستند اما به دلیل وابستگی به یک کلید با هم ظاهر می شوند.
- این نوع وابستگی ها منجر به افزونگی می شوند زیرا چندین نسخه از اطلاعات یکسان در ردیف ها تکرار می شوند.
- با تجزیه رابطه حذف MVD ها، افزونگی را حذف کرده و ثبات را در پایگاه داده بهبود می بخشیم.
مفهوم کلیدی:
- در 4NF، یک رابطه نباید دارای دو یا چند ویژگی چند ارزشی باشد که به یک کلید کاندید بستگی دارد. هر وابستگی چند ارزشی باید با تجزیه جدول به طور مناسب حذف شود.
مثال:
جدول ناسازگار (در 4NF نیست):
جدولی را در نظر بگیرید که اطلاعاتی درباره دانش آموزان، دوره هایی که می گذرانند و باشگاه هایی که در آن شرکت دارند را ذخیره می کند:
StudentID | Course | Club
-------------------------------
S1 | Math | Chess
S1 | History | Drama
S2 | Math | Chess
S2 | Biology | Music
کلید نامزد: StudentID
وابستگی های چند ارزشی:
- الف
StudentID
می تواند هر دو مجموعه ای ازCourses
و مجموعه ای ازClubs
، اما این مجموعه ها مستقل از یکدیگر هستند.-
StudentID → {Courses}
(وابستگی چند ارزشی بینStudentID
وCourses
) -
StudentID → {Clubs}
(وابستگی چند ارزشی بینStudentID
وClubs
)
-
جدول 4NF را نقض می کند زیرا StudentID
هم دوره ها و هم باشگاه ها را به طور مستقل تعیین می کند. همین امر باعث افزونگی می شود StudentID
چندین بار با ترکیب های مختلف دوره ها و باشگاه ها تکرار می شود.
جداول سازگار (در 4NF):
برای اینکه جدول با 4NF مطابقت داشته باشد، باید وابستگی های چند ارزشی را با تجزیه آن به دو جدول حذف کنیم:
- جدول دانشجویی دوره:
StudentID | Course
--------------------
S1 | Math
S1 | History
S2 | Math
S2 | Biology
- میز دانش آموزی – باشگاه:
StudentID | Club
-------------------
S1 | Chess
S1 | Drama
S2 | Chess
S2 | Music
اکنون، دو وابستگی چند ارزشی به طور جداگانه مدیریت می شوند:
- این
Student-Course Table
ارتباط بین دانشآموزان و دورههایی که میگذرانند را ذخیره میکند. - این
Student-Club Table
رابطه بین دانشآموزان و باشگاههایی که در آن مشارکت دارند را ذخیره میکند.
فرم نرمال پنجم (5NF)
تعریف:
یک رابطه وجود دارد فرم نرمال پنجم (5NF)، همچنین به عنوان شناخته شده است فرافکنی-پیوستن به فرم عادی (PJNF)، اگر:
- در آن است فرم چهارم عادی (4NF) (یعنی هیچ وابستگی چند ارزشی وجود ندارد).
- بدون از دست دادن اطلاعات نمی توان آن را بیشتر تجزیه کرد، به این معنی که این رابطه حاوی هیچ اطلاعاتی نیست به وابستگی بپیوندید یا تجزیه اتصال بدون تلفات.
- پیوستن به وابستگی (JD): وابستگی اتصال زمانی اتفاق می افتد که یک رابطه را می توان به دو یا چند رابطه تجزیه کرد، اما وقتی دوباره به هم متصل شوند، هیچ اطلاعاتی از بین نمی رود. به عبارت دیگر، وابستگی پیوستن زمانی وجود دارد که یک رابطه را بتوان به روابط فرعی تقسیم کرد، اما رابطه اصلی را می توان بدون از دست دادن هیچ داده ای بازسازی کرد.
توضیح:
5NF با به وابستگی ها بپیوندید، و تضمین می کند که داده ها به گونه ای تجزیه می شوند که می توان تمام اطلاعات را از قسمت های تجزیه شده آن بدون از دست دادن داده بازسازی کرد. یک رابطه در 5NF به گونهای طراحی شده است که تمام وابستگیهای پیوستن غیرمشخص آن توسط کلیدهای کاندید آن مشخص شود.
- Lossless Join Decomposition: هنگامی که یک رابطه به روابط کوچکتر تجزیه می شود و سپس دوباره به هم متصل می شود، رابطه اصلی را می توان به طور کامل بدون از دست دادن داده بازسازی کرد. یک رابطه در 5NF است اگر نتوان آن را بدون از دست دادن اطلاعات بیشتر تجزیه کرد.
- وابستگی غیر پیش پا افتاده Join Dependency: اگر وابستگی پیوستن به طور پیش پاافتاده ارضا نشود (یعنی همه صفات رابطه در وابستگی پیوستن وجود نداشته باشند) بی اهمیت است.
به عبارت ساده تر، 5NF با اطمینان از عدم وجود افزونگی ناشی از تجزیه نامناسب مرتبط است. این تضمین میکند که وقتی یک رابطه تجزیه میشود و بعداً به آن متصل میشود، همه دادههای اصلی هنوز بدون از دست دادن یا ابهام در دسترس هستند.
مثال:
جدول ناسازگار (در 5NF نیست):
جدولی را در نظر بگیرید که اطلاعاتی را در مورد تامین کنندگان تامین کننده قطعات برای پروژه های مختلف ذخیره می کند:
Supplier | Part | Project
------------------------------
S1 | P1 | ProjA
S1 | P2 | ProjB
S2 | P1 | ProjA
S2 | P2 | ProjC
کلید نامزد: (Supplier, Part, Project)
به Dependency بپیوندید:
رابطه بالا وابستگی جوین دارد زیرا می تواند بدون از دست دادن اطلاعات به روابط کوچکتر تجزیه شود. به عنوان مثال، جدول را می توان به سه رابطه فرعی تجزیه کرد:
- میز تامین کننده-بخش:
Supplier | Part
----------------
S1 | P1
S1 | P2
S2 | P1
S2 | P2
- جدول پروژه تامین کننده:
Supplier | Project
-------------------
S1 | ProjA
S1 | ProjB
S2 | ProjA
S2 | ProjC
- جدول قسمت پروژه:
Part | Project
-----------------
P1 | ProjA
P2 | ProjB
P1 | ProjA
P2 | ProjC
با تجزیه جدول به این روابط کوچکتر، ما همچنان می توانیم جدول اصلی را با انجام یک اتصال طبیعی روی این سه رابطه کوچکتر دوباره ایجاد کنیم.
با این حال، چون این تجزیه امکان پذیر است، 5NF را نقض می کند. دلیل نقض 5NF به این دلیل است که اطلاعات مربوط به تامین کننده کدام بخش برای یک پروژه معین به طور اضافی در چندین ردیف ذخیره می شود. ما حقایق یکسانی را چندین بار ذخیره میکنیم، که غیرضروری است و میتواند منجر به ناسازگاری شود.
جدول سازگار (در 5NF):
برای دستیابی به 5NF، جدول را تجزیه می کنیم تا این رابطه بدون از دست دادن اطلاعات بیشتر تجزیه نشود:
- جدول تامین کننده-بخش-پروژه:
Supplier | Part | Project
------------------------------
S1 | P1 | ProjA
S1 | P2 | ProjB
S2 | P1 | ProjA
S2 | P2 | ProjC
در این شکل، این رابطه اکنون در 5NF است، زیرا نمیتوان آن را بدون از دست دادن داده تجزیه کرد. این جدول همان اطلاعات اصلی را نشان میدهد، اما به شکل نرمالشدهتر که در آن هر ویژگی کاملاً به کلید کاندید وابسته است و به دلیل تجزیه نادرست هیچ افزونگی وجود ندارد.
مفاهیم کلیدی در طراحی رابطه ای
- وابستگی چند ارزشی: زمانی که یک ویژگی چندین مقدار مستقل را تعیین می کند.
- به Dependency بپیوندید: اطمینان حاصل می کند که در طول اتصالات، تاپل های جعلی ایجاد نمی شوند.
- حفظ وابستگی: اطمینان حاصل می کند که تمام وابستگی های عملکردی پس از تجزیه حفظ می شوند.
این راهنمای جامع شما را به تسلط بر طراحی پایگاه داده رابطه ای مجهز می کند و از سیستم های پایگاه داده کارآمد، سازگار و بدون ناهنجاری اطمینان می دهد.