خانه - سرویس
تعریف محدودیت های یکپارچگی ایجاد انواع داده های عددی کسری کلیدهای اولیه

محدودیت کلید اولیه

PRIMARY KEY یک محدودیت یکپارچگی در سطح ستون است - مجموعه ای از قوانین پشتیبانی شده - که به طور رسمی یک ستون یا گروهی از ستون ها را به عنوان یک شناسه منحصر به فرد برای هر ردیف در یک جدول مشخص می کند.

اگر از سیستم های پایگاه داده ای که از مفهوم «شاخص اولیه» برای تعیین کلید پشتیبانی می کنند (معمولاً سیستم های مبتنی بر فایل مانند Paradox، Access و MySQL) به Firebird آمدید، پس Firebird و دنیای استانداردهای SQL برای شما آشنا هستند. کلید اصلی یک شاخص نیست، بلکه یک محدودیت است. یکی از قوانین چنین محدودیتی این است که محدودیت باید دارای یک شاخص منحصر به فرد خاص از یک یا چند عنصر غیر خالی مرتبط با آن باشد.

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

توجه! نیازی به وارد کردن یک "شاخص اولیه" موجود از یک سیستم مبتنی بر فایل قدیمی، یا ایجاد چنین نمایه ای در حین انتظار برای اعلام محدودیت کلید اولیه نیست. Firebird نمی‌تواند یک محدودیت کلید اولیه را بر روی یک فهرست موجود اعمال کند - حداقل در نسخه‌های موجود، از جمله 1.5 - و بهینه‌ساز پرس و جو در صورت کپی شدن ایندکس‌ها به درستی کار نخواهد کرد.

یک جدول فقط می تواند یک کلید اصلی داشته باشد. هنگامی که یک محدودیت را تعریف می کنید، Firebird به طور خودکار شاخص مورد نیاز را با استفاده از انواع قوانین نامگذاری شده ایجاد می کند. نام های شاخص کلید اولیه در زیر مورد بحث قرار گرفته است.

توجه! اگر از هر منبع دیگری غیر از InterBase یا Oracle پایگاه داده را به Firebird تبدیل می کنید، باید توجه ویژه ای به طرح مربوط به نام ها و محدودیت های کلید اصلی داشته باشید.

اگرچه محدودیت کلید اولیه به خودی خود یک محدودیت مرجع نیست، اما معمولاً بخشی ضروری از هر محدودیت مرجع است و موضوع بالقوه بند REFERENCES محدودیت KEY خارجی است. برای جزئیات بیشتر به فصل 17 مراجعه کنید.

انتخاب کلید اولیه

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

یک نامزد کلید اولیه، که می تواند یک ستون یا گروهی از ستون ها باشد، دو شرط لازم را دارد.

* ویژگی NOT NULL باید برای تمام ستون های یک گروه از یک یا چند ستون اعلام شود. یکپارچگی کلید فقط با مقایسه مقادیر قابل دستیابی است و NULL یک مقدار نیست.

* یک ستون یا گروهی از ستون ها باید منحصر به فرد باشد - یعنی بیش از یک ردیف با مقادیر یکسان نمی توانند در جدول ظاهر شوند. به عنوان مثال، گواهینامه رانندگی یا شماره تامین اجتماعی ممکن است نامزد در نظر گرفته شود، زیرا توسط سیستم هایی تولید می شوند که اجازه اعداد تکراری را نمی دهند.

به این «نگرش‌های» نظری، یک سوم باید اضافه شود.

* اندازه کل کلیدهای کاندید باید 252 بایت یا کمتر باشد. مسئله فقط شمردن شخصیت ها نیست. این محدودیت باید کاهش یابد - در برخی موارد به طور اساسی - اگر چندین ستون، یک دنباله ترتیب بندی غیر باینری، یا یک مجموعه کاراکتر چند بایتی وجود داشته باشد.

چگونه داده های واقعی می توانند شما را در معرض شکست قرار دهند

با استفاده از جدول پایگاه داده staff.fdb EMPLOYEE از دایرکتوری /examples در دایرکتوری ریشه Firebird (employee.gdb در نسخه 1.0.x)، بیایید ببینیم چگونه داده های دنیای واقعی می توانند باعث شوند که فرضیات نظری شما در مورد منحصر به فرد بودن اشتباه باشد. در اینجا یک اعلان است که داده های معنی دار ذخیره شده در این جدول را نشان می دهد:

ایجاد کارمند جدول (

FIRST_NAME VARCHAR(15) NOT NULL،

/* فرض: کارمند باید نام داشته باشد */

LAST_NAME VARCHAR(20) NOT NULL،

/* فرض: کارمند باید نام خانوادگی داشته باشد */

PHONE_EXT VARCHAR(4)،

HIRE_DATE تاریخ پیش‌فرض CURRENT_DATE NULL نیست،

DEPT_NO CHAR(3) NOT NULL،

JOB_CODE VARCHAR (5) NOT NULL،

JOB_GRADE SMALLINT NOT NULL،

JOB_COUNTRY VARCHAR(15) NOT NULL،

عددی حقوق (15، 2) پیش فرض 0 NOT NULL،

FULL_NAME محاسبه شده توسط FIRST_NAME || || نام خانوادگی) ؛

