PDA

View Full Version : راهنمایی برای ارتباط بین جداول



*unos*
پنج شنبه 12 آذر 1388, 22:43 عصر
با سلام

ساختار زیر رو برای نگهداری یک سری برنامه(فعالیت) طراحی کردم . به این صورت هست که جدول plans لیست برنامه ها رو نگه می داره . هر برنامه یک سری ضمیمه داره که که بهش لینک می شن. حالا می خوام یه ارتباطی بین plans و attach ایجاد کنم (خوب راه حلی که به ذهن می رسه اینه که داخل جدول attach یه فیلد(کلید خارجی) با همون نام در نظر بگیرم و از plans به اون لینک بدم )
http://barnamenevis.org/forum/attachment.php?attachmentid=40653&stc=1&d=1259869036


حالا مشکل اینجاست که این برنامه ها در جاهای مختلفی پر میشن و آخر هر ماه داده ها باید داخل یه دیتابیس که رو سروره import بشن (یعنی اگه یه برنامه ای در جایی چند تا ضمیمه داره وقتی می یاد به دفتر که import بشه دیگه اون planid ی که رو کلاینت بوده اینجا به کار نمی یاد چون planid ی که رو سرور هست معلوم نیست چند تا برنامه داخلش ثبت شده (یعنی لینکی که بین برنامه و ضمیمه ، روی کلاینت بوده روی سرور دیگه به درد ما نمی خوره ))

ناچارا ومدم دو تا فیلد clubid و planno(شماره برنامه) از جدول plans رو در جدول attach هم ایجاد کردم تا کار راه بیافته اما می دونم اشتباهه .

چه راه حلی پیش نهاد می دید . با تشکر

بهنام بهمنی
پنج شنبه 12 آذر 1388, 23:59 عصر
چرا فکر ميکنيد راه حل خودتان استباه است؟

محمد سلیم آبادی
جمعه 13 آذر 1388, 00:04 صبح
سلام دوست عزیز،
اگر درست منظورتون را متوجه شده باشم، می تونین ستون PlanID رو از نوع UniqueIdentifier انتخاب کنین و با کمک تابع Newid کد 36 رقمی ایجاد کنید که احتمال تکراری بودنش تا اونجایی که می دونم صفر است( تو کتابی نوشته بود که بین تمام کامپیوتر های جهانی unique است و حدودا "36 به توان 36" ترکیب مختلف میتونه داشته باشه).

*unos*
جمعه 13 آذر 1388, 10:04 صبح
ممنون که وقت گذاشتین


چرا فکر ميکنيد راه حل خودتان استباه است؟
به این خاطر که plan و attach باید یه لینکی بینشون باشه (و اون لینک یه جوری باید کلید اصلی و خارجی باشه که من در اینجا ندارم) . این شکلی میشه بدون ثبت رکورد در plans در attach رکورد ذخیره کرد . در حالی که در صورت وجود داشتن plans ، ضمیمه معنی پیدا می کنه .




اگر درست منظورتون را متوجه شده باشم، می تونین ستون PlanID رو از نوع UniqueIdentifier انتخاب کنین و با کمک تابع Newid کد 36 رقمی ایجاد کنید که احتمال تکراری بودنش تا اونجایی که می دونم صفر است( تو کتابی نوشته بود که بین تمام کامپیوتر های جهانی unique است و حدودا "36 به توان 36" ترکیب مختلف میتونه داشته باشه).
ببینید ساختار اولیه ای که من در نظر گرفته بودم این بود
http://barnamenevis.org/forum/attachment.php?attachmentid=40674&stc=1&d=1259909811


اما این یه مشکل داره . اونم اینه که جدول plans که جای دیگه پر میشه و فقط فایل xml ش برای من میاد که من بریزمش داخل جدول ، اونجا یه planID ضمیمه مخصوص به خودشو داره اما زمانی که می خوام اطلاعات plans و attach رو بریزم رو جدول های سرور ، تا رسیدن فایل های xml آقای x من کلی فایل از جاهای دیگه برام می یاد که باید اونهارو بریزم رو جدل های سرور . حالا مشکل اینه اون planID که تو فایل xml هست ، رو سرور ، دیگه به درد من نمی خوره
به این خاطر اومدم ساختار اولی رو ایجاد کردم که PlanID هر کس همونی باشه که خودش برام می یاره . اما فک می کنم این اشتباهه.

بهنام بهمنی
جمعه 13 آذر 1388, 21:00 عصر
کليد اصلي شما شامل سه فيلد ميشه Plan ID, Zone ID,Club ID که همانها رو به عنوان کليد خارجي هم استفاده کردي و Plan ID به ازا دو فيلد ديگر منحصر بفرد است. ( بنابراين مشکلي که ميگي بوجو نمي آيد).
خوب اين چه مشکلي دارد.

*unos*
شنبه 14 آذر 1388, 08:15 صبح
کليد اصلي شما شامل سه فيلد ميشه Plan ID, Zone ID,Club ID که همانها رو به عنوان کليد خارجي هم استفاده کردي و Plan ID به ازا دو فيلد ديگر منحصر بفرد است. ( بنابراين مشکلي که ميگي بوجو نمي آيد).
خوب اين چه مشکلي دارد.
سلام
من از ساختار اولی دارم تو برنامم استفاده می کنم . یعنی به نظر شما هیچ مشکلی نداره ؟
من به این خاطر می گم مشکل داره که هیچ لینک درستی بینشون برقرار نیست .
ساختار دومی درست هست (البته برای یه برنامه که تا تهش سینگل بمونه) اما این ساختار برای کاری که من می خوام بدرد نمی خوره چون PlanID که در Club x پر میشه دیگه لینکش با Attach ، در جدول های سرور بدردم نمی خوره