کوئریهای شما باید روی MySQL قابل اجرا باشند.
علی فرد جوانی است که چندین سال است که در محلهای در یکی از شهرها سوپرمارکتی را میگرداند. او قصد دارد که در حرکتی جدید چندین شعبه برای خود ایجاد کند و محصولات خود را بهصورت اینترنتی بهفروش برساند. در اولین قدم، او تصمیم گرفته است تا دیتابیس فروشگاه آنلاین خود را طراحی کند. او اینکار را کرده و بهصورت تصویر زیر دادهها را نگهداری میکند:
اما همانطور که مشخص است، طراحی این دیتابیس اصلاً جالب نیست و افزونگی داده دارد.
در این سؤال، شما باید این دیتابیس را برای علی نرمالسازی کنید.
جزئیات پروژه
اطلاعات جدول موجود بهصورت زیر است:
نام ستون | نوع | تعریف |
---|---|---|
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
آپلود کنید.
ارسال پاسخ برای این سؤال