50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

مزایا و معایب وجود افزونگی داده در پایگاه داده

با سلام دوستان توضیحاتی در مورد افزونگی داده در پایگاه داده می خواستم و اینکه چه محاسن و معایبی داره ، اگه با ذکر مثال باشه خیلی خیلی ممنون میشم

پرسیده شده در 1394/06/30 توسط

6 پاسخ

0

خیلی ممنون از جواب دوستان مخصوصا جناب prober

به جز افزایش حجم دیتابیس و عدم یکپارچگی داده ها معایبه دیگه ای هم داره ؟

پاسخ در 1394/06/30 توسط
0

نرمالیزیشن رو میشه توضیح بدید و چطوری دیتابیس رو نرمالیزشن کنیم. آموزش معرفی کنید

پاسخ در 1398/08/14 توسط
1

سلام آقای کاروندیان

در تکمیل صحبت های دوستان ...

همیشه بحث افزونگی عیب محسوب نمی شود!

در واقع در سیستم هایی که حجم دیتاهاشون زیاده و برای افزایش سرعت واکشی اطلاعات و همینطور کاهش تعداد Join های موجود از این تکنیک استفاده می کنند.

بنده به شخصه از این تکنینک در چند سناریو نتیجه ی خوبی گرفتم!البته ناگفته نماند همانطور که دوستان به این موضوع اذعان داشتندحجم دیتا اندکی زیاد خواهد شد ولی شما براحتی می تونید سرعت بسیار خوبی رو بدست بیارید.

و نکته آخر اینکه در DW این قضیه بسیار حائز اهمیت است. و همینطور باید با دقت زیادی انجام شود.

با سپاس

پاسخ در 1394/10/04 توسط
4

درود ، افزونگی محاسنی نداره.در واقع اگه یه سری قوانینی رو رعایت نکنید افزونگی به وجود میاد و اما افزونگی یعنی چه.به معنی کلمه افزونگی توجه کنید.یعنی یه سری از اطلاعات به صورت تکراری توی بانک اطلاعاتی ذخیره میشه.در صورتی که میتونید از تکرار اونها جلوگیری کنید و اما معایب : حجم بانک اطلاعاتی افزایش بیدا میکنه و درک جداول و برنامه نویسی گاهی سخت میشه و . . .

پاسخ در 1394/06/30 توسط
4

انواع افزونگی در دیتابیس میتونه وجود داشته باشه و مثالی که من می زنم فقط یک نمونه هست:

فرض کنید شما می خواین اطلاعات شخصی و سوابق تحصیلی افراد رو در دیتابیس ذخیره کنید. و این اطلاعات شامل فیلدهای نام ، نام خانوادگی، سن ، مقطع تحصیلی و نام دانشگاه باشد. اگه شما برای این کار فقط یک جدول با فیلدهای first-name»، «last-name» ،«age» ، «edu-level» ، «university ایجاد کنید قطعا افزونگی دارید به جدول زیر که با داده های فرضی پر شدند دقت کنین:

انواع افزونگی در دیتابیس میتونه وجود داشته باشه و مثالی که من می زنم فقط یک نمونه هست:
فرض کنید شما می خواین اطلاعات شخصی و سوابق تحصیلی افراد رو در دیتابیس ذخیره کنید. و این اطلاعات شامل فیلدهای نام ، نام خانوادگی، سن ، مقطع تحصیلی و نام دانشگاه  باشد. اگه شما برای این کار فقط یک جدول با فیلدهای first-name»، «last-name» ،«age» ، «edu-level» ، «university ایجاد کنید قطعا افزونگی دارید به جدول زیر که با داده های فرضی پر شدند دقت کنین:
||http://dba.tosinso.com/files/get/12b93728-bce7-4941-b73a-f682b5ed3332||

شما برای اینکه مقاطع تحصیلی مختلفی رو که یک فرد گذرونده رکوردهاش رو مجزا در جدول درج کنین باید به ازای هر مقطع تحصیلی یک بار مشخصات فرد رو کامل درج کنین و این یعنی افزونگی ، یعنی درج کردن اضافی و تکراری داده در جدول. 
شما برای رفع این افزونگی باید این جدول رو به دو جدول تبدیل کنید. که جدول 1 با نام personal_info دربرگیرنده اطلاعات شخصی افراد باشه و جدول 2 با نام educations شامل سوابق تحصیلی افراد و برای اینکه دو جدول به هم مرتبط بشن باید فیلد ID جدول 1 رو به عنوان کلید خارجی در جدول 2 تعریف کنید.
جدول personal_info
||http://dba.tosinso.com/files/get/6a4c1048-8551-4564-881a-42abac9a53fe||
جدول educations
||http://dba.tosinso.com/files/get/1acfaf03-eeaa-4d58-b4b8-28729f58c24e||

شما برای اینکه مقاطع تحصیلی مختلفی رو که یک فرد گذرونده رکوردهاش رو مجزا در جدول درج کنین باید به ازای هر مقطع تحصیلی یک بار مشخصات فرد رو کامل درج کنین و این یعنی افزونگی ، یعنی درج کردن اضافی و تکراری داده در جدول.

