PDA

View Full Version : سوال: آپدیت اطلاعات در دیتا بیس...لطفا راهنماییم کنید



Behnam6670
پنج شنبه 27 تیر 1392, 07:18 صبح
سلام
یه نرم افزار برا یه شرکت نوشتم یه قسمت تونرم افزار دارم که قسمت اطلاعات پایه هستش که میایم اطلاعات مشتریان و قطعات و محصولات رو وارد میکنیم که از این اطلاعات بعدا توی سند هایی که زده میشه استفاده میشه
.سوال اینجاست که من وقتی بفرض مثال یه یک سری اطلاعات رو توی اطلاعات پایه وارد میکنم مثلا نام مشتری
و بعدا برای این مشتری 10 تا یا بیشتر سند خورده میشه بنامش بعد از مدتی ما متوجه میشیم که نام مشتری اشتباه وارد شده و برمیگردیم تو اطلاعات پایه نام مشتری رو اصلاح میکنیم بهترین راه برای اینکه این اصلاح تو کل سندهایی بنام این مشتری خورده شده قبلا هم اصلاح بشه چیه هستش؟؟؟؟؟؟؟؟
البته تنها نام مشتری نیستش مثلا نام محصول نام قطعه یه n تا فیلد دیگه میخوام تغییرات تو اطلاعات پایه تو سند هایی هم که زده شده اعمال بشه
لطفا راهنماییم کنید

eshaghrahimy
پنج شنبه 27 تیر 1392, 07:41 صبح
دوست عزیز بهترین راه برای این کار اینه که برای جدولها فیلد کلید در نظر بگیرید و توی بانکهای دیگه به جای نام محصول یا نام قطعه از کد اونها استفاده کنید و با زدن یک join همیشه نام اونها را بخونید تا مشکلتون حل بشه

danialafshari
پنج شنبه 27 تیر 1392, 08:53 صبح
سلام
بله حرف eshaghrahimy کاملا درسته
این اشتباهه که بیای نام مشتری رو هم در table بعدی بزاری و فقط باید توسط کلید اصلی و خارجی join بشه
طراحی بانک شما مشکل داره بخاطره همینه که توصیه میکنن برای بانکتون وقت بزارید و کم از برنامه نویسی نیست
موفق باشید

Behnam6670
شنبه 29 تیر 1392, 09:33 صبح
ممنون از دوستانی که جواب دادن
ولی مگه میشه اصلا بدون کلید کار کرد؟؟؟!!!!
من برا همه جدولام و همه مشخصاتشون کلید دارم و از کلیدشون استفاده میکنم ولی منظور من یه جیز دیگه بود

sahra76
شنبه 29 تیر 1392, 10:04 صبح
میشه بیشتر توضیح بدین؟ انجور که من متوجه شدم اگه با کلید جدولاتون ازتباط دارن، اگه رکوردی تو جدول پایه تغییر کرد دیگه نیازی نیست تو بقیه جدولها اعمال بشه. چون فقط کلیدخارجی تو جدولها دیگه مثل سند، میاد نه تمام اطلاعات!!! و از جدول پایه خونده میشه.

kazem235
شنبه 29 تیر 1392, 10:11 صبح
به نظر من اگه از Query update استفاده کنی اطلاعاتت تو بانک تغیر میکنه.و اگه جایی تیبل مورد نظر رو فراخوانی بکنی اطلاعات تغیر میکنه.

veniz2008
شنبه 29 تیر 1392, 10:43 صبح
من برا همه جدولام و همه مشخصاتشون کلید دارم و از کلیدشون استفاده میکنم ولی منظور من یه جیز دیگه بود
سلام.
منظورتون که نامفهومه ولی شاید این کار رو کردید :
در جداول دیگه علاوه بر ثبت کلید، فیلد نام رو هم ذخیره کردید. مثلا هم KalaID رو ذخیره کردید و هم KalaName رو.
همونطور که دوستان هم اشاره کردن این کار اشتباه هست. ما در یک جدول فقط کلید رو ذخیره میکنیم و بعدا" اگر به خصوصیات اون کلید نیاز داشتیم به جدول مربوطه Join میزنیم و اطلاعاتش مثل KalaName و ... رو بیرون میکشیم. به آوردن KalaName در جداول مقصد، اصطلاحا "افزونگی" میگن. افزونگی یعنی تکرار بیهوده داده. چراکه فقط حجم اضافی رو اشغال میکنه و جداول رو سنگین میکنه و اگر در جدول پایه نام کالا رو تغییر بدیم، باید در تمام جداول وابسته هم این کار رو انجام بدیم که کار طاقت فرسایی هست و احتمال اشتباه هم بسیار زیاد هست.(نرمال سازی رو رعایت نکردید در این حالت).
اگر منظورتون چیز دیگه ای هست، کامل توضیح بدید.
موفق باشید.