PDA

View Full Version : ساخت یه تیبل با فیلدهای null یا چند تیبل با FK



Payman62
یک شنبه 09 مرداد 1390, 13:36 عصر
سلام.
یه تیبل دارم که یه فیلد PK و یه فیلد رشته ای و 10 تا فیلد عددی داره.
حالا در هر رکورد ممکنه تعداد خاصی از این فیلدهای عددی مقدار بگیرن و اکثر مواقع همه فیلدها با هم مقدار نمیگیرن.
حالا سوالم اینه که این روش تعریف تیبل منطقی هست؟
1- خوب طبیعتا حجم دیتابیس بی دلیل بالا میره. اگه فیلدها مقدار null بگیرن چی؟ باز هم حجم بالا میره؟
2- بهتر نیست هر کدوم از اون فیلد هارو تو یه تیبل دیگه جدا تعریف کنم و با FK وصلشون کنم به این تیبل اصلی؟ تا هر بار با مقدار گرفتن یه فیلد فیلدهای دیگه که حالا به تیبل تبدیل شدن مقدار نگیرن؟

Galawij
یک شنبه 09 مرداد 1390, 14:31 عصر
لطف می کنید ساختار جدولتون را توضیح بدید و ارتباط فیلد رشته ای را فیلدهای عددی به چه صورت هست؟ آیا بین این ها ارتباط یک به چند داریم؟

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

Payman62
یک شنبه 09 مرداد 1390, 15:05 عصر
لطف می کنید ساختار جدولتون را توضیح بدید و ارتباط فیلد رشته ای را فیلدهای عددی به چه صورت هست؟ آیا بین این ها ارتباط یک به چند داریم؟

سلام.
فیلد رشته مهم نیست. اصلا فرض که فیلد رشته نداریم.

Galawij
یک شنبه 09 مرداد 1390, 18:05 عصر
سلام.
من که خدمت شما عرض کردم. با توجه به اینکه می فرمائید اکثر مواقع فیلدهای عددی مقدار Null می گیرند. پس بهتره فقط برای داده هایی که مقادیر عددی دارند، اطلاعات نگهداری شود از طریق یک جدول دیگر. برای مثال اگر رکورد شماره 1 در جدول اصلی، با یک مقدار رشته ای در فیلد مربوط به رشته، دارای مقادیر عددی برای سایر فیلدها باشد، کد آن در جدول دوم به عنوان کلید خارجی و به همراه مقادیر عددی سایر فیلدها نگهداری می شود. در صورتی که برای رکورد شماره 2، با مقدار رشته ای متناسب با آن هیچ مقداری برای فیلدهای عددی نداریم، پس نیازی به آوردن این کد در جدول دوم به عنوان کلید خارجی نداریم.(با این روش فکر می کنم 3/2 از رکوردهای خالی حذف می شوند).

Payman62
یک شنبه 09 مرداد 1390, 19:11 عصر
سلام.
گفتم که اصلا فیلد رشته رو حدف کردم. فیلد رشته ندارم.
یه تیبل با 1 فیلد کلید اصلی و 10 فیلد عددی. که در هر رکورد تعدادی از فیلدهای عددی مقدار میگیرن. شاید یکیش مقدار بگیره. شاید 10 تاش مقدار بگیرن. اما اکثر مواقع حداکثر 3 تا فیلد عددی مقدار میگیره.

Galawij
یک شنبه 09 مرداد 1390, 20:50 عصر
اگر بحث گزارشات براتون خیلی مهم نیست به این روش اقدام کنید:

یک جدول برای انواع اعداد تعریف کنید با این فیلدها(کد عدد، نام عدد) که داده های رشته ای عدد اول، عدد دوم، ... تا عدد ده را در این جدول وارد می کنید.
بعد در جدول اصلی این فیلد ها را دارید(کلید اصلی، مقدار عدد، کد عدد(به عنوان کلید خارجی از جدول انواع اعداد))
به این صورت هیچ فیلد خالی ای در جدول ندارید.