شما برای رفع این افزونگی باید این جدول رو به دو جدول تبدیل کنید. که جدول 1 با نام personal_info دربرگیرنده اطلاعات شخصی افراد باشه و جدول 2 با نام educations شامل سوابق تحصیلی افراد و برای اینکه دو جدول به هم مرتبط بشن باید فیلد ID جدول 1 رو به عنوان کلید خارجی در جدول 2 تعریف کنید.

جدول personal_info

انواع افزونگی در دیتابیس میتونه وجود داشته باشه و مثالی که من می زنم فقط یک نمونه هست:
فرض کنید شما می خواین اطلاعات شخصی و سوابق تحصیلی افراد رو در دیتابیس ذخیره کنید. و این اطلاعات شامل فیلدهای نام ، نام خانوادگی، سن ، مقطع تحصیلی و نام دانشگاه  باشد. اگه شما برای این کار فقط یک جدول با فیلدهای first-name»، «last-name» ،«age» ، «edu-level» ، «university ایجاد کنید قطعا افزونگی دارید به جدول زیر که با داده های فرضی پر شدند دقت کنین:
||http://dba.tosinso.com/files/get/12b93728-bce7-4941-b73a-f682b5ed3332||

شما برای اینکه مقاطع تحصیلی مختلفی رو که یک فرد گذرونده رکوردهاش رو مجزا در جدول درج کنین باید به ازای هر مقطع تحصیلی یک بار مشخصات فرد رو کامل درج کنین و این یعنی افزونگی ، یعنی درج کردن اضافی و تکراری داده در جدول. 
شما برای رفع این افزونگی باید این جدول رو به دو جدول تبدیل کنید. که جدول 1 با نام personal_info دربرگیرنده اطلاعات شخصی افراد باشه و جدول 2 با نام educations شامل سوابق تحصیلی افراد و برای اینکه دو جدول به هم مرتبط بشن باید فیلد ID جدول 1 رو به عنوان کلید خارجی در جدول 2 تعریف کنید.
جدول personal_info
||http://dba.tosinso.com/files/get/6a4c1048-8551-4564-881a-42abac9a53fe||
جدول educations
||http://dba.tosinso.com/files/get/1acfaf03-eeaa-4d58-b4b8-28729f58c24e||

جدول educations

انواع افزونگی در دیتابیس میتونه وجود داشته باشه و مثالی که من می زنم فقط یک نمونه هست:
فرض کنید شما می خواین اطلاعات شخصی و سوابق تحصیلی افراد رو در دیتابیس ذخیره کنید. و این اطلاعات شامل فیلدهای نام ، نام خانوادگی، سن ، مقطع تحصیلی و نام دانشگاه  باشد. اگه شما برای این کار فقط یک جدول با فیلدهای first-name»، «last-name» ،«age» ، «edu-level» ، «university ایجاد کنید قطعا افزونگی دارید به جدول زیر که با داده های فرضی پر شدند دقت کنین:
||http://dba.tosinso.com/files/get/12b93728-bce7-4941-b73a-f682b5ed3332||

شما برای اینکه مقاطع تحصیلی مختلفی رو که یک فرد گذرونده رکوردهاش رو مجزا در جدول درج کنین باید به ازای هر مقطع تحصیلی یک بار مشخصات فرد رو کامل درج کنین و این یعنی افزونگی ، یعنی درج کردن اضافی و تکراری داده در جدول. 
شما برای رفع این افزونگی باید این جدول رو به دو جدول تبدیل کنید. که جدول 1 با نام personal_info دربرگیرنده اطلاعات شخصی افراد باشه و جدول 2 با نام educations شامل سوابق تحصیلی افراد و برای اینکه دو جدول به هم مرتبط بشن باید فیلد ID جدول 1 رو به عنوان کلید خارجی در جدول 2 تعریف کنید.
جدول personal_info
||http://dba.tosinso.com/files/get/6a4c1048-8551-4564-881a-42abac9a53fe||
جدول educations
||http://dba.tosinso.com/files/get/1acfaf03-eeaa-4d58-b4b8-28729f58c24e||
پاسخ در 1394/06/30 توسط
3

پیچیدگی کوئری ها و یا افزایش حجم داده واکشی شده توسط کوئری ها و در نتیجه افزایش زمان پاسخ هم به نظرم می تونه از معایبش باشه.

یعنی یا شما برای اینکه داده اضافی رو واکشی نکنین مجبور میشین شرط های داخل query رو زیاد کنید که باعث پیچیدگی کوئری میشه و یا اگه این کار رو نکنید داده هایی رو که نیازی به واکشی اون ها نداشتید در کوئری واکشی می کنید و در نتیجه پایگاه داده حجم داده بالاتری رو برای درخواست شما ارسال می کنه و زمان پاسخ بالا می ره و یا به عبارتی سرعت پاسخ کاهش پیدا می کنه . البته این حالت شاید در پایگاه داده های کوچک و با حجم رکورد کم اصلا حس نمیشه اما در بانک های اطلاعاتی عظیم واقعا محسوس هست.

علاوه بر این ها چنانچه کلاینت هایی که کوئری دارای افزونگی به بانک می فرستن روی خود سرور بانک اطلاعاتی نباشن که ایندر سیستم های واقعی و عملیاتی همیشه وجود داره ، اون وقت داده واکشی شده اضافی پهنای باند رو هم بیش از حد میگیره و ترافیک رو بالا می بره.

پاسخ در 1394/06/30 توسط

پاسخ شما