در واقع این ساختار هیچ کلید کاندید ندارد. نمی‌توان یک ردیف کارمند را با استفاده از (FIRST_NAME، LAST_NAME) به‌عنوان کلید شناسایی کرد، زیرا ترکیب این دو عنصر احتمال تکراری شدن در سازمان متوسط ​​تا زیاد است. ما نمی توانیم سوابق دو کارمند به نام جان اسمیت را ذخیره کنیم.

برای بدست آوردن کلیدها باید چیزی اختراع کنید. این "چیزی" مکانیزمی است که به عنوان کلید جانشین شناخته می شود.

کلیدهای جانشین

ما قبلاً به کلید جانشین در مبحث مقدماتی کلیدها در فصل 14 پرداختیم. کلید اصلی جایگزین مقداری است که تضمین شده است منحصر به فرد باشد و محتوای معنایی ندارد و به عنوان کلید جانشین در ساختار جدولی استفاده می شود که نمی تواند یک کلید ارائه دهد. کلید نامزد در ساختار خودش. به همین دلیل، EMP_NO به جدول EMPLOYEE (اعلام شده از طریق دامنه) اضافه می شود تا به عنوان کلید جایگزین عمل کند:

ایجاد دامنه EMPNO SMALLINT.

کارمند جدول ALTER

EMP_NO را اضافه کنید EMPNO NOT NULL،

محدودیت PK_EMPLOYEE را اضافه کنید

کلید اولیه (EMP_NO)؛

این پایگاه داده همچنین حاوی یک مولد به نام EMP_NO_GEN و یک ماشه قبل از درج با نام SET_EMP_NO در جدول EMPLOYEE برای بازیابی مقدار یک کلید مشخص هنگام اضافه شدن یک ردیف جدید است. در بخش "اجرای کلیدهای افزایش خودکار" در فصل 31 این تکنیک را به تفصیل شرح می دهد. این روش پیشنهادی برای پیاده سازی کلیدهای جایگزین در Firebird است.

ممکن است بخواهید مزایای استفاده از کلید اصلی جایگزین را نه تنها در مواردی که جدول نمی تواند نامزد ارائه دهد، بلکه در مواردی که نامزد کلید شما ترکیبی است نیز در نظر بگیرید.

کلیدهای اولیه مرکب

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

اگر با سیستم های پایگاه داده مانند پارادوکس، که از کلیدهای ترکیبی برای پیاده سازی روابط سلسله مراتبی استفاده می کردند، تجربه دارید، ممکن است تصور زندگی بدون آنها برایتان سخت باشد. هنوز، در عمل، کلیدهای ترکیبی باید در DBMS هایی مانند Firebird بسیار محدود در نظر گرفته شوند، که از ساختارهای شاخص فیزیکی روی دیسک برای پیاده سازی روابط عبور نمی کنند.

در Firebird نیازی به شاخص های ترکیبی نیست و علاوه بر این، نمایه های ترکیبی برای جداول بزرگ مشکلاتی در طراحی و عملکرد ایجاد می کنند.

* کلیدهای مرکب معمولاً از عناصر کلیدی غیر اتمی تشکیل شده اند. ستون های انتخاب شده معنی دارند (آنها "داده های معنی دار" هستند) و مطمئناً در برابر تغییرات خارجی و خطاهای ورود دستی آسیب پذیر هستند.

* کلیدهای خارجی از سایر جداول که به این جدول اشاره می کنند، هر عنصر کلید ترکیبی را کپی می کنند. یکپارچگی ارجاع در هنگام استفاده از کلیدهای غیر اتمی به خطر می افتد. ترکیب عناصر غیر اتمی خطر را افزایش می دهد.

* کلیدهای خارجی مانند کلیدهای اصلی دارای شاخص ثابت هستند. نمایه های مرکب نسبت به نمایه های تک ستونی محدودیت های اندازه سخت تری دارند.

* شاخص های مرکب معمولاً بزرگ هستند. نمایه های بزرگ از صفحات پایگاه داده بیشتری استفاده می کنند که باعث می شود عملیات فهرست (مرتب سازی، پیوستن و مقایسه) کندتر از حد لازم انجام شود.

اتمی بودن ستون های کلید اولیه

این روش خوبی است که ستون هایی را که به عنوان داده معنی دارند در کلیدهای اصلی و خارجی وارد نکنید. این یکی از اصول اساسی طراحی پایگاه داده رابطه ای - اتمی بودن - را نقض می کند. اصل اتمی بودن مستلزم آن است که هر عنصر داده به طور کامل به تنهایی وجود داشته باشد و یک قانون داخلی واحد بر وجود آن حاکم باشد.

برای اینکه یک کلید اولیه اتمی باشد، باید فراتر از تصمیمات انسانی باشید. اگر مردم آن را تألیف یا طبقه بندی کنند، اتمی نیست. اگر تابع قانون دیگری غیر از الزامات NOT NULL و منحصر به فرد باشد، اتمی نیست. در مثال بالا، حتی یک گواهینامه رانندگی یا شماره تامین اجتماعی الزامات اتمی بودن یک کلید اولیه را برآورده نمی کند زیرا آنها تابع سیستم های خارجی هستند.

نحو اعلان کلید اولیه

شما می توانید از چندین گزینه نحوی برای اختصاص یک محدودیت PRIMARY KEY به یک ستون یا گروهی از ستون ها استفاده کنید. تمام ستون هایی که عناصر کلید اصلی هستند باید با ویژگی NOT NULL از پیش تعریف شوند. از آنجایی که نمی‌توانید یک محدودیت NOT NULL را پس از ایجاد ستون به آن اضافه کنید، باید قبل از استفاده از سایر محدودیت‌ها مراقب این محدودیت باشید.

محدودیت PRIMARY KEY را می توان در هر یک از مراحل زیر ایجاد ابرداده اعمال کرد:

* در تعریف ستون در عبارت CREATE TABLE یا ALTER TABLE به عنوان بخشی از تعریف ستون.

* در تعریف جدول در دستور CREATE TABLE یا ALTER TABLE به عنوان یک محدودیت جدول جداگانه تعریف شده است.

تعریف کلید اولیه به عنوان بخشی از تعریف ستون

دنباله زیر یک دامنه غیر قابل تهی ایجاد می کند و متعهد می شود، سپس یک ستون کلید اولیه بر اساس آن دامنه تعریف می کند، و به طور همزمان یک محدودیت کلید اولیه را برای آن ستون اعمال می کند:

ایجاد دامنه D_IDENTITY به‌عنوان BIGINT NOT NULL.

ایجاد شخص جدول (

PERSON_ID D_IDENTITY کلید اولیه،

Firebird یک محدودیت جدول به نام INTEG_M و یک شاخص به نام RDB$PRIMARYnn ایجاد می کند. (pl در هر مورد عددی است که از مولد به دست می آید. این دو عدد به یکدیگر مرتبط نیستند.) شما نمی توانید روی نام این نام ها تأثیر بگذارید و نمی توانید آنها را تغییر دهید.

نتیجه مشابه خواهد بود اگر هنگام اضافه کردن یک ستون، با استفاده از عبارت ALTER TABLE و ایجاد کلید اولیه در یک عبارت، از همان رویکرد استفاده کنید:

ALTER TABLE BOOK

ADD BOOK_ID D_IDENTITY PRIMARY KEY.

تعریف یک کلید اولیه به عنوان یک محدودیت نامگذاری شده

راه دیگر برای تعریف کلید اولیه در تعریف جدول اضافه کردن یک اعلان محدودیت در انتهای تعاریف ستون است. اعلان‌های محدودیت در آخر قرار می‌گیرند زیرا به وجود ستون‌هایی که به آنها اشاره می‌کنند بستگی دارد. این روش به شما امکان نامگذاری محدودیت ها را می دهد. اعلان زیر محدودیت کلید اولیه را PK_ATABLE نامگذاری می کند:

ایجاد جدول ATABLE (

ID BIGINT NOT NULL،

ANOTHER_COLUMN VARCHAR(20)،

CONSTRAINT PK_ATABLE PRIMARY KEY(ID));

اکنون، به جای استفاده از نام تولید شده توسط سیستم RDB$PRIMARYnnn، Firebird از PK_ATABLE به عنوان نام این محدودیت استفاده می کند. در Firebird 1.5 و نسخه های جدیدتر، همچنین یک نام محدودیت تعریف شده توسط کاربر را برای نمایه منحصر به فرد پشتیبانی اعمال می کند. در این مثال، ایندکس PK_ATABLE نامیده می شود، در حالی که در نسخه های دیگر نام آن RDB$PRIMARYnnn است.

Firebird 1.5 همچنین به شما امکان می دهد از نام های تعریف شده توسط کاربر برای محدودیت و شاخصی که از آن پشتیبانی می کند استفاده کنید.

با استفاده از یک شاخص سفارشی

قبل از Firebird 1.5، امکان استفاده از یک شاخص نزولی برای پشتیبانی از کلید اصلی وجود نداشت. از نسخه 1.5، امکان نگهداری یک کلید اولیه با شاخص نزولی وجود دارد. برای انجام این کار، Firebird 1.5 یک پسوند نحوی به شکل یک عبارت USING اضافه می کند که به شما امکان می دهد یک شاخص ASC (صعودی) یا DESC (نزولی) ایجاد کنید و نامی غیر از نام محدودیت به آن بدهید.

AS c و DESC جهت جستجو را تعیین می کنند. این مفهوم با جزئیات بیشتر در فصل 18 مورد بحث قرار گرفته است.

عبارت زیر یک محدودیت کلید اصلی به نام PK ATEST و یک نمایه نزولی پشتیبانی به نام IDX_PK_ATEST ایجاد می کند:

ایجاد جدول ATEST (

ID BIGINT NOT NULL،

DATA VARCHAR(10));

ALTER TABLE ATEST

افزودن محدودیت PK_ATEST کلید اصلی (ID)

استفاده از DESC INDEX IDX_PK_ATEST.

یک نحو جایگزین نیز کار خواهد کرد:

ایجاد جدول ATEST (

ID BIGINT NOT NULL،

DATA VARCHAR(10)،

کلید اصلی محدود PK_ATEST (ID)

استفاده از DESC INDEX IDX PK ATEST.

توجه! اگر یک شاخص نزولی روی یک محدودیت کلید اصلی یا منحصر به فرد ایجاد می کنید، باید USING DESC INDEX را برای همه کلیدهای خارجی که به آن ارجاع می دهند، مشخص کنید.

یک کلید اصلی به جدول موجود اضافه کنید

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

معمولاً در اولین اسکریپت جداول را اعلام می کنیم و ایجاد آنها را تأیید می کنیم:

ایجاد جدول ATABLE (

ID BIGINT NOT NULL،

ANOTHER_COLUMN VARCHAR(20)،

< другие столбцы >) ;

ایجاد جدول یک جدول دیگر (

ALTER TABLE ATABLE

محدودیت PK_ATABLE را اضافه کنید

کلید اولیه (ID)؛

جدول تغییر دهید یک جدول دیگر...

در فصل بعدی، هنگامی که به تعاریف FOREIGN KEY نگاه می کنیم، مزایای ایجاد یک پایگاه داده در دنباله ای از وابستگی های قابل اعتماد آشکار خواهد شد.

از کتاب پایگاه های داده: یادداشت های سخنرانی نویسنده نویسنده ناشناس

3. محدودیت یکپارچگی توسط حالت محدودیت یکپارچگی یک شی داده رابطه‌ای توسط حالت به اصطلاح داده‌های ثابت نامیده می‌شود.در این حالت، یکپارچگی باید با اطمینان از امنیت متمایز شود، که به نوبه خود مستلزم محافظت از داده‌ها از

برگرفته از کتاب C# 2005 Programming Language and the .NET 2.0 Platform. توسط ترولسن اندرو

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

از کتاب سرور لینوکس DIY نویسنده

11.2.2. محدود کردن دسترسی به نظر من لازم است نگاهی دقیق تر به دستورالعمل بلوک Limit بیندازم. این دستورالعمل نوع و پارامترهای دسترسی به یک دایرکتوری خاص را تعریف می کند. لیست 11.9. لیست 11.9 را در نظر بگیرید. نمونه ای از استفاده از دستورالعمل Limit

برگرفته از کتاب مبانی برنامه نویسی شی گرا توسط مایر برتراند

برگرفته از کتاب برنامه نویسی در پرولوگ برای هوش مصنوعی نویسنده براتکو ایوان

محدود کردن دسترسی مشتری برای محدود کردن دسترسی مشتری به یک جزء خاص h، از قابلیت گنجاندن دو یا چند بخش ویژگی در اعلان کلاس استفاده خواهد شد. اعلان به این شکل است: کلاس S2 featuref ...g ...ویژگی (A, B)h ......endcomponents f و g

برگرفته از کتاب افزایش دو برابری فروش در فروشگاه اینترنتی نویسنده پارابلوم آندری آلکسیویچ

5.1. محدود کردن جستجو در فرآیند دستیابی به یک هدف، سیستم Prolog به طور خودکار گزینه ها را جستجو می کند و در صورت شکست هر یک از آنها باز می گردد. این نوع جستجو مکانیزم نرم افزاری مفیدی است زیرا کاربر را از انجام این کار رها می کند

از کتاب Firebird DATABASE DEVELOPER'S GUIDE توسط بوری هلن

محدودیت دومین عنصر فرمول EDI مهلت (از سررسید انگلیسی) یا محدودیت است. این می تواند یک محدودیت زمانی (مثلاً تخفیف 50 درصدی فقط برای دو روز) یا محدودیت مقدار (مثلاً یک هدیه ارزشمند برای 50 مشتری اول) باشد. علاوه بر این، ضرب الاجل های کوتاه کار می کند

از کتاب Omert@. راهنمای امنیت رایانه و حفاظت از اطلاعات برای مدیران بزرگ توسط اکسلر الکس

محدودیت مرجع یک محدودیت مرجع به عنوان کلید خارجی اجرا می شود. یک محدودیت کلید خارجی فقط در زمینه جدول دیگری وجود دارد و کلید منحصر به فرد آن جدول، به طور صریح یا ضمنی در بند REFERENCES در هنگام اعلام محدودیت مشخص شده است.

از کتاب لینوکس از نگاه یک هکر نویسنده فلنوف میخائیل اوگنیویچ

محدودیت NOT NULL Firebird مانند برخی از DBMS های غیر استاندارد از ویژگی مقدار null پشتیبانی نمی کند. طبق استانداردها، تمام ستون‌ها در Firebird می‌توانند حاوی مقدار تهی باشند، مگر اینکه یک محدودیت صریح NOT NULL مشخص شده باشد.

از کتاب دنیای بین پایه. معماری، مدیریت و توسعه برنامه های کاربردی پایگاه داده در InterBase/FireBird/Yaffil نویسنده کوویازین الکسی نیکولاویچ

برگرفته از کتاب گمنامی و امنیت در اینترنت. از "قوری" تا کاربر نویسنده کولیسنیچنکو دنیس نیکولاویچ

از کتاب نویسنده

4.11.5. محدودیت شبکه در شبکه های بزرگ، توصیف هر کامپیوتر بسیار دشوار است. برای آسان‌تر کردن این کار، می‌توانید از ورودی‌های گروهی استفاده کنید. به عنوان مثال، شما باید فقط برای شبکه 192.168.1.x (با ماسک 255.255.255.0) اجازه دسترسی به اینترنت را بدهید. این بدان معناست که 24 بیت اول (سه بیت اول

از کتاب نویسنده

9.5.8. محدودیت کانال هنگام سازماندهی دسترسی به اینترنت، کاربران فردی اغلب نیاز به ارائه سرعت اتصال بالاتر دارند. چگونه می توان این کار را انجام داد وقتی به طور پیش فرض همه برابر هستند و می توانند با حداکثر سرعت موجود در حال حاضر کار کنند؟

از کتاب نویسنده

CHECK Constraint یکی از مفیدترین محدودیت ها در پایگاه داده، محدودیت چک است. ایده بسیار ساده است - مقدار درج شده در جدول را برای برخی شرایط بررسی کنید و بسته به تحقق شرط، داده ها را وارد کنید یا درج نکنید.

از کتاب نویسنده

P2.4. محدودیت دسترسی P2.4.1. ممانعت از دسترسی به یک سایت (یا لیستی از سایت ها) فرض کنیم باید دسترسی به یک سایت خاص (یا لیستی از سایت ها) را مسدود کنید. برای انجام این کار، به Billing | بروید مشتریان | فیلترها | قبل از گروه (شکل A2.10). دستور منو Action | را اجرا کنید

از کتاب نویسنده

P2.4.2. محدودیت سرعت برای محدود کردن سرعت یک کاربر خاص، آن را در لیست کاربران انتخاب کنید، کلیک راست کرده و Properties را انتخاب کنید. به برگه محدودیت ها بروید (شکل A2.14)، علامت کادر پیش فرض را بردارید.

P rimary Key فیلدی در جدول است که هر ردیف/رکورد را در جدول پایگاه داده به طور منحصر به فرد شناسایی می کند. کلیدهای اصلی باید حاوی مقادیر منحصر به فرد باشند. ستون کلید اصلی نمی تواند مقدار داشته باشد.

یک جدول می تواند تنها یک کلید اصلی داشته باشد که می تواند از یک یا چند فیلد تشکیل شده باشد. هنگامی که چندین فیلد به عنوان کلید اصلی استفاده می شود، آنها را یک کلید ترکیبی می نامند.

اگر یک جدول دارای کلید اصلی تعریف شده در هر فیلد(هایی) باشد، نمی توانید دو رکورد با مقدار یکسان برای آن فیلد(ها) داشته باشید.

توجه داشته باشید- می توانید از این مفاهیم در هنگام ایجاد جداول پایگاه داده استفاده کنید.

ایجاد یک کلید اصلی

در اینجا دستوری برای تعریف ویژگی ID به عنوان کلید اصلی در جدول مشتریان وجود دارد.

CREATE TABLE CUSTOMERS(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY Decimal (18, 2), PRIMARY KEY (ID));

برای ایجاد یک محدودیت کلید اصلی در ستون "ID" زمانی که جدول CUSTOMERS از قبل وجود دارد، از دستور SQL زیر استفاده کنید:

ALTER TABLE CUSTOMERS ADD PRIMARY KEY (ID);

توجه داشته باشید

اگر از عبارت ALTER TABLE برای افزودن کلید اصلی استفاده می کنید، ستون(های) کلید اصلی باید قبلاً فاقد مقادیر NULL اعلام شده باشند (اگر جدول ابتدا ایجاد شده باشد).

برای تعریف یک کلید اصلی در چندین ستون، از دستور SQL زیر استفاده کنید:

CREATE TABLE CUSTOMERS(ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY Decimal (18, 2), PRIMARY KEY (ID, NAME));

برای ایجاد یک محدودیت کلید اصلی در ستون های ID و NAME زمانی که جدول CUSTOMERS از قبل وجود دارد، از دستور SQL زیر استفاده کنید.

ALTER TABLE CUSTOMERS ADD CONSTRAINT PK_CUSTID PRIMARY KEY (ID, NAME);

حذف یک کلید اصلی

شما می توانید محدودیت های کلید اولیه را از یک جدول با استفاده از نحو ارائه شده در زیر پاک کنید.

ALTER TABLE CUSTOMERS DROP PRIMARY KEY;

ترجمه رایگان مقاله SQL برای مبتدیان قسمت 2 را در اختیار شما قرار می دهم

برای هر توسعه دهنده وب مهم است که بتواند با پایگاه داده ها تعامل داشته باشد. در قسمت دوم به یادگیری زبان ادامه می دهیم SQLو مهارت های خود را در DBMS اعمال کنیم MySQL. ایندکس ها، انواع داده ها و پرس و جوهای پیچیده تر را بررسی خواهیم کرد.

آنچه شما نیاز دارید

لطفاً به قسمت «آنچه نیاز دارید» قسمت اول که قرار دارد مراجعه کنید.

اگر می خواهید این نمونه ها را بر روی سرور خود اجرا کنید، موارد زیر را انجام دهید:

  1. کنسول خود را باز کنید MySQLو وارد شوید
  2. پایگاه داده "my_first_db" را با استفاده از پرس و جو ایجاد کنید ايجاد كردن، اگر قبلا ایجاد نشده باشد.
  3. با استفاده از اپراتور پایه را تغییر دهید استفاده کنید.

شاخص ها

شاخص‌ها (یا کلیدها) معمولاً برای بهبود سرعت اجرای عباراتی که داده‌ها را انتخاب می‌کنند (مانند انتخاب کنید) از جداول.

آنها بخش مهمی از معماری خوب پایگاه داده هستند؛ طبقه بندی آنها به عنوان "بهینه سازی" دشوار است. به طور معمول ایندکس ها در ابتدا اضافه می شوند، اما می توان بعداً با استفاده از یک پرس و جو اضافه کرد جدول تغییرات.

دلایل اصلی نمایه سازی ستون های پایگاه داده عبارتند از:

  • تقریباً هر جدول یک کلید اصلی دارد ( کلید اولیه)، معمولاً این ستون "id" است.
  • اگر ستونی برای ذخیره مقادیر منحصر به فرد در نظر گرفته شده است، باید دارای یک شاخص منحصر به فرد باشد ( منحصر بفرد).
  • اگر به جستجوی مکرر در یک ستون نیاز دارید (از آن در یک جمله استفاده کنید جایی که، باید یک شاخص منظم داشته باشد ( فهرست مطالب).
  • اگر ستونی برای ارتباط با جدول دیگری استفاده می شود، در صورت امکان باید یک کلید خارجی باشد ( کلید خارجی) یا یک شاخص معمولی.

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

تقریباً همه جداول دارای یک کلید اولیه هستند، معمولاً یک عدد صحیح با گزینه افزایش خودکار ( AUTO_INCREMET).

سوالات فرعی اغلب باعث کاهش قابل توجه عملکرد می شوند، بنابراین با احتیاط از آنها استفاده کنید.

UNION: ترکیب داده ها

با استفاده از پرس و جو اتحاد. اتصال، می توانید نتایج چند پرس و جو SELECT را ترکیب کنید.

این مثال حالت هایی را که با حرف "N" شروع می شوند با حالت هایی با جمعیت بزرگتر ترکیب می کند:

(انتخاب * از ایالات WHERE نام مانند "n%") UNION (انتخاب * از ایالات WHERE جمعیت > 10000000).

لطفا توجه داشته باشید که نیویورک یک ایالت بزرگ است و با حرف "N" شروع می شود. با این حال، فقط یک بار در لیست ظاهر می شود، زیرا موارد تکراری به طور خودکار حذف می شوند.

همچنین زیبایی درخواست ها اتحاد. اتصالاین است که می توان از آنها برای ترکیب کوئری ها در برابر جداول مختلف استفاده کرد.

به عنوان مثال، ما کارمندان میز (کارمندان)، مدیران (مدیران) و مشتریان (مشتریان) داریم. هر جدول دارای یک فیلد با آدرس ایمیل است. اگر بخواهیم تمام آدرس های ایمیل را در یک درخواست دریافت کنیم، می توانیم موارد زیر را انجام دهیم:

(انتخاب ایمیل از کارکنان) UNION (انتخاب ایمیل از مدیران) اتحادیه (انتخاب ایمیل از مشتریان WHERE مشترک = 1).

با تکمیل این درخواست، آدرس پستی همه کارکنان و مدیران و فقط مشتریانی که در لیست پستی مشترک هستند را دریافت خواهیم کرد.

INSERT ادامه دارد

قبلاً در مورد درخواست صحبت کردیم درج کنیددر مقاله قبلی اکنون که نمایه‌ها را بررسی کردیم، می‌توانیم در مورد قابلیت‌های جستجوی اضافی صحبت کنیم درج کنید.

درج ... در به روز رسانی کلید تکراری

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

بیایید ابتدا یک جدول تست ایجاد کنیم.

این میز نگهداری مواد غذایی است. فیلد " سهام " تعداد محصولات موجود در انبار را ذخیره می کند.

حالا بیایید سعی کنیم یک مقدار موجود را در جدول وارد کنیم و ببینیم چه اتفاقی می افتد.

یک خطا دریافت کردیم.

فرض کنید یک نانوایی جدید داریم و می خواهیم پایگاه داده را به روز کنیم، اما نمی دانیم که آیا قبلاً ورودی در پایگاه داده وجود دارد یا خیر. ابتدا می توانیم وجود رکورد را بررسی کنیم و سپس یک insert query دیگر را اجرا کنیم. یا می توانید همه چیز را در یک پرس و جو ساده انجام دهید:

مانند کار می کند درج کنید، اما با یک ویژگی مهم. اگر رکورد از قبل وجود داشته باشد، حذف می شود و سپس کوئری اجرا می شود درج کنید، و ما هیچ پیام خطایی دریافت نخواهیم کرد.

لطفا توجه داشته باشید، زیرا یک ردیف کاملاً جدید درج می شود، فیلد افزایش خودکار یک عدد افزایش می یابد.

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

هیچ خطایی یا خط به روز رسانی وجود ندارد.

انواع داده ها

هر ستون در جدول باید نوع خاصی باشد. ما قبلا از انواع استفاده کرده ایم INT, VARCHARو تاریخ، اما به جزئیات آنها پرداخته نشد. ما همچنین به چند نوع داده دیگر نگاه خواهیم کرد.

بیایید با انواع داده های عددی شروع کنیم. من آنها را به دو گروه تقسیم می کنم: اعداد صحیح و کسری.

کل

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

MySQL از 5 نوع اعداد صحیح با اندازه ها و محدوده های مختلف پشتیبانی می کند:

انواع داده های عددی کسری

این نوع ها می توانند اعداد کسری را ذخیره کنند: FLOAT، DOUBLE و DECIMAL.

FLOAT 4 بایت طول می کشد، DOUBLE 8 بایت طول می کشد و شبیه به قبلی است. DOUBLE دقیق تر است.

DECIMAL(M,N) دارای دقت متغیر است. M حداکثر تعداد ارقام، N تعداد ارقام بعد از نقطه اعشار است.

برای مثال، DECIMAL(13,4) دارای 9 رقم اعشار و 4 رقم اعشار است.

انواع داده های رشته ای

از روی نام می توانید حدس بزنید که آنها می توانند رشته ها را ذخیره کنند.

CHAR(N) می تواند N کاراکتر را ذخیره کند و مقدار ثابتی دارد. به عنوان مثال، CHAR(50) همیشه باید دارای 50 کاراکتر در هر خط در کل ستون باشد. حداکثر مقدار ممکن 255 کاراکتر است

VARCHAR(N) یکسان عمل می کند، اما محدوده ممکن است متفاوت باشد. N - نشان دهنده حداکثر مقدار است. اگر رشته ذخیره شده کوتاهتر از N کاراکتر باشد، فضای کمتری روی هارد دیسک اشغال می کند. حداکثر مقدار ممکن 65535 کاراکتر است.

انواع TEXT برای رشته های بلند مناسب تر است. TEXT دارای محدودیت 65535 نویسه، MEDIUMTEXT دارای محدودیت 16.7 میلیون و LONGTEXT دارای محدودیت 4.3 میلیارد نویسه است. MySQL معمولاً آنها را در حافظه های جداگانه روی سرور ذخیره می کند تا فضای ذخیره اصلی تا حد امکان کوچک و سریع باشد.

.

نتیجه

با تشکر از خواندن مقاله SQL یک زبان و ابزار مهم در زرادخانه توسعه دهندگان وب است.

آخرین به روز رسانی: 2019/04/27

کلیدهای خارجی به شما این امکان را می دهند که بین جداول ارتباط برقرار کنید. یک کلید خارجی روی ستون‌های یک جدول وابسته و فرعی تنظیم می‌شود و به یکی از ستون‌های جدول اصلی اشاره می‌کند. به طور معمول، یک کلید خارجی به یک کلید اصلی از یک جدول اصلی مرتبط اشاره می کند.

نحو کلی برای تنظیم یک کلید خارجی در سطح جدول به شرح زیر است:

کلید خارجی (ستون 1، ستون 2، ... ستونN) منابع جدول اصلی (جدول_اصلی_ستون1، جدول_اصلی_ستون2، ... جدول_اصلی_ستون N)

برای ایجاد یک محدودیت کلید خارجی، پس از کلید خارجی، ستون جدولی را مشخص می کنید که کلید خارجی را نشان می دهد. و بعد از کلیدواژه REFERENCES نام جدول مربوطه و سپس داخل پرانتز نام ستون مربوطه که کلید خارجی به آن اشاره خواهد کرد مشخص می شود. بعد از عبارت REFERENCES عبارات ON DELETE و ON UPDATE قرار دارند که به ترتیب عملکرد هنگام حذف و به روز رسانی یک ردیف از جدول اصلی را مشخص می کنند.

به عنوان مثال، بیایید دو جدول تعریف کنیم و با استفاده از یک کلید خارجی آنها را پیوند دهیم:

مشتریان جدول ایجاد کنید (ID INT PRIMARY KEY AUTO_INCREMENT، سن INT، نام VARCHAR(20) NOT NULL، LastName VARCHAR(20) NOT NULL، تلفن VARCHAR(20) NOT NULL UNIQUE). CREATE TABLE Orders (ID INT PRIMARY KEY AUTO_INCREMENT، CustomerId INT، CreatedAt Date، FOREIGN KEY (CustomerId) References Customers (Id));

در این حالت جداول مشتریان و سفارشات تعریف می شوند. مشتری اصلی ترین است و نماینده مشتری است. سفارشات وابسته است و نشان دهنده سفارش ارسال شده توسط مشتری است. جدول Orders از طریق ستون CustomerId به جدول Customers و ستون Id آن مرتبط می شود. یعنی ستون CustomerId یک کلید خارجی است که از جدول Customers به ​​ستون Id اشاره می کند.

می توانید از عملگر CONSTRAINT برای تعیین نام برای یک محدودیت کلید خارجی استفاده کنید:

CREATE TABLE Orders (ID INT PRIMARY KEY AUTO_INCREMENT, CustomerId INT, CreatedAt Date, CONSTRAINT orders_custonmers_fk FOREIGN KEY (CustomerId) References Customers (Id));

در حذف و در به روز رسانی

با استفاده از دستورات ON DELETE و ON UPDATE، می توانید اقداماتی را که به ترتیب هنگام حذف یا اصلاح یک ردیف مرتبط از جدول اصلی انجام می شود، تنظیم کنید. از گزینه های زیر می توان به عنوان یک اقدام استفاده کرد:

    CASCADE: هنگامی که ردیف های مرتبط در جدول اصلی حذف یا اصلاح می شوند، به طور خودکار ردیف ها را از یک جدول وابسته حذف یا تغییر می دهد.

    SET NULL: هنگام حذف یا به روز رسانی یک ردیف مرتبط از جدول اصلی، ستون کلید خارجی را NULL تنظیم می کند. (در این مورد، ستون کلید خارجی باید از تنظیمات NULL پشتیبانی کند)

    RESTRICT: حذف یا اصلاح سطرها در جدول اصلی را در صورت وجود سطرهای مرتبط در جدول وابسته رد می کند.

    NO ACTION: مانند RESTRICT.

    SET DEFAULT: هنگام حذف یک ردیف مرتبط از جدول اصلی، ستون کلید خارجی را به مقدار پیش فرضی که با استفاده از ویژگی DEFAULT تعیین می شود، تنظیم می کند. با وجود این واقعیت که این گزینه در اصل موجود است، موتور InnoDB از این عبارت پشتیبانی نمی کند.

حذف آبشاری

حذف آبشاری به شما این امکان را می دهد که وقتی یک ردیف را از جدول اصلی حذف می کنید، به طور خودکار تمام ردیف های مرتبط را از جدول وابسته حذف کنید. برای این کار از گزینه CASCADE استفاده کنید:

CREATE TABLE Orders (ID INT PRIMARY KEY AUTO_INCREMENT، CustomerId INT، CreatedAt Date، FOREIGN KEY (CustomerId) References Customers (ID) ON DELETE CASCADE).

عبارت ON UPDATE CASCADE به روشی مشابه کار می کند. وقتی مقدار یک کلید اصلی را تغییر می دهید، مقدار کلید خارجی مرتبط با آن به طور خودکار تغییر می کند. با این حال، از آنجایی که کلیدهای اولیه به ندرت تغییر می کنند، و معمولاً استفاده از ستون هایی با مقادیر قابل تغییر به عنوان کلیدهای اصلی توصیه نمی شود، عبارت ON UPDATE به ندرت در عمل استفاده می شود.

تنظیم NULL

وقتی گزینه SET NULL را برای یک کلید خارجی تنظیم می کنید، ستون کلید خارجی باید NULL مجاز باشد:

CREATE TABLE Orders (ID INT PRIMARY KEY AUTO_INCREMENT، CustomerId INT، CreatedAt Date، FOREIGN KEY (CustomerId) مراجع ارجاع مشتریان (ID) ON DELETE SET NULL).

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

مهم است که به یاد داشته باشید که محتویات ردیف و نام ستون ها باید در یک پایگاه داده منحصر به فرد باشند.

انواع داده ها در پایگاه های داده

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

  • INTEGER - داده های اعداد صحیح؛
  • FLOAT - داده های اعداد کسری، به اصطلاح داده های ممیز شناور.
  • CHAR، VARCHAR - انواع داده های متنی (نویسه)؛
  • LOGICAL - نوع داده منطقی (بله/خیر)؛
  • DATE/TIME - داده های زمان.

اینها انواع اصلی داده ها هستند که در واقع تعداد بیشتری از آنها وجود دارد. علاوه بر این، هر زبان برنامه نویسی مجموعه ای از ویژگی های سیستم (انواع داده) خاص خود را دارد.

کلید اولیه و کلید خارجی جداول پایگاه داده رابطه ای چیست؟

کلید اصلی

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

کلید اصلی (PK)برای هر میز بسیار مهم است. اجازه بدهید توضیح دهم که چرا.

  • کلید اصلی اجازه ایجاد رکوردهای یکسان (ردیف) در جدول را نمی دهد.
  • PK ها یک ارتباط منطقی بین جداول در یک پایگاه داده (برای پایگاه های داده رابطه ای) ایجاد می کنند.

ارزش دارد در مورد ارتباط منطقی بین جداول با جزئیات بیشتری صحبت کنیم.

کلید خارجی

کلید خارجی، به اختصار FK.یک ارتباط منطقی بدون ابهام بین جداول یک پایگاه داده فراهم می کند.

به عنوان مثال، دو جدول A و B وجود دارد. در جدول A (کفش)، یک کلید اصلی وجود دارد: اندازه، در جدول B (رنگ) باید ستونی به نام اندازه وجود داشته باشد. در این جدول، "اندازه" کلید خارجی برای اتصال منطقی جداول B و A خواهد بود.

مثال پیچیده تر

دو جدول داده: افراد و شماره تلفن.

جدول: مردم

جدول: شماره تلفن

در جدول Phone Numbers، PK منحصر به فرد است. FK این جدول PK جدول People است. ارتباط بین شماره تلفن و افراد توسط میزهای تلفن FK ارائه می شود. به این معنا که:

  • زایتسف دو گوشی دارد.
  • ولکوف دو گوشی دارد.
  • بلکین یک گوشی دارد.
کلید اصلی و کلید خارجی

در خاتمه اضافه می کنم که هر مدیر پایگاه داده توانایی فنی ایجاد یک کلید اصلی را دارد.



 


خواندن:



مینی تست برای تفکر فنی

مینی تست برای تفکر فنی

تشخیص جامع توانایی های عمومی نوجوانان در چارچوب آموزش تخصصی بخش سوم 3. تشخیص حوزه شناختی 3.3. تست...

ارسال آگهی فروش آپارتمان و خانه و سایر املاک به صورت رایگان ارسال آگهی فروش سریع خانه

ارسال آگهی فروش آپارتمان و خانه و سایر املاک به صورت رایگان ارسال آگهی فروش سریع خانه

فروش خانه یک فرآیند پیچیده است که نیاز به در نظر گرفتن تعدادی از تفاوت های ظریف دارد. برای تسریع روند، کارشناسان توصیه می کنند به متخصصان مراجعه کنید. با این حال...

کسب درآمد از خواندن نامه خواندن نامه اما پاداش برای

کسب درآمد از خواندن نامه خواندن نامه اما پاداش برای

ساده ترین راه برای کسب درآمد از اینترنت، جایی که می توانید شروع به کار کنید، کسب درآمد از طریق خواندن نامه های تبلیغاتی است که توسط تبلیغ کنندگان برای شما ارسال می شود...

مطالب با موضوع: برنامه کنسرت "با تمام قلبم" برنامه تلویزیونی با تمام وجود تمام قسمت ها

مطالب با موضوع: برنامه کنسرت

به طور کلی، این برنامه در مورد سرنوشت غیرقابل پیش بینی و پیچیده مردم شوروی صحبت می کرد. بیشتر بینندگان نتوانستند جلوی اشک های خود را بگیرند وقتی که...

فید-تصویر RSS