ورود

View Full Version : سوال: سوال در مورد نحوه طراحی ساختار بانک اطلاعاتی



حسین محمدی
سه شنبه 17 اردیبهشت 1387, 12:57 عصر
با سلام

من در طراحی یک دیتابیس که به مرور جدوال آن تغییراتی خواهند داشت از یک ورژن استفاده میکنم تا در روند کار اگر برنامه با ورژنهای قبلی دیتابیس مواجه شد بتواند کوئری های همان ورژن را اجرا کند.

ولی نمی دانم بهترین روش برای اینکه بانک خودم را ورژن گذاری کنم چگونه است؟

1) یک جدول داشته باشم و شماره ورژن را در آن قرار دهم یا
2) برای دیتابیس خود propery به نام ورژن اضافه کنم؟

یا راههای دیگر (مناسبترین روش چیست؟)

Accidentboy
سه شنبه 17 اردیبهشت 1387, 17:35 عصر
سلام

ببین برنامه exe دارای تغییرات میشه یا Table هات

اگه exe به مرور زمان تکمیل شه از یه Table ورژن استفاده کن که هر بار با تکمیل exe یه ورژن بالاتر ببر

و در شروع exe ورژن رو چک کن

حسین محمدی
سه شنبه 17 اردیبهشت 1387, 17:44 عصر
هر دو تغییر دارند ولی منظور من دیتابیس بوده است. یعنی در یک مرحله از کار مجبور شدم یک جدول را به دو جدول تقسیم کنم و تعدادی فیلد جدید اضافه کنم. و بیش از دو سرور از sql دارم.

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

Khalil morradi
پنج شنبه 19 اردیبهشت 1387, 16:26 عصر
هر دو تغییر دارند ولی منظور من دیتابیس بوده است. یعنی در یک مرحله از کار مجبور شدم یک جدول را به دو جدول تقسیم کنم و تعدادی فیلد جدید اضافه کنم. و بیش از دو سرور از sql دارم.

این کاری که من میکنم شاید درست نباشه اما برام خیلی جاها مشکلم رو حل کرده من یک جدول ایجاد کردم که در این جدول مشخصات کاملی از کلیه object های دیتابیس رو به همراه ورژن اون میذارم توی exe هم ورژن برنامه رو میذارم برای اولین باری که برنامه با ورژن جدید رو اجرا میکنم با یک اسکریپتی که نوشتم این جدول رو با تمام تغییراتش update میکنه بعدش یک sp رو فراخوانی میکنه که بر اساس ورژن برنامه هر object رو در جدول رفرنس پیدا میکنه و با وضعیت فعلیش مقایسه میکنه و تغییراتی رو که لازمه میده به همین راحتی حالا میخواد exe قبلی من هر ورژنی باشه که باشه مهم نیست تکه به تکه تغییرات رو اعمال میکنه تا به ورژن فعلی برسه البته این یک کم کد نویس داره و نسبتا سخته ولی من توی همه برنامه هام ازش استفاده میکنم



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

جدول قبلی که گفتم تمام مشخصات لازم رو داره اگه بهر دلیل مشخصات خودش رو نتونه پیدا کنه مشخصه که یا دیتابیس مشکل پیدا کرده دستکاری شده و یا اصلا اون دیتابیس خاص نیست

AminSobati
جمعه 20 اردیبهشت 1387, 01:56 صبح
این اشکالی نداره که ورژن رو در یک جدول جداگانه نگهداری کنید

Khalil morradi
شنبه 21 اردیبهشت 1387, 15:37 عصر
این اشکالی نداره که ورژن رو در یک جدول جداگانه نگهداری کنید

ببینید در جدول رفرنس من بازای هر رکورد ورژن رو مشخص میکنم یعنی اینکه مثلا من در این جدول من فیلدهای زیر رو دارم

TableName
Action
Version
BundingData
...

در هر رکورد نام جدول، عملی که باید انجام بشه (مثلا اضافه بشه، حذف بشه، نوعش تغییر کنه، طولش تغییر کنه و...) که معمولابصورت یک بخشی از اسکریپت تغییرات است میذارم و ورژن برنامه و محلی رو که اگر این فیلد به جدول اضافه شد دیتا هاشو از اونجا پر کنه وی اگر بخواد حذف بشه دیتا هاشو کجا نگه داره و ... که از روی این جدول همیشه اسکریپت تغییرات ساخته میشه و مابقی قضایا به این ترتیب من دیگه خیلی درگیر تغییرات بصئرت جزء به جزء نمیشم فقط اگر فیلدی قراره تغییر کنه اینجا یک رکورد براش میسازم و تموم.