RT5465
5 سال پیش توسط RT5465 مطرح شد
2 پاسخ

ساختار دیتابیس مناسب برای کتابخانه مجازی

در حال جستجو برای پیدا کردن ساختار مناسب دیتابیس برای یک کتابخانه مجازی با ویژگی های زیر هستم ، ممنون میشم راهنمایی کنید (ببخشید طولانی شد)

  1. حدود 1000 کتاب
  2. بعضی از کتب چند جلدی هستند
  3. بعضی از کتب چاپ های مختلفی دارند (البته در مورد چاپ های مختلف ، متن چاپ ها یکسانه و صرفا صفحه بندی ها متفاوتند)
  4. ثبت پاورقی کتب (تمام پاورقی هایی که افراد مختلف برای یک کتاب ثبت کردند در بخش مطالعه کتاب قابل مشاهده باشه ، البته پاورقی ها از چاپ های مختلف جمع آوری میشه ، به عنوان مثال کتاب الف ، سه چاپ دارد ، چاپ اول صرفا متن مؤلف ، چاپ دوم و سوم هرکدوم شامل متن اصلی به همراه پاورقی های تهیه کننده هر یک از دو چاپ ، قصد داشتم تمام پاورقی ها در بخش مطالعه کتاب چاپ اول قرار بگیرند به علاوه در بخش مطالعه چاپ دوم و سوم هم پاورقی های مرتبط قرار بگیرند)

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

ساختار دیتابیسی که به ذهنم رسیده :

  1. جدول کتاب ها (موضوع ، نویسنده ، تصویر ، عنوان و ...)
  2. جدول جلد ها (شماره جلد و ...)
  3. جدول صفحات (آی دی کتاب ، آی دی جلد ، شماره صفحه ، محتوا و ...)
  4. جدول گروه پاورقی ها (آی دی کتاب ، عنوان ، نویسنده و ...) (برای مشخص کردن مجموعه پاورقی های یک کتاب ، البته طبق قاعده چیزی که به ذهن من میرسه اینه که رابطه این جدول با جدول کتاب ها باید Many to Many باشه اما به خاطر مشکلی که بعدا میگم متفاوت قرار دادم)
  5. جدول پاورقی ها (آی دی گروه پاورقی ها ، شماره پاورقی و ...)
  6. جدول صفحه_پاورقی (آی دی صفحه ، آی دی پاورقی)
  7. جدول چاپ ها (آی دی کتاب ، عنوان و ...)
  8. جدول صفحات چاپ ها (آی دی جدول چاپ ها ، شماره صفحه ، شماره کارکتر ابتدا ، شماره کاراکتر انتها و ...)
  9. جدول پاورقی_صفحات چاپ ها (آی دی پاورقی ، آی دی صفحه از جدول 8)

توضیح منطق کار : مد نظرم بود تا یک بار کتابو با صفحه بندی چاپ اصلی منتشر کنم و در جداول 1 ، 2 ، 3 قرار بدم ، و برای چاپ های دیگه دوباره متن کتابو داخل این جداول قرار ندم تا دیتابیس زیادی شلوغ نشه (یعنی تقریبا تمام دغدغه ای که دارم همینه) ، در عوض چاپ هارو در جدول 7 تعریف کنم و برای صفحه بندی چاپ از طریق مشخص کردن کاراکتر ابتدایی و انتهایی متن صفحه در صفحات چاپ اصلی ، متنو نمایش بدم (به نظر غیر منطقی میاد ، موندم چه کنم) ، بعد برای نمایش پاورقی های هر چاپ یک جدول واسط دیگه (جدول 9) ایجاد کنم

با همچین ساختاری میتونم جستجو در کتب داشته باشم؟ ، چون جستجو در کتب خیلی برام مهمه ، البته اگر هیچ راهی برای جستجو در تمام کتب نیست ، حداقل جستجو در یک کتاب ممکن باشه

بازم ممنون


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

شما بیاید در قدم اول جداول مختلفتون رو مشخص کنید، رابطه‌ بین اونها رو تعریف کنید حتی شده روی کاغذ
کم کم ساختار کلیش خودشو نمایش میده بعد که رفتید تو داستان کدنویسی ممکنه اون ساختار اولیه 100 بار تغییر کنه تا به بلوغ برسه


RT5465
@xdr5531 5 سال پیش مطرح شد
0

@hesammousavi
ممنون بابت راهنمایی

در واقع این سوالو مطرح کردم تا مجبور نشم از صفر شروع کنم ، چون اگر بعد تکمیل تمام دیتابیس ها و کدنویسی بک اند (و در واقع رسیدن به هدف مطلوبم از پروژه) ، متوجه بشم که مثلا یک جدول mysql گنجایش این حجم از اطلاعات رو نداره ، باید از اول شروع کنم (البته به قول شما در انتها متوجه میشم که این ساختار مناسب نیست :( )

کاش یک بخش کاملا اختصاصی مربوط به دیتابیس و منطق دیتابیس بر اساس اهداف در راکت میبود (به عنوان مثال شامل یک بخش برای ارائه ساختار های پیشنهادی دیتابیس میشد ، یا چارت مهارت برای دیتابیس ، مخصوصا آموزش منطق استفاده از دیتابیس)
البته منظورم از دیتابیس آموزش اجرای کوئری نیست


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام