sqlite relationship

برقراری رابطه میان جداول در sqlite

در این آموزش قصد داریم تا به طور ساده برقراری رابطه میان جداول را آموزش دهیم. در تمامی بانک های اطلاعاتی برقراری رابطه میان دو یا چند جدول از طریق کلید های اصلی(PRIMARY KEY) و کلیدهای خارجی(FOREIGN KEY) صورت می گیرد. به عنوان مثال فرض کنید در حال طراحی جداول یک سیستم بانکی هستیم؛ برای حساب ها یک جدول به نام Accounts و برای تراکنش ها یک جدول به نام Transaction در نظر گرفته ایم. می خواهیم اطمینان حاصل کنیم که هر تراکنشی که به جدول Transaction اضافه می شود، حتما به یک حساب بانکی که در جدول Accounts ثبت شده، مرتبط است. همچنین می خواهیم مطمئن شویم هر حسابی که در جدول Accounts حذف می شود، تمامی تراکنش های آن حساب از جدول Transaction حذف شده اند. به بیان ساده تر می خواهیم میان هر حساب و تراکنش های آن حساب ارتباط برقرار کنیم. برای ایجاد این ارتباط ابتدا باید با مفاهیم مهمی به نام های کلید اصلی(PRIMARY KEY) و کلید خارجی(FOREIGN KEY) آشنا شویم.

کلید اصلی(PRIMARY KEY)

فیلدی که خصوصیت کلید اصلی پیدا کند، باید محتوای یکتا(UNIQUE) و غیرتهی(NOT NULL) داشته باشد. در هر جدول معمولا یک فیلد چنین خصوصیتی پیدا می کند. برای ساخت جدول حساب ها از این خصوصیت استفاده میکنیم و این خصوصیت را به فیلد “شماره حساب” که برای هر حساب مقداری متفاوت و غیرتکراری است، اختصاص می دهیم. به نمونه کد زیر دقت کنید:

CREATE TABLE Accounts (
account_id TEXT NOT NULL,
card_name TEXT NOT NULL,
card_number TEXT,
card_cash INTEGER,
PRIMARY KEY (account_id)
);

کلید خارجی(FOREIGN KEY)

فیلدی که خصوصیت کلید خارجی پیدا کند، باید محتوایی برابر با یکی از مقادیرِ کلید اصلیِ موجود در جدول مرجع(REFERENCE) داشته باشد. در غیر اینصورت عملیات درج(INSERT) و ویرایش(UPDATE) با خطا روبرو خواهند شد(انجام نمی شوند). برای ساخت جدول تراکنش ها از این خصوصیت استفاده می کنیم و این خصوصیت را به فیلد “شماره حساب تراکنش” اختصاص می دهیم. با اینکار هر تراکنشی که ثبت می شود، باید مربوط به یک حساب باشد که در جدول حساب ها ثبت شده است. به نمونه کد زیر دقت کنید:


CREATE TABLE Transaction (

Transaction_account_id TEXT NOT NULL,

transaction_value INT,

transaction_date DATETIME,

FOREIGN KEY (transaction_account_id) REFERENCES Accounts(account_id)

);

توجه داشته باشید که برای اعمال مطالب این آموزش در دیتابیس sqlite، ابتدا باید محدودیت کلید خارجی را فعال کنید! برای انجام این کار بعد از اتصال به پایگاه داده، Query زیر را اجرا کنید:

 PRAGMA foreign_keys = ON; 

چنانچه اجرای این Query با خطا روبرو نشود، می توانید میان جداول ارتباط برقرار کنید. در صورت بروز خطا احتما نسخه sqlite مورد استفاده شما قدیمی تر از ۳٫۶٫۱۹ است.

در این آموزش قصد داریم تا به طور ساده برقراری رابطه میان جداول را آموزش دهیم. در تمامی بانک های اطلاعاتی برقراری رابطه میان دو یا چند جدول از طریق کلید های اصلی(PRIMARY KEY) و کلیدهای خارجی(FOREIGN KEY) صورت می گیرد. به عنوان مثال فرض کنید در حال طراحی جداول یک سیستم بانکی هستیم؛ برای …

بررسی کلی

امتیاز کاربر: 4.8 ( 2 رای)
0

۲ دیدگاه

  1. خدا خیرت بده چند روز دنبال چنین مطلبی بودم ممنون

  2. با سلام
    اگه امکان داره قطعه کد مربوط به اندرویدشم بنویسید تا بتونیم در برنامه استفاده کنیم
    البته با تک جدولی میتونم کار کنم ولی با دو جدولی …..
    اگه امکانش بود برام ایمیل کنید
    با تشکر

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نخواهد شدعلامتدارها لازمند *

*

theme