ورود

View Full Version : ساخت کلید خارجی



master_pro
شنبه 01 تیر 1398, 06:37 صبح
برای ساخت کلید خارجی جداول به ابهام خوردم
به این صورت که جداول مختلفی دارم مثل یوزر , کامنت ها , امتیازات و ...
ابهامم اینجاست چرا باید کلید خارجی رو از نوع عددی تعریف کنم , مثلا user_id چرا نباید خود user کلید خارجی باشه ؟
اگر خود یوزر کلید باشه مزایایی داره , مثلا وقتی میخام از جدول کامنت کوئری بگیرم که کامنت های این یوزر که اسمش داخل session هست بیار خیلی راحت از 1 جدول کامنت فقط کوئری میگیرم و موارد مشابه این که بازم هست و کار سریع تر و با کوئری های سبک تری قابل انجامه

master_pro
شنبه 01 تیر 1398, 16:52 عصر
کسی به این سایت سر نمیزنه ؟؟

mmbguide
شنبه 01 تیر 1398, 20:57 عصر
سلام

به گمانم سبک و راحت تر بودن دلیل محکمی نیست چون با ID نوع عددی هم براحتی میشه کار رو انجام داد و کوئری های بهینه نوشت.
خب شما در جدول اصلی ستون UserName رو به عنوان کلید تعریف کن و در جداول دیگه به عنوان کلید خارجی ازش استفاده کن. فقط نوع داده باید یکسان باشه.

master_pro
یک شنبه 02 تیر 1398, 11:12 صبح
ممنون از پاسختون
پس داخل هر جدول یک کلید داخلی عددی auto inc میذارم که بشه برای شناسائی ترتیب و این جور جزئیات ازش استفاده کرد و username رو هم بین تمام جداول مرتبط با user کلید خارجی میذارم
به نظر میاد اینجوری کمی حجم بیشتر مصرف شه چون مثلا یک یوزر نیم ali245_good کمی بیشتر از یک عد مثلا 2485 حجم میگیره ولی در عوض وقتی مثلا کامنت های این یوزر میخایم فقط از جدول کامنت یک کوئری سبک جواب میده و نیاز به کوئری از چند جدول نیست , که این تو درخواست های بالا در استفاده از پردازنده و .. سرور صرفه جوئی خوبی میکنه

master_pro
یک شنبه 02 تیر 1398, 12:18 عصر
تو این آموزش هم از دیتابیس northwind مایکروسافت استفاده میکنه که یوزر نیم را کلید تعریف کرده برام جالب بود گفتم بذارم
https://www.aparat.com/v/SCK0t