نحوه تعیین موجودیت های دیتا بیس

پرسیده شده
فعالیت 1480 روز پیش
دیده شده 906 بار
0

سلام استاد میفرمایید که بعد از نیاز سنجی نیازهای مشتری و طراحی رابط کاربری میریم سراغ طراحی دیتا بیس سوالم اینه که موجودیت های دیتا بیس ، یعنی جدول درسته؟ یعنی هر موجودیت یک جدول و اگر این جوری باشه چرا اینکارو میکنیم مثلا شما میگید اگر تسک ها تگ داشت اونم میشد یه موجودیت دیگه اما من میگم خوب چرا یک فیلد(ستون) درون موجودیت تسک نباشه یک مقدار بیشتر درباره اینکه تحلیل درست دیتا بیس چیه امکانش هست توضیح بدید چون من حس میکنم چه تگ جدول جدا باشه چه درون جدول تسک ، نرم افزار ما کار میکنه ولی یقینا یکی از این دو حالت بهینه هست از کجا بفهمیم؟؟

فایل پیوست

علی حبیبی
علی حبیبی

27 فروردین 99

0
حذف شده

سلام

خودم به شخصه فکر میکنم که tagهای ما بهتره یک فیلد باشه و نیازی به یک جدول مستقل نباشه، این کاملا درسته که موجودیت های ما همان جداول هستند، ولی بعضی اوقات شاید شما بخواهید که یک جدول مستقل از tagها داشته باشید تا دسترسی راحت تر به مقادیر داشته باشی.

شاید نمونه اینو بشه به جدول دسته بندی (Category) اشاره کرد که شما در یک جدول دسته بندیو تعریف میکنی و از اونا استفاده میکنی.

این نظر من بود قطعا پاسخ استاد به سوال شما بهتر خواهد بود.

فایل پیوست

امیر صالحی

توسط

امیر صالحی

27 فروردین 99

4

مورد تایید استاد

حذف شده

سلام.

راه بهینه اینه که یک جدول جدا مخصوص تگ ها ایجاد کنید.

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

ازونجایی که ممکنه یک تسک، چندین تگ داشته باشه، پیشنهاد من اینه، از سه جدول استفاده بشه.

یک جدول تسک داریم.

یک جدول تگ داریم.

و یک جدول واسط که هر تسک رو به یک تگ متصل کنه.

برای مثال این جدول task_id و tag_id داره و این دو فیلدهم باهم PK گذاشته میشن.علت اینکار اینه از تگ تکراری برای هر تسک جلوگیری بشه. برای مثال اگر task_id برابر ۱ باشه و یک تگی در جدول تگ، tag_id ایش برابر ۲ باشه، وقتی دوفیلد باهم PK (یا اینکه unique) شده باشن:

task_id        tag_id
-----------------------
    1             2
    1             3
    1             9
    2             2

 

همونطور که جدولو میبینید، task_id=۱ و tag_id=۲ فقط یکبار میتونه در جدول قرار بگیره. چون دو فیلد باهم PK شدن و از تکرار جلوگیری میکنه. یا ۲-۲ هم یکبار و ...

مثال واضح تر اگه بزنم اینه که مثلا اگر فیلد name و family در یک جدول داشته باشیم و هر دو فیلد رو باهم unique کنیم اگر name=mohsen و family=movahed باشه، در اون جدول mohsen movahed فقط یکبار ثبت میشه و عضو دیگری بعنوان mohsen movahed نمیتونیم داشته باشیم.

 

* در ضمن اگر قرار باشه برای هر تسک فقط یک تگ در نظر گرفته بشه، در اینصورت دیگه نیاز به جدول واسط(جدول سوم) نیست و فقط کافیه در جدول تسک یک tag_id بعنوان کلید خارجی به جدول تگ اضافه بشه.

فایل پیوست

محسن موحد

توسط

محسن موحد

27 فروردین 99