اون یکی همکارمون که نخواست هویتش فاش بشه:) متاسفانه استادش بهش مشقهای زیادی داده که چون خودش درگیر بوتکمپ و کالجهای کوئراست از شما میخواد تا مشقهاشو براش بنویسید.
همان طور که در جریان هستید این مسائل نرمالسازی بیشتر جنبه تئوری دارند و در مسائل و مشقهای دانشگاه مطرح میشوند. جدول اولیه سوپرمارکت که در صورت سوال مطرح شده به شرح زیر است:
اما همانطور که مشخص است، طراحی این دیتابیس اصلاً جالب نیست و افزونگی داده دارد.
در این سؤال، از شما میخواهیم این دیتابیس را برای اون یکی همکارمون نرمالسازی کنید.
اطلاعات جدول موجود بهصورت زیر است:
نام ستون نوع تعریف
m_id bigint AUTO_INCREMENT آیدی شعبه
m_name varchar(255) نام شعبه
m_address text آدرس شعبه
p_id bigint AUTO_INCREMENT آیدی محصول
p_name varchar(255) نام محصول
p_weight bigint وزن محصول
price bigint قیمت محصول
level int سطح شعبه
m_score bigint امتیاز شعبه
capacity bigint ظرفیت تعداد محصول مربوط به سطح شعبه
همچنین توجه کنید که در جدول بالا m_id و p_id کلید هستند.
تنها خواسته از شما در این سوال این است که جدول شکلی که در ابتدای سؤال آمده است را پس از نرمالسازی، فقط با استفاده از دستورات DDL ایجاد و ارسال کنید. شما باید نرمالسازی را تا جایی ادامه دهید که هیچکدام از وابستگیها (dependencies) نقض نشوند. تنها نکتهی مهم این سؤال، نامگذاری جداول است. باید طبق جدول زیر از نام هر یک از جداول که احتیاج دارید، استفاده کنید.
کلید نام جدول
شعبهها markets
امتیازات scores
محصولات products
نامها names
وزنها weights
آدرسها addresses
قیمتها prices
ظرفیتها capacities
- دقتکنید که نیاز به استفاده از همهی جداول ذکر شده در جدول بالا نیست و فقط باید از جداولی که به آنها احتیاج دارید استفاده کنید.
- تمام اطلاعات ستونها (مانند نام و...) باید مشابه موارد ذکر شده در اول سؤال باشند و نباید تغییر کنند.
- امکان NULL بودن در هیچ یک از ستونها مجاز نیست.
- کلیدهای خارجی باید به درستی ایجاد شوند (نام آنها اهمیتی ندارد).
آنچه باید آپلود کنید پس از طراحی کوئریها، کد خود را در قالب یک فایل با پسوند .sql آپلود کنید.