آموزش دات نت, بانک های اطلاعاتی

آموزش برنامه نویسی دات نت

آموزش دات نت, بانک های اطلاعاتی

آموزش برنامه نویسی دات نت

One To One - Relationship

One-to-One Relationships

In a one-to-one relationship, a row in table A can have no more than one matching row in table B, and vice versa. A one-to-one relationship is created if both of the related columns are primary keys or have unique constraints.

This type of relationship is not common because most information related in this way would be all in one table. You might use a one-to-one relationship to:

  • Divide a table with many columns.

  • Isolate part of a table for security reasons.

  • Store data that is short-lived and could be easily deleted by simply deleting the table.

  • Store information that applies only to a subset of the main table.

The primary key side of a one-to-one relationship is denoted by a key symbol. The foreign key side is also denoted by a key symbol.

در رابطه یک به یک یا One to One-ستون های ارتباطی یا Relation Columns هر دو Primary Key کلید اصلی یا Uniqe Constraint هستند

در این Relation جدول A بیشتر از یک سطر متناسب Match Row نمیتواند در جدول B داشته باشد.

 این نوع Relation عمومی نیست و به دلایلی استفاده میشود.

۱- ۱ جدول با ستون های بسیار زیاد برای سهولت کار و دید بهتر آن جدول را به دو جدول تقسیم میکنیم.

۲-Isolateکردن جدول به دلایل امنیتی.

۳- اطلاعات که ارزش کمتری دارند و عمر کوتاهی دارند را به راحتی میتوان با Delete کردن جدول فرعی پاک کرد

اطلاعات مهم را میتوان در Main Table یا جدول اصلی نگه داشت.

Relation Ships-One-to-Many

Relation ارتباط بین جداول می باشد مثلا در شکل بالا جدول Employees یا کارمندان  جدول Master

و جدول EmployeesWorkTimes جدول ورود و خروج کارمندان جدول Detail میباشد این دو جدول با یکدیگر رابطه One To Many دارند طوری که مقادیر PersonalID در جدول EmployeesWorkTimes از جدول Master آن یعنی Emplyees میآید و این به این معنی است که تنها کارمندانی که در جدول Employees ثبت شده اند میتوانند ساعت ورود و خروج داشته باشند.این ارتباط در جدول Master روی Primary Key , فیلد Uniqe برقرار میشود  یعنی ۱ سمت حتما باید Uniqe باشد. به فیلد PersonalID در جدول Childیا EmployeesWorkTimesکلید خارجی یا Forign Key میگویند و فیلد PersonalID در جدول Master که همان جدول کارمندان است کلید اصلی یا Primary Key گفته میشود.

 

One-to-Many Relationships

A one-to-many relationship is the most common type of relationship. In this type of relationship, a row in table A can have many matching rows in table B, but a row in table B can have only one matching row in table A. For example, the publishers and titles tables have a one-to-many relationship: each publisher produces many titles, but each title comes from only one publisher.

Make a one-to-many relationship if only one of the related columns is a primary key or has a unique constraint.

The primary key side of a one-to-many relationship is denoted by a key symbol. The foreign key side of a relationship is denoted by an infinity symbol.

 

Create Trigger

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION

...,AS { sql_statement  [ ; ] [ ...n ] | EXTERNAL NAME

Triggerیک Object در Database است که میتواند Event هایی که در Database بوجود می آید را مدیریت کند و پس از دستور Insertیا Update یا Delete یک کد های شما را اجرا کند.

این کار باعث میشود دسته محصولات شرکت Northwind را نتوان Delete کرد و با Delete کردن هر یک از این محصولات Error ایی مشابه این Error را دریافت کنید:

Trigger در واقع Query شما را بعد از Update , Insert , Delete به اجرا در می آورد.

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

 

جابجایی فایل های دیتا بیس

چند نکته:

SQL Server هایی که روی سرور نصب میشوند فایل های Database رو قفل می کنند به این معنی که هیچ کاربری نمیتواند این فایل هارا Copy یا Delete کند اما در SQL Express فایل ها در مدت Service دادن به Connection ها قفلند.در هر نسخه SQL Server اگر Service  رو Stop کنیم فایل ها از قفل خارج میشوند و اگر دوباره سرویس را Start کنیم فایل ها دوباره قفل می شوند. اگر ۴ تا Database سیستم را درستکاری کنیم SQL server بالا نمی آید.

جابجایی Database:

۱- از طریق فایل ها (حداقل ۲تا)  ۲-با Back up گرفتن و Restore کردن در مقصد ۳- Execute کردن Script ها در مقصد.

ایجاد جدول Create Table

ایجاد یک جدول جدید:


 
مانند تصویر بالا از پنل Object Explorer روی Databases کلیک کنید سپس Database مورد نظر را که در اینجا Test میباشد انتخاب می کنیم
از منوی Right Click روی گزینه New Table کلیک می کنیم.حالت زیر ایجاد میشود:


 
و این Tab تشکیل میشود.در اینجا ما برای شروع یک جدول که مهمترین عنصر Database است را ایجاد میکنیم اطلاعات در Database در این جداول نگهداری میشود.جزئیات به این صورت که هر جدول یک سری ستون داره(Column) که ما اولین ستون رو درست میکنیم به این صورت :

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


RDBMS SQL Server

RDBMS Sql Server

RDBMS مکانی برای ذخیره ویرایش و فراخوانی اطلاعات است چیزی که در هر پروژه نرم افزاری مورد نیاز است SQL Server که RDBMS معروف Microsoft است و روی پورت ۱۴۳۳ تحت شبکه سرویس می دهد و مانند یک سرویس عمل میکند که با بالا آمدن ویندوز شروع به کار میکند و به Query هایی که به این پورت فرستاده میشود پاسخ میدهد سرعت و امنیت بالا از خصوصیات Sql server هست.

database جایی که ما نیاز داریم اطلاعات را در اون Insert , Update یا Delete کنیم و برای فراخوانی آنها را Select کنیم.

در اینجا سعی می کنیم که یک Database بسازیم:

۱- Management Studio را اجرا می کنیم در یکی از نسخه ها یا Instance های SQL server که بصورت default یا پیش فرض Sqlexpress در نسخه Expressاست login می کنیم

2- روی Databases کلیک راست کرده و New Database را کلیک میکنیم

۳-نام database را وارد می کنیم و Owner انرا مشخص میکنیم (توضیحات بیشتر راجع به Owner رو بعدا توضیح میدم)

۴-Database دو فایل با پسوند های mdf, ldf است که یکی اطلاعات یا فایل اصلی Database است دیگری فایل log است که رخداد ها در آن ثبت میشود.

خاصیت Autogrowthیا خاصیت بزرگ شدن خودکار باعث میشه فضای Database پر بشود مقدار مشخصی به حجم Database یا دو فایل اضافه شود 

این دو فایل در Path یا مسیری که شما انتخاب میکنید Create یا ساخته میشه

نکته:Database میتواند بر حسب نیاز بیشتر از دو فایل داشته باشد مثلا دو فایل Log و یا دو فایل Data ولی یکی از آنها Primary است که Database روی آن Create میشود.

Database یی با نام Test بسازید و دکمه Ok را بزنید تا Script ساخت Database یا Create Database به Sqlserver فرستاده شود.

این Script شبیه مثال زیر است :

CREATE DATABASE [Test1] ON PRIMARY

( NAME = N'Test1', FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATATest1.mdf' , SIZE = 2048KB , FILEGROWTH = 1024KB )

LOG ON

( NAME = N'Test1_log', FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATATest1_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)

این Script یا هر Script دیگری را میتوانید توسط محیط Management Studio تولید کنید یا Generate کنید.با کلیک بر روی دکمه Script در بالا سمت چپ هر پنجره Dialog اسکریپت آن Generate میشود و تو یک Query Editor به شما نشان داده میشود تذکر میدم که Query دستور یا درخواست ما از Database است که به پورت ۱۴۳۳ SQL Server روی سرور ارسال میشود در نسخه SqlExpress سرویس Sqlserver روی کامپیوتر جاری شما فقط سرویس میدهد این مبحث رو بعدا بیشتر توضیح میدم.

 

 

 

 

Inner Join

چند Query :

Select SupplierID, Max(UnitPrice) From Products

GroupBy SupplierID,UnitPrice

این Queryبالاترین محصول از نظر قیمت را بهمراه شناسه Supplier آن میاورد

و ترکیب SupplierID,UnitPrice را برای تکراری نبودن چک میکند

جدول هایی که با هم رابطه دارند هنگام Query گرفتن باید رابطه بین جدول ها بیان شود .اگر رابطه را ذکر نکنیم حاصل دکارتی ۲ جدول را برای ما میآورد

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

برای ایجاد رابطه یا Relation بین جداول آنها را به هم Join می دهیم  

 

Select Categories.*,Products.* From Categories Inner join Products on Categories.CategoryID=Products.CategoryID

تمامی فیلد های جدول ,Categories,Products که Category آنها با هم مطابقت دارد و مشترک است

 

Select Categories.CategoryName ,Products.ProductName From Categories Inner join Products on Categories.CategoryID=Products.CategoryID

فیلدCategoryNameو  فیلد ProductsName از جدول Categories,Products که CategoryID آنها با هم برابر است

 

http:// aycu33.webshots.com

image/29352/2001127057866619639_rs.jpg