Navid7h
چهارشنبه 02 شهریور 1384, 17:19 عصر
با سلام خدمت دوستان محترم
من میخواستم یک سری سوال در مورد طراحی Database برای Application ها رو در قالب یک مثال بپرسم .
فرض کنید یک سیستم خرید و فروش داریم یا مثلا یک سیستم فروش برای رستوران
در ابتدا سیستم را خیلی پیچیده نمی کنم .
فرض کنیم سیستم ما باید فروش انواع غذا را ثبت کند
یک Tabel داریم برای لیست غذا (MENU) و یک TABEL هم داریم برای سفارشات Orders
1) اگر انواع غذا با یک PK از جدول MENU انتخاب شود یعنی در جدول Order ها fk باشد اگر یک غذا از لیست MENU حذف شود
تمام رکوردهای مربوط به آن از Orders حذف می شوند.
آیا بهتر است برای وجود داشتن یا نداشتن غذا از یک Field که bool است استفاده کنیم ؟
2) قیمت واحد هر غذا باید در Order ها هم بیاید .چون اگر Price از جدول Menu به صورت FK در Order باشد با دستکاری MEnu فاکتورها هم عوض میشوند !
مثلا 6 ماه دیگر همبرگر 300 تومان گران شود تمام فاکتورهای قبلی هم با توجه به قیمت فعلی محاسبه میشوند !
آیا این Normalization را نقض نمیکند ؟ (فکر نکنم !)
3) با توجه به اینکه هر سفارش میتواند شامل چندین غذا باشد راه اول و کلاسیک (تا آنجایی که من میدانم !) این است که یک جدول Orders داشته باشیم
و یک جدول OrdersDetail برای فراهم کردن یک رابطه One To Many .
ایا راه دیگری هم هست ؟
و سوال آخر !
4) در صورت داشتن دو جدول Orders و OrdersDeTail آیا بهتر است جمع کل اقلام در Orders در یک فیلد مجزا بیاید
یا با Join کردن 2 جدول نتیجه را در هنگام گرفتن Query محاسبه کنیم !؟
منظور این است که بعضی وقتها De-normalization باعث بالا رفتن سرعت می شود. اما آیا Data Integrity در این مثال نقض نمیشود ؟!
من میخواستم یک سری سوال در مورد طراحی Database برای Application ها رو در قالب یک مثال بپرسم .
فرض کنید یک سیستم خرید و فروش داریم یا مثلا یک سیستم فروش برای رستوران
در ابتدا سیستم را خیلی پیچیده نمی کنم .
فرض کنیم سیستم ما باید فروش انواع غذا را ثبت کند
یک Tabel داریم برای لیست غذا (MENU) و یک TABEL هم داریم برای سفارشات Orders
1) اگر انواع غذا با یک PK از جدول MENU انتخاب شود یعنی در جدول Order ها fk باشد اگر یک غذا از لیست MENU حذف شود
تمام رکوردهای مربوط به آن از Orders حذف می شوند.
آیا بهتر است برای وجود داشتن یا نداشتن غذا از یک Field که bool است استفاده کنیم ؟
2) قیمت واحد هر غذا باید در Order ها هم بیاید .چون اگر Price از جدول Menu به صورت FK در Order باشد با دستکاری MEnu فاکتورها هم عوض میشوند !
مثلا 6 ماه دیگر همبرگر 300 تومان گران شود تمام فاکتورهای قبلی هم با توجه به قیمت فعلی محاسبه میشوند !
آیا این Normalization را نقض نمیکند ؟ (فکر نکنم !)
3) با توجه به اینکه هر سفارش میتواند شامل چندین غذا باشد راه اول و کلاسیک (تا آنجایی که من میدانم !) این است که یک جدول Orders داشته باشیم
و یک جدول OrdersDetail برای فراهم کردن یک رابطه One To Many .
ایا راه دیگری هم هست ؟
و سوال آخر !
4) در صورت داشتن دو جدول Orders و OrdersDeTail آیا بهتر است جمع کل اقلام در Orders در یک فیلد مجزا بیاید
یا با Join کردن 2 جدول نتیجه را در هنگام گرفتن Query محاسبه کنیم !؟
منظور این است که بعضی وقتها De-normalization باعث بالا رفتن سرعت می شود. اما آیا Data Integrity در این مثال نقض نمیشود ؟!