PDA

View Full Version : سوال: دیتابیس برای ورود اطلاعات به چند زبان



nafasak
شنبه 28 فروردین 1389, 21:43 عصر
سلام،

اگر بخوایم مطالب ورودی دیتابیس رو بصورت چند زبانه وارد کنیم
{یعنی: مثلا اطلاعات کاربری فرد به چند زبان وارد بشه: مسعود,Masoud}
، چه تدبیری برای ذخیره مطالب اعمال میکنید که بشه با توجه به زبان سایت مطالب ذخیره شده به همون زبان رو نمایش بدیم؟؟؟
ضمنا طراحی باید طوری باشه که بشه با اضافه کردن یک زبان جدید به پروژه در هر زمانی به راحتی اطلاعات رو به زبان جدید وارد کرد.

با تشکر،
M.R

AminSobati
یک شنبه 29 فروردین 1389, 00:42 صبح
سلام دوست عزیزم،
شما میتونین هر متن رو با ID زبانش ذخیره کنید مثل کاری که خود SQL Server برای پیغامهای خطا در sys.messages انجام میده. اگر از این View یک کوئری بگیرید، متوجه جزئیات خواهید شد.

nafasak
یک شنبه 29 فروردین 1389, 06:29 صبح
آقا امین،
آخه من برای 2زبانه بودن یک روش داشتم اونم اینکه هر دو زبان رو باهم در یک فیلد میزدم و با یک | از هم جدا میکردم، بعد با یک تابع ساده توی برنامه زبان مورد نظر رو نمایش میدادم، مثل: مسعود|Masoud
سه سوال :
1- پس اینکه برای هر زبان یک رکورد بزنیم درسته؟ آخه مساله اینجاست که توی اکثر جداول غیر از فیلدهای متنی، فیلدهای عددی و تاریخ هم وجود داره، اینکار باعث افزونگی میشه؟؟؟ حالا چیکار کنم؟؟؟
2- تعداد رکوردی که توی هر جدول میشه ذخیره کرد آیا محدود یا نامحدود؟؟؟؟
3- اگه فیلد ID من int و AutoIncrement باشه وقتی به عدد آخر int برسه چه اتفاقی میافته؟؟

بازم ممنون از کمکتون.
M.R

nafasak
جمعه 03 اردیبهشت 1389, 06:34 صبح
در حقیقت مساله سر طراحی دیتابیسیست که بشه اطلاعات رو بصورت چند زبانه در اون ذخیره کرد:
دیتابیسی که بشه در هر زمانی، زبانی رو به پروژه اضافه یا کم کرد و در نحوه ذخیره سازی اشکالی پیش نیاد، ضمنا افزونگی هم نداشته باشیم.

من روشی رو در نظر دارم که میخواستم ببینم برای این روش شمارنده بزارم یا سیاست دیگه ای رو ستفاده کنم....
در این روش من یک جدول مثلا به اسم TComment در نظر گرفتم با فیلدهای زیر:
LanguageId : نوع زبان
TableName : نام جدول مربوطه
RecordID : ایندکس رکورد از جدول مربوطه
FieldID : ایندکس فیلد از رکورد مربوطه
Comment : محتویات فیلد مربوطه به زبان مورد نظر

که در این روش تمامی اطلاعاتی که بر پایه زبان هستند در جدول TComment ذخیره میشن و ادامه ماجرا.....


لطفا نظرات سازندتون رو بفرمایید.

AminSobati
جمعه 03 اردیبهشت 1389, 20:19 عصر
عذر میخوام بابت تاخیری که در پاسخ داشتم:
نگه داشتن هر دو زبان در یک فیلد مناسب نیست چون Parse کردن اون خودش مستعد مشکلات خواهد بود.
برای جلوگیری از افزونگی اطلاعات، داشتن جدول مجزا روش اصولی و مناسبی هست.
فیلد int رو هر زمان که خواستین میتونین به bigint تبدیل کنید

nafasak
جمعه 03 اردیبهشت 1389, 20:54 عصر
عذر میخوام بابت تاخیری که در پاسخ داشتم:
نگه داشتن هر دو زبان در یک فیلد مناسب نیست چون Parse کردن اون خودش مستعد مشکلات خواهد بود.
برای جلوگیری از افزونگی اطلاعات، داشتن جدول مجزا روش اصولی و مناسبی هست.
فیلد int رو هر زمان که خواستین میتونین به bigint تبدیل کنید

پس به نظر شما روشی که در بالا نوشتم درسته؟ (TComment)؟؟؟؟؟؟
با توجه به اینکه تمامی اطلاعات مربوط به زبان از تمامی جداول دیتابیس در اون ذخیره میشوند!!!!

بازم ممنون،
M.R