مدل های داده های فیزیکی (سطح داخلی). ایجاد و استفاده از پیش فرض ها، محدودیت ها و قوانین با T-SQL مقدار مربوط به کلید تنظیم نشده است

این مقاله درباره چیست

این مقاله ادامه مجموعه مقالات "اولین مراحل توسعه در 1C" است. اصول کار با مجموعه های عمومی را مورد بحث قرار می دهد. پس از مطالعه مقاله متوجه خواهید شد:

  • مجموعه های عمومی چیست، چه زمانی و در چه مواردی باید از آنها استفاده کرد؟
  • همه مجموعه های جهانی چه چیزی مشترک دارند؟ از چه تکنیک هایی می توان برای کار با همه آنها استفاده کرد؟
  • آرایه چیست، چگونه و چه زمانی از آن استفاده کنیم؟ او چه روش هایی دارد؟
  • چرا از ساختار استفاده کنیم؟ چه تفاوتی با آرایه دارد؟
  • چه زمانی از لیست مقادیر استفاده کنیم؟ چگونه آن را در فرم نمایش دهیم؟
  • انطباق - چیست و چه زمانی باید از آن استفاده کرد؟ مزایای ساختار چیست؟
  • جدول مقادیر برای چه مواردی استفاده می شود؟ چگونه ساختار آن را توصیف کنیم؟ چگونه خطوط را اضافه یا حذف کنیم؟ چگونه آن را به فرم بیاوریم؟
  • درخت ارزش - برای چه استفاده می شود؟ چگونه می توان فرم را پر کرد و در آن نمایش داد؟ چگونه با او کار کنیم؟

قابلیت کاربرد

این مقاله پلت فرم 1C: Enterprise 8.3 نسخه فعلی را مورد بحث قرار می دهد.

نحوه کار با مجموعه های جهانی در 1C

مجموعه مقادیر نوعی ظرف است که معمولاً می تواند هر تعداد عنصر را در خود جای دهد. در عین حال، اغلب محدودیت های سختگیرانه ای در مورد نوع داده وجود ندارد.

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

درک این نکته مهم است که مجموعه ها در پایگاه داده ذخیره نمی شوند (ما در مورد نوع داده Value Store صحبت نمی کنیم، که می تواند تقریباً هر نوع داده ای را ذخیره کند).

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

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

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

مثلا: OurArray = آرایه جدید;

سازندگان برای بسیاری از مجموعه های عمومی پارامتری هستند.

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

توضیحات مربوط به سازنده در راهنمای نحو است.

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

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

تقریباً هر مجموعه عمومی را می توان با استفاده از سازنده ایجاد کرد (به استثنای جداول که به عنوان اشیاء پیکربندی عمل می کنند).

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

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

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

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

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

برای تمامی مجموعه ها از پیمایش عناصر مجموعه استفاده می شود. دور زدن به دو صورت امکان پذیر است: چرخه برایو چرخه برای هر کدام.

برای اکثر مجموعه‌های عمومی، روش‌های زیر اعمال می‌شوند: شمارش، فهرست، افزودن، درج، حذف و یافتن.

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

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

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

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

روش Index به شما امکان می دهد تعیین کنید کدام شاخص با یک ردیف داده شده (یعنی موقعیت فعلی ردیف در جدول) مطابقت دارد. مقادیر شاخص از صفر شروع می شود.

روش‌هایی برای افزودن مقادیر جدید به این مجموعه تقریباً در هر مجموعه وجود دارد مجموعه جهانی. شکل نشان می دهد که چگونه یک آرایه را با مقادیر 0 تا 10 به دو روش پر کنید.

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

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

نحو: درج (,)

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

این روش برای حذف عناصر از یک مجموعه استفاده می شود. حذف. در متد Delete با ایندکس مشخص می شود که کدام عنصر را حذف می کنیم.

نحو: حذف()
مثال استفاده: OurArray.Delete(5);

لازم به ذکر است که برای مجموعه هایی که رشته ها یک موجودیت مستقل را نشان می دهند (به عنوان مثال، برای TableValues، همچنین می توانیم از متد get index برای حذف ردیف داده شده بعدا استفاده کنیم.

تقریباً همه مجموعه ها روشی برای یافتن مقدار دارند - پیدا کردن. به روش مقداری که می خواهیم پیدا کنیم ارسال می شود. در برخی از مجموعه ها می توانید هر محدودیتی را اعمال کنید.

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

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

مثال استفاده: OurVariable = OurArray.Find(8);

مجموعه‌های عمومی را می‌توان خیلی سریع تمیز کرد، یعنی. کاملاً تمام عناصر را حذف کنید. برای این کار از روش استفاده می شود واضح ()، که عناصر یک آرایه، رشته ها را حذف می کند TableValues، یا داده هایی از مجموعه های دیگر.

روش های اضافی برای آرایه

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

به طور خاص، متغیر NumberInArray می‌توانست متفاوت تعریف شود:

NumberInArray = OurArray.InBorder();
سپس، هنگام توصیف خود چرخه، نباید از این متغیر کم کرد.

متد Set به شما این امکان را می دهد که به یک عنصر آرایه مقداری را با شاخص اختصاص دهید.

نحو: نصب(،)

مثال: OurArray.Set(2,8);

گزینه جایگزین: OurArray = 8;

می توانید از روش برای یک آرایه استفاده کنید گرفتن، برای خواندن مقدار در شاخص بدون استفاده از براکت.

نحو: گرفتن()

مثال: OurVariable = OurArray.Get(2);

گزینه جایگزین: OurVariable = OurArray;

ساختار مجموعه جهانی

یک ساختار، مانند یک آرایه، می تواند تعداد نامحدودی عنصر داشته باشد، اما محتوای یک عنصر با یک آرایه متفاوت است.

ساختار مجموعه ای است که هر مقدار آن از یک جفت تشکیل شده است. اولین عنصر یک جفت نامیده می شود کلید. عنصر دوم جفت است معنی.

کلیدیک نوع داده کاملاً رشته ای است که یک مقدار را توصیف می کند. مثلا، کلید"کد" می تواند با مقدار 113 مطابقت داشته باشد. کلید«نام» به معنای «واسیا». هیچ محدودیتی برای نوع داده در خود Value وجود ندارد.

اگر بخواهیم لیستی از پارامترها ایجاد کنیم، ساختار بسیار راحت است. اگر این ساختارتماس گرفت ساختار ما، سپس به دو مقدار آن به صورت زیر اشاره می کنیم: OurStructure.Code و OurStructure.Name.

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

ساختار کد برنامه را قابل خواندن (قابل درک) می کند. این ساختار اغلب، بسیار بیشتر از آرایه استفاده می شود.

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

بعلاوه، در صورتی که رویه و تابع دارای تعداد زیادی پارامتر تصویب شده باشد، از Structure استفاده می شود.

سپس نوشتن تمام پارامترها در Structure و انتقال آن بسیار راحت تر است. آن ها یک "بسته بندی" از پارامترهای رویه ها و توابع وجود دارد.

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

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

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

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

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

مقدار نه در یک موقعیت خاص، بلکه در مجموعه مشخص شده درج می شود. یک Struct را نمی توان مانند سایر مجموعه های عمومی با نمایه ارجاع داد.

به عناصر ساختار فقط با نام کلید اشاره می شود. با این حال، حلقه For each of برای Structure نیز کار می کند، اما نباید به ترتیب عناصر ساختار تکیه کنید.

یک ساختار مانند سایر مجموعه‌های عمومی با استفاده از سازنده New ایجاد می‌شود که نوع داده ساختار را مشخص می‌کند.

مانند یک آرایه، سازنده یک Struct می تواند پارامترهایی داشته باشد. آن ها می توان محتویات خود ساختار را با استفاده از سازنده توصیف کرد.

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

مثلا: OurStructure = New Structure("Code,Name", 133, "Vasya");

ابتدا نام کلیدها با کاما از هم جدا شده و سپس به ترتیب در همان دنباله مقادیر پارامترها ذکر می شود.

برای افزودن یک مقدار جدید به ساختار، روشی وجود دارد درج کنید، که یک جفت جدید (Key و Value) را وارد می کند.

مثلا: OurStructure.Insert("Family Members",3);

ساختار با روش دیگری مشخص می شود که اغلب استفاده می شود. این روش است ویژگی.

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

اگر چنین عنصری وجود داشته باشد، سیستم True و در غیر این صورت False را برمی گرداند.

مثلاً عبارت OurStructure.Property («اعضای خانواده»)برابر True خواهد بود. این روش اغلب در تجزیه و تحلیل ساختار استفاده می شود.

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

مثلا: گزارش (ساختار ما["اعضای خانواده"]);

با این حال، نباید فراموش کرد که یک ساختار مجموعه ای مرتب از اشیاء نیست، به همین دلیل است که دسترسی با شاخص 0، 1، 2 غیرقابل قبول است.

فهرست مجموعه‌های عمومی ارزش‌ها

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

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

ستون اول - علامت گذاری. این یک نوع داده بولی دارد و به کاربر این امکان را می دهد که کادرها را علامت بزند یا علامت آنها را بردارید.

ستون دیگر تصویری است که به نوعی می تواند این عنصر را به صورت بصری به تصویر بکشد. این خط را با هر تصویری مطابقت دهید.

ستون سوم خود مقدار ذخیره شده است، یعنی. این هر نوع داده ای است و می تواند در ردیف های مختلف متفاوت باشد.

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

فهرست ارزش ها- این شیئی است که کاربر می تواند به صورت بصری با آن کار کند. آن ها فهرست ارزش هارا می توان در فرم نمایش داد.

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

بیایید پیدا کنیم فهرست ارزش هادر sitax helper. سازنده فهرست ارزش هاپارامتر نشده (هیچ مقدار پیش فرضی را نمی توان تنظیم کرد).

روش هایی مانند:

  • Insert(,) ;
  • اضافه کردن(،)؛
  • تعداد()؛
  • فهرست مطالب().

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

ArrayElements = ListPriceTypes.UnloadValues();

یک روش معکوس نیز وجود دارد:
PriceTypeList.LoadValues(ElementsArray);

روش های جستجو وجود دارد:
FindByValue(); FindByIdentifier().

یک روش کپی وجود دارد:
CopyList = ListPriceTypes.Copy();
این روشبرای ایجاد نوعی اصلاح با یک کپی در نظر گرفته شده است.

روش هایی وجود دارد:
SortByValue();
SortByView().

مواد و روش ها SelectItem(,)و MarkItems()یک کادر محاوره ای مدال را فراخوانی کنید که اجرای الگوریتم را تا زمانی که کاربر این پنجره را ببندد متوقف می کند.

برای استفاده از این روش ها در ویژگی های پیکربندی حالت استفاده از روشباید تنظیم شود استفاده کنید.

کد نمونه فراخوانی شده از یک ماژول برنامه مدیریت شده:

این کد را در حالت کاربر (باکس محاوره ای مدال) نمایش دهید.

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

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

در حالت کاربر، وقتی روی دکمه پر کردن هدایا در فرم پردازش کلیک می کنید، یک لیست تکمیل شده ظاهر می شود.

در صورت تمایل، لیست را می توان ویرایش کرد: برخی از عناصر را اضافه کنید، برخی را حذف کنید.

انطباق مجموعه جهانی

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

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

کلید می تواند یک نوع داده غیر از رشته باشد. ویژگی‌ها و روش‌های کار با Matching تقریباً مشابه ویژگی‌های Structure است.

Match Constructor بر خلاف Struct دارای قابلیت تعیین پارامترها نیست.

مثال استفاده:

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

هنگام درج عناصر در مجموعه Match غیر از روش درج (,)راه دیگری برای درج مقدار وجود دارد و آن استفاده از عملگر انتساب معمولی است.

مثلا: OurMatch = مسابقه جدید;
مطابقت = 999;

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

این با ساختار متفاوت است.

مجموعه عمومی جدول مقادیر

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

می‌توانید ستون‌ها را بدون تایپ رها کنید، سپس همان ستون در ردیف‌های مختلف می‌تواند مقادیر انواع مختلف را ذخیره کند.

تفاوت TableValuesاز یک آرایه دو بعدی:

  • این شیئی است که کاربر می تواند با آن کار کند (جدول مقادیر را می توان روی صفحه نمایش داد، کاربر می تواند آن را پر کند، در آینده می توان داده های وارد شده را خواند).
  • ایجاد فهرست برای جستجوی سریع؛
  • شبیه سازی، پر کردن کل ستون با یک مقدار مشخص، تخلیه تمام ستون ها در یک آرایه.

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

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

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

انواع داده های پشتیبانی شده: خودش جدول ارزش، که از رشته ها تشکیل شده است. هر ردیف با یک نوع داده نشان داده می شود RowTableValues، که خواص و روش های خاص خود را دارد. در دسترس CollectionColumns TableValuesهمچنین دارای خواص خاصی است.

نکته مهم! رویه ای که ایجاد می کند جدول ارزش، باید کامپایل و OnServer باشد.

قبل از شروع کار با جدول ارزش، باید تعیین کنید که کدام ستون ها را شامل شود (یعنی آنها را ایجاد کنید). نحو:

اضافه کردن(،)
(اختیاری)
نوع: رشته
(اختیاری)
نوع: شرح انواع
(اختیاری)
نوع: رشته
(اختیاری)
نوع: شماره

مثلا:

برای فراخوانی این رویه از دستور استفاده می کنیم.

در توضیحات TableValuesهمانطور که عناصر مجموعه دقیقا هستند RowsTableValues.

برخلاف ستون‌ها که فقط از ویژگی‌ها (نام، نوع، عنوان، عرض) تشکیل شده‌اند، در RowTableValuesهم ویژگی (ارجاع بر اساس نام ستون) و هم روش وجود دارد (شما می توانید یک مقدار را دریافت و تنظیم کنید، با مالکان کار کنید).

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

برای تخصیص یک مقدار به یک ستون، به آن با نام ستون یا شاخص (با استفاده از کروشه) که با یک نقطه از هم جدا شده اند، اشاره می کنیم.

برای پر کردن TableValuesمی توان از روش های زیر استفاده کرد:

واضح ()- برای حذف تمام ردیف ها از TableValues.

FillValues(,)- به شما امکان می دهد تمام ستون ها یا ستون های انتخاب شده را با یک مقدار پر کنید.
LoadColumn(,)- یک ستون را از یک آرایه بارگذاری می کند.
UnloadColumn()- یک ستون را در یک آرایه تخلیه می کند.

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

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

می توانید ساختار را کپی کنید TableValues. یک روش مربوطه برای این وجود دارد. CopyColumns(). خالی دریافت خواهیم کرد جدول ارزشبا ساختار مورد نظر

AT جدول ارزشیک روش وجود دارد جمع(). می توانید ستونی را که می خواهید مقادیر عددی را در آن جمع کنید مشخص کنید. با توجه به کد نشان داده شده قبلی در جدول، می توانید مقدار را محاسبه کنید: TK.Total ("جمع").

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

با توجه به کد نشان داده شده قبلی در جدول، می توانید مقدار را محاسبه کنید: TK.Collapse ("روز هفته"، "مقدار").

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

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

پس از آن، جدول به دست آمده باید در فرم نمایش داده شود.

در ماژول فرم، در انتهای الگوریتم قبلاً کامپایل شده (در رویه ایجاد جدول مقادیر)، اضافه کنید:
ValueVFormData (TK، جدول)؛

مجموعه عمومی درخت ارزش ها

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

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

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

بیایید دستور Tree مناسب و رویه پردازش آن را ایجاد کنیم.

بیایید ایجاد کنیم که در آن یک ردیف والد و دو ردیف فرعی وجود دارد.

یک ویژگی فرم ایجاد کنید DerZn(نوع داده - درخت ارزش).

برای این ویژگی، ستون های سال و ماه را ایجاد می کنیم.

عنصر مربوطه را حرکت دهید DerZnبه فرم

در پایان Procedures TreeOnServer()اضافه کردن:

ValueVFormData(TreeZn، DerZn);

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

با دکمه اضافه کردنمی توانید خطوط جدید اضافه کنید آنها همچنین می توانند یک سلسله مراتب تشکیل دهند.

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

این اولین معرفی ما به مجموعه های جهانی را به پایان می رساند.

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

به شرح زیر ساخته شده است. دنباله رکوردهای مربوط به رکوردهای جدول منبع با مقادیر کلید اصلی مرتب می شود. رکوردهای منطقی در بلوک ها (k رکورد در بلوک) ترکیب می شوند.

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

روش کار با درخت B را با استفاده از یک مثال در نظر بگیرید. اجازه دهید فایلی از نمونه های رکوردهای منطقی وجود داشته باشد که کلیدهای آن مقادیر 2، 7، 8، 12، 15، 27، 28، 40، 43، 50 را می گیرند. برای قطعیت، k=2 را می گیریم (ما ترکیب 2 ثبت نمونه). نمونه ساخته شده برای این مثال در شکل نشان داده شده است. 9.7 (برای ساده کردن شکل، فقط کلیدهای رکوردهای منطقی در سطح 4 ارائه شده است و مقادیر سایر فیلدهای این رکوردها ارائه نشده است).


برنج. 9.7.

بلوک ها حاوی مقدار کلید بلوک مربوطه هستند. مقدار k برابر با 2 در نظر گرفته می شود.

با ساختن B-tree، تمام رکوردهای منبع در فاصله یکسانی از شاخص بالایی قرار دارند (درخت متعادل است).

بیایید اجرای عملیات اصلی را در نظر بگیریم.

جستجو و خواندن رکورد از مقدار را تنظیم کنیدکلید

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

ما فرض می کنیم که تمام بلوک ها در VP قرار دارند. سپس تعداد تماس با VI هنگام جستجوی اطلاعات برابر با تعداد سطوح درختی خواهد بود. تعداد سطوح درختی برابر با حداقل مقدار l است که در آن شرط k l >= N (N تعداد رکوردهای منطقی است) برآورده می شود.

اصلاح (اصلاح) رکورد

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

حذف یک ورودی

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

افزودن یک ورودی

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

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

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

مثال نشان داده شده در شکل را در نظر بگیرید. 9.7، اضافه کردن یک ورودی با کلید 10.

1. مقایسه در سطح اول.

حرکت در شاخه چپ

2. مقایسه در سطح دوم.

حرکت در شاخه چپ

3. مقایسه در سطح سوم.

حرکت در امتداد شاخه سمت راست.

بلوک مورد نظر

4. بلوک پر است.

به 2 بلوک تقسیم شده است

مقایسه 8<10<12.

رکورد با کلید 10 در بلوک 1 وارد می شود

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

5. یک ورودی با کلید سطح 3 12 باید به بلوک اضافه شود. بلوک پر است، به دو بلوک تقسیم شده است

مقایسه 8<12.

ورودی به بلوک دوم اضافه می شود

6. در سطح 3 یک بلوک با یک کلید جدید 8 ظاهر شده است که لازم است یک ورودی جدید با کلید 8 و یک اشاره گر به بلوک مربوطه سطح 3 در سطح 2 اضافه شود.

7. یک ورودی با کلید سطح 2 8 باید به بلوک اضافه شود. بلوک پر است، به دو بلوک تقسیم شده است.

ورودی به بلوک 1 اضافه می شود.

8. در سطح 2، یک بلوک با یک کلید جدید 15 ظاهر شده است، لازم است یک ورودی جدید با کلید 15 و یک اشاره گر به بلوک مربوطه سطح 2 در سطح 1 اضافه شود.

پیش فرض ها، محدودیت ها و قوانین - اینها ویژگی های اختیاری هستند که می توانند در ستون ها و جداول پایگاه داده تعریف شوند. در سکوت(مقادیر پیش فرض) - اینها مقادیری هستند که در یک ستون خاص وارد می شوند. محدودیت های(محدودیت ها) به عنوان راهی برای شناسایی مقادیر معتبر برای یک ستون (برای رد مقادیر نامعتبر)، و همچنین ابزاری برای اطمینان از یکپارچگی داده ها در جداول پایگاه داده و بین جداول مرتبط استفاده می شود. محدودیت فقط در یک ستون، محدودیت مقدار (ستون) نامیده می شود: فقط مقادیر آن ستون را محدود می کند. محدودیتی که بر چندین ستون تأثیر می گذارد، محدودیت ارجاعی نامیده می شود: در این مورد، ترکیب مقادیر برای ستون های مشخص شده در محدودیت باید الزامات محدودیت را برآورده کند. پنج نوع محدودیت وجود دارد: NOT NULL، UNIQUE، PRIMARY KEY، FOREIGN KEY و CHECK.

مقدار صفر(مقدار تهی) یک مقدار ناشناخته است که نماد NULL برای آن اعمال می شود . مقدار تهی در یک ستون معمولاً به این معنی است که هیچ داده ای برای ردیف آن ستون وجود ندارد زیرا مقدار آن ناشناخته است، یا معنی ندارد، تنظیم نشده است، یا در آینده تنظیم خواهد شد. مقادیر تهی مقادیر خالی نیستند و مقادیر عدد 0 نیستند، مقادیر واقعی آنها ناشناخته (ناشناخته) هستند، بنابراین هیچ دو مقدار تهی برابر نیستند.

IDENTITY دارایی. هنگامی که یک جدول ایجاد می کنید، می توانید با افزودن ویژگی IDENTITY به تعریف ستون، یکی از ستون ها را به عنوان ستون هویت مشخص کنید. اگر ستونی با ویژگی IDENTITY ایجاد شود، SQL Server به طور خودکار یک مقدار ردیف برای آن ستون ایجاد می کند که از مقدار شروع و مقدار افزایشی محاسبه می شود. مقدار seed مقدار هویت برای اولین سطر درج شده در جدول است. افزایش مقداری است که SQL Server مقدار هویت را برای ردیف های متوالی افزایش می دهد. هر بار که یک ردیف وارد می شود، SQL Server مقدار هویت فعلی را به عنصر داده در ستون هویت وارد شده در ردیف جدید اختصاص می دهد. خط بعدی وارد شده یک مقدار هویتی دریافت می کند که از حداکثر مقدار هویت فعلی با یک افزایش بیشتر است. ستون‌های هویت معمولاً در محدودیت‌های کلید اولیه در جداول استفاده می‌شوند که به ردیف‌ها اجازه می‌دهد به طور منحصربه‌فرد شناسایی شوند. برای مثال، اگر IDENTITY(1, 10) را مشخص کنید، مقدار ستون شناسایی برای سطر اول وارد شده 1، برای سطر دوم 10، برای سطر سوم 20 و غیره خواهد بود. . اگر مقدار شروع یا افزایشی را مشخص نکنید، از مقادیر پیش‌فرض 1 و 1 استفاده می‌کنند. هر جدول می تواند تنها یک ستون شناسایی داشته باشد.


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

SET IDENTITY INSERT table.name روشن است

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

SET IDENTITYINSERT table_name خاموش است

پس از آن، SQL Server بزرگترین مقدار را از این ستون به عنوان مقدار اولیه استفاده شده در هنگام اضافه کردن ردیف های زیر می گیرد.

یک پیش فرض ایجاد کنیدبرای ستونی که از دستور CREATE TABLE استفاده می کند، روش استاندارد و ترجیحی است. عبارت زیر یک جدول در پایگاه داده MyDB ایجاد می کند که شامل پیش فرض های هر دو ستون، ستون A (از نوع char) و ستون B (از نوع int) است:

جدول MyTable را ایجاد کنید

(columnA char(15) NULL DEFAULT "Pcs"،

ستون B int NULL پیش فرض 0)

مقدار پیش‌فرض "pcs" برای ستون A با نوع داده char آن ستون و مقدار پیش‌فرض 0 برای ستونB با نوع داده int سازگار است. اگر هنگام درج یک ردیف جدید در جدول، مقدار خاصی برای یک یا هر دو ستون مشخص نشده باشد، از مقدار پیش فرض مناسب استفاده می شود. بنابراین، تنها راه اختصاص NULL به این ستون ها، درج صریح NULL است. مقادیر تهی معتبر هستند زیرا ویژگی NULL برای هر دو ستون مشخص شده است. اگر ستون ها به صورت NOT NULL تعریف شده بودند، نمی توانید به صراحت مقدار NULL را وارد کنید.

محدودیت کلید اولیهبرای تعیین کلید اصلی جدول استفاده می شود، که یک ستون یا مجموعه ای از ستون ها است که به طور منحصر به فرد یک ردیف جدول را مشخص می کند. از آنجا که کلید اصلی یک ردیف را مشخص می کند، ستون مربوطه هرگز حاوی مقدار NULL نخواهد بود. اگر یک محدودیت PRIMARY KEY را روی مجموعه ای از ستون ها تعریف کنید، این محدودیت مشخص می کند که ترکیب مقادیر برای آن ستون ها باید برای هر ردیف منحصر به فرد باشد. محدودیت PRIMARY KEY اجازه مقادیر تکراری را نمی دهد. اگر یک محدودیت PRIMARY KEY به یک ستون یا مجموعه ای از ستون ها اختصاص داده شود، یک شاخص منحصر به فرد به طور خودکار روی آن ستون یا ستون های کلید اصلی ایجاد می شود. یک جدول فقط می تواند یک محدودیت کلید اصلی داشته باشد. ستونی با ویژگی IDENTITY برای کلید اصلی مناسب است. دستور T-SQL زیر یکی از راه‌های تعیین ستون SSN به عنوان کلید اصلی هنگام تعریف جدول است.

مشتری جدول ایجاد کنید

midinit char(1) NULL،

last_name char(20) NOT NULL،

Custom_phone char (10) NULL)

همچنین می‌توانید این محدودیت را با افزودن کلیدواژه CONSTRAINT نامگذاری کنید. برای اختصاص نام PK_SSN به محدودیت کلید اصلی خود، از عبارت زیر استفاده کنید:

مشتری جدول ایجاد کنید

(first_name char(20) NOT NULL،

midinit char(1) NULL،

last_name char(20) NOT NULL،

SSN char(11) CONSTRAINT PK_SSN PRIMARY KEY،

cust_phone char (10) NULL)

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

مشتری جدول ایجاد کنید

(first_name char(20) NOT NULL،

midinit char(1) NULL،

last_name char(20) NOT NULL،

cust_phone char(10) NULL،

کلید اصلی محدودیت PK_SSN (SSN))

محدودیت منحصر به فردتضمین می کند که هیچ مقدار تکراری در یک ستون یا مجموعه ای از ستون ها مجاز نیست. به عبارت دیگر، منحصر به فرد بودن مقادیر در این ستون یا مجموعه ستون ها تضمین می شود. برای پشتیبانی از این منحصربه‌فرد بودن، SQL Server به‌طور پیش‌فرض، یک فهرست منحصربه‌فرد روی ستون یا ستون‌های مشخص‌شده در محدودیت UNIQUE ایجاد می‌کند. یک محدودیت UNIQUE را می توان بر روی هر ستونی که بخشی از یک محدودیت PRIMARY KEY نیست استفاده کرد. یک محدودیت UNIQUE را می توان در ستون هایی استفاده کرد که مقادیر تهی را مجاز می کنند، در حالی که محدودیت های کلید اصلی را نمی توان در چنین ستون هایی استفاده کرد. ستونی با محدودیت UNIQUE را می توان با یک محدودیت FOREIGN KEY ارجاع داد. محدودیت‌های UNIQUE متعدد را می‌توان روی یک جدول تنظیم کرد، تا زمانی که تعداد کل فهرست‌های آن جدول از 250 نمایه تجاوز نکند.

برای ایجاد یک محدودیت UNIQUE روی جدول با استفاده از T-SQL، از دستور CREATE TABLE استفاده کنید. به عنوان مثال، عبارت زیر یک جدول مشتری با یک محدودیت UNIQUE در ستون SSN به عنوان یک شاخص ایجاد می کند:

مشتری جدول ایجاد کنید

(first_name char(20) NOT NULL،

midinit char(1) NULL،

last_name char(20) NOT NULL،

SSN char(11) NOT NULL UNIQUE CLUSTERED،

cust_phone char (10) NULL)

محدودیت را بررسی کنیدبرای محدود کردن مجموعه مقادیر مجاز برای یک ستون به مقادیر خاص استفاده می شود. مقادیری که هنگام درج در یک ستون یا به‌روزرسانی یک ستون استفاده می‌شوند، در برابر حقیقت (مقدار TRUE) شرط جستجوی Boolean مشخص شده در محدودیت بررسی می‌شوند. به عنوان مثال، اگر بخواهیم محدوده مقادیر ممکن مجاز برای ستون قیمت جدول اقلام را بین 0.01 تا 500.00 دلار محدود کنیم، از عبارت زیر استفاده می کنیم:

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

(نام مورد char(15) NOT NULL،

itemid smallint NOT NULL IDENTITY(1,1)

قیمت کوچک پول NULL،

item_desc varchar(30) NOT NULL DEFAULT "none",

CONSTRAINT PK_ itemid PRIMARY KEY (مورد)،

CONSTRAINT CK_price CHECK (قیمت >=0.01 و قیمت<= 500.00))

ایجاد و اصلاح محدودیت ها با استفاده از Management Studio

برای ایجاد جدول، پوشه سرور و پوشه پایگاه داده را در قسمت سمت چپ مدیریت استودیو گسترش دهید، روی پوشه Tables کلیک راست کرده و سپس از منوی زمینه، New Table را انتخاب کنید. برای نمایش پنجره Design Table برای یک جدول موجود، ابتدا روی پوشه Tables کلیک کنید، روی نام آن جدول در قسمت سمت راست کلیک کنید و سپس از منوی زمینه، Design Table را انتخاب کنید.

برای نشان دادن استفاده یا عدم استفاده مقادیر تهی در هر ستون، به سادگی کادر مربوطه را در ستون Allow Nulls پنجره Design Table علامت بزنید یا علامت آن را بردارید. شما می توانید این گزینه را هنگام ایجاد جدول یا هنگام تغییر آن تنظیم کنید.

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

1. در نوار ابزار پنجره Design Table، روی دکمه Indexes/Keys کلیک کنید.

  1. پنجره زیر ظاهر می شود که به شما امکان ایجاد، ویرایش و حذف محدودیت های مرتبط با کلیدهای اصلی و منحصر به فرد را می دهد

نام ستون هایی را که می خواهید در محدودیت قرار دهید انتخاب کنید و ویژگی های آن را تعریف کنید.

می توانی بپرسی محدودیت کلید اولیه یک ستون یا چند ستون این ستون یا ستون‌ها باید هر سطر در جدول را به طور منحصربه‌فرد شناسایی کنند. برای تنظیم یک محدودیت کلید اولیه، این مراحل را دنبال کنید:

  1. در پنجره Design Table، ستونی را با کلیک بر روی یکی از سلول های ردیف آن انتخاب کنید. (می توانید با نگه داشتن کلید Ctrl و کلیک روی سلول های خاکستری سمت چپ نام ستون ها، چندین ستون را انتخاب کنید.)

  1. روی یکی از ستون های انتخاب شده کلیک راست کرده و از منوی زمینه گزینه Set Primary Key را انتخاب کنید. تصویری از یک کلید کوچک در سمت چپ ستون هایی که برای کلید اصلی تعریف کرده اید ظاهر می شود.
  2. اگر می خواهید محدودیت کلید اصلی را به ستون دیگری منتقل کنید، به سادگی این ستون جدید را به عنوان کلید اصلی تنظیم کنید. لازم نیست ابتدا کلید اصلی اصلی را به صراحت حذف کنید - SQL Server فهرست کلید اصلی را حذف کرده و دوباره برای شما ایجاد می کند. همچنین می توانید شاخص کلید اصلی را در پنجره Properties تغییر دهید. تغییرات شما پس از ذخیره کار خود با کلیک بر روی دکمه ذخیره در نوار ابزار اعمال می شود.

خلق كردن محدودیت را بررسی کنید با استفاده از پنجره Design Table، این پنجره را برای جدولی که می خواهید با آن کار کنید باز کنید و مراحل زیر را دنبال کنید.

1. روی پنجره Design Table کلیک راست کرده و از منوی زمینه گزینه Properties را انتخاب کنید تا پنجره Properties نمایش داده شود. روی تب Check Constraints کلیک کنید و روی دکمه New برای جدول کلیک کنید.

3. به سه چک باکس پایین این پنجره توجه کنید. بررسی چک باکس بررسی داده های موجود در ایجاد به این معنی است که داده های موجود جدول در برابر محدودیت CHECK بررسی می شوند و اگر مطابقت نداشته باشند، محدودیت ایجاد نمی شود. چک باکس Enforce constraint for replication به این معنی است که این محدودیت زمانی که داده ها تکرار می شوند بررسی می شود. علامت زدن کادر انتخاب Enforce constraint for Inserts and UPDATEs به سادگی به این معنی است که محدودیت CHECK فعال خواهد شد. اگر این کادر را علامت ندهید، این محدودیت ایجاد می شود، اما فعال نمی شود، یعنی. هیچ تاثیری نخواهد داشت

4. روی دکمه Close و سپس دکمه Save کلیک کنید تا محدودیت جدید ذخیره شود. برای تغییر یک محدودیت CHECK، از تب Check Constraint برای تغییر نام محدودیت، عبارت Constraint و پرچم ها استفاده کنید.

همچنین می‌توانید با انتخاب نام محدودیتی که می‌خواهید از فهرست محدودیت انتخاب شده حذف شود و روی دکمه حذف کلیک کنید، از تب Check Constraints برای حذف یک محدودیت CHECK استفاده کنید.

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

  1. عنوان و هدف کار
  2. وظیفه فردی
  3. اسکریپت هایی برای ایجاد یک نوع داده سفارشی و جداول پایگاه داده، مطابق با یک کار فردی

سوالات تستی

  1. لیست انواع داده های پشتیبانی شده؟
  2. نوع داده سفارشی هدف و روش های خلقت؟
  3. راه های تعریف جداول؟
  4. تعیین پیش فرض ها، قوانین و محدودیت ها؟
  5. لیستی از پیش فرض های پشتیبانی شده، محدودیت ها، قوانین؟
  6. روش هایی برای تخصیص پیش فرض ها، محدودیت ها، قوانین
  7. ارزش صفر چیست؟
  8. ویژگی ستون IDENTITY؟

n. (pzegt (زمان صفحه (K, h))

مقدار h را در شیء n در موقعیت قرار می دهد که با کلید 1c برچسب گذاری شده است.

اگر از قبل یک مقدار ieuportable مربوط به کلید 1c وجود داشته باشد، آن را تغییر نمی دهد. یک شی از نوع پمفلت::stringtor, boo1> را برمی‌گرداند که جزء اول آن با کلید داده شده به عنصر اشاره می‌کند و دومی نشان می‌دهد که آیا عنصر جدیدی درج شده است یا خیر. به این نکته توجه کنید که طبق والس سمت راست، pa1 r یک شی از نوع pa(r sk, h) تولید می کند که پس از شروع تابع snzegm به یک شی از نوع raz r تبدیل می شود.

p.uzpb (1s)

یک pterator را برمی‌گرداند که به عنصر (در صورت وجود) که با کلید 1c پوشانده شده است پیوند می‌دهد. اگر چنین عنصری وجود نداشته باشد، مقدار n.enb0 را برمی‌گرداند. یک شی typ r ایجاد می‌کند که کلید و مقداری را که این upoch با آن ادغام شده است، در موقعیتی که توسط تکرارکننده me نشان داده شده است، ایجاد می‌کند. بنابراین، عنصر me->r(gm از نوع cont k است و یک کلید ارائه می دهد، و عنصر me->jesnb از نوع y است و مقدار مربوط به این کلید را نشان می دهد.

ب.ز. الگوریتم ها

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

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

شامل اعلامیه های الگوریتم های عمومی است

acppite (b، e، t)

accipate (b، e، t، r)

در عنوان خالی شده است. یک شی موقت o1y با همان نوع و مقدار شی m ایجاد می کند. برای هر ورودی تکرار کننده me در محدوده (b, e)، ady" = aby + *mt یا aby" = T(ab)" را محاسبه می کند. *3m)، بسته به شکل تابع accpplyate که فراخوانی شده است. نتیجه یک کپی از شیء aby است. توجه داشته باشید که چون عملگر "+" می تواند بیش از حد بارگذاری شود، حتی اولین شکل تابع accpplyate می تواند روی غیر فعال شود. -انواع ساخته شده.نوع arithmeticguskill به عنوان مثال، ما می توانیم از الگوریتم Assppp1ate برای به هم پیوستن تمام رشته ها در کپی استفاده کنیم.

ب.ز. الگوریتم ها

b(na~y sevgsp(b، e، c)

مقداری از نوع boo1 را برمی‌گرداند که نشان می‌دهد آیا مقدار c متعلق به (مرتب‌سازی‌شده) Paslglobalness تعیین‌شده توسط تکرارکننده‌های یک‌طرفه b و e است.

کپی (ب، ه، ب)

مقادیر توالی مشخص شده توسط تکرار کننده های ورودی b و e را در ناحیه مقصد که تکرار کننده d نامیده می شود کپی می کند. مقداری را برمی‌گرداند که موقعیت پشت آخرین عنصر گیرنده را مشخص می‌کند

epv1(b، e، b2)

epv1(b، e، b2، p)

یک مقدار نمایی از نوع bao1، که نشان می دهد آیا عناصر مرتبه بزرگی داده شده توسط تکرار کننده های ورودی b و e برابر با عناصر دنباله ای هم اندازه هستند که ابتدای آن توسط تکرار کننده ورودی b2 به دست می آید یا خیر. از گزاره p برای آزمایش استفاده می کند، یا اگر گزاره p مشخص نشده باشد از عملگر "=" استفاده می کند.

H 11 (b، e، c)

عناصر نابینایی داده شده توسط تکرار کننده های سگ b و e را برابر با مقدار c قرار می دهد. مقدار r(nb(b, e, c) را برمی‌گرداند

r(n0 (r(b، e، p)

یک iterpore را نشان می‌دهد که اولین تکرار مقدار c را نشان می‌دهد، یا تکرارکننده‌ای که به عنصری اشاره می‌کند که گزاره p برای آن درست است (اگر یک داده شده باشد) در دنباله داده‌شده توسط تکرارکننده‌های b و e. اگر آن عنصر درست نباشد e را برمی‌گرداند. وجود داشته باشد

1ex(condgvr sv1 conpvge(b, e, b2, e2)

1ex(condgvp(c1 conp(b, e, b2, e2, p)

یک مقدار bool را برمی‌گرداند که نشان می‌دهد آیا توالی عناصر در محدوده [b، e) کمتر از توالی عناصر در محدوده [b2، e2 است). برای مقایسه عناصر، از گزاره p یا عملگر استفاده کنید.

پی وی سی (s1, s2)

مقادیر k3 بزرگتر (دو تابع pvc) یا کوچکتر (از نظر تابع bn) را که توسط آرگومان های c1 و c2 داده شده است را برمی گرداند که هر دو دارای pvc pdig از نوع e1epeps(b.e) nmp e1epeps(b, e) یک تکرار کننده را نشان می دهد. به بزرگترین (کوچکترین) یک عنصر در پاستلگ پذیری داده شده توسط عناصر بازی یک طرفه b نیست

ضمیمه B کتابخانه استاندارد(بررسی کوتاه)