en-UShe-IL
You are here:   Blog
Register   |  Login

Blog Archive:

Maximize
* Can be used in order to search for older blogs Entries

Search in blogs


Blog Categories:

Maximize
* Can be used in order to search for blogs Entries by Categories

Blog Tags:

Maximize
* Can be used in order to search for blogs by keywords

TNWikiSummit


Awared MVP 


 


Microsoft® Community Contributor 


Microsoft® Community Contributor


 Read first, before you you use the blog! Maximize
פבר16

Written by: ronen ariely
16/02/2012 07:27 RssIcon

מבט כללי על היחסים בין האלמנטים השונים במסד הנתונים:

מסדי הנתונים של SQL כוללים אלמנט בשם Database Diagram המאפשר לנו לבנות דיאגראמות לצפייה ועבודה (עדכון ובנייה) של אלמנטים שונים במסד הנתונים כגון טבלאות והקשרים בין הטבלאות.

נעבור בקצרה בבלוג זה על הדרך בה נוכל להקים דיאגראמות שונות לעזרה בניהול הקשרים של הטבלאות שלנו.

ניגש לתוכנת ה SSMS ל Object Explorer ונפתח את הסימון + ליד הדיאגראמות הנוכחיות שיש לנו במסד הנתונים:

* ניתן לראות בתמונה שבכל שרת אני מחזיק מסד נתונים כללי של עזרים שונים. דבר זה מומלץ תמיד. מסד זה כולל פונקציות ופרוצדורות שמורות בעיקר לשימוש כללי.

עם הלחיצה על סימון ה + בפעם הראשונה נקבל את הודעת האזהרה הבאה. על מצנתלהמשיםך יש לאשר אותה כמובן.

עתה נוכל לבנות דיאגרמה חדשה.

כפתור ימני על הכותרת של רשימת הדיאגראמות (ראה תמונה מעל) ונבחר ב new database diagram

אשף בניית הדיאגרמה יפתח לנו ויציג את חלון הדיאגרמה למטה ומעליו חלון הכולל את כל הטבלאות שלנו. נבחר את כל הטבלאות שאנו רוצים להציג ונעזר בכפתור Add על מנת להוסיף אותם אל הדיאגרמה שלנו.

* ניתן להעזר ב ctrl במקלדת על מנת לבחור מספר טבלאות ביחד או פשוט להכניס לדיאגרמה שלנו טבלה אחרי טבלה.

לצורך המדריך אני רוצה להראות אפשרות מלאה של ניהול וצפייה בקשרים בין הטבלאות. לכן אני אבנה דיאגרמה של כמה טבלאות שאני יודע שהן כבר מקושרות בינן (כאמור וכפי שנראה בתמונות אני מבצע את ההדגמה על מסד הנתונים הלימודי  AdventureWorksLT2008R2 שניתן להוריד באינטרנט).

כדי לבחור טבלאות עם קשרים נריץ את השאילתה הבאה למציאת כל הקשרים שיש לנו מבסד הנתונים:

SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
GO

 נציג רק 3 מהטורים של תוצאת השאילתה (פשוט כדי שנוכל להכניס את הטבלה לעמוד):

ForeignKey

TblName

RefTblName

FK_CustomerAddress_
Address_AddressID

CustomerAddress

Address

FK_SalesOrderHeader_
Address_ShipTo_AddressID

SalesOrderHeader

Address

FK_SalesOrderHeader_
Address_BillTo_AddressID

SalesOrderHeader

Address

FK_CustomerAddress_
Customer_CustomerID

CustomerAddress

Customer

FK_SalesOrderHeader_
Customer_CustomerID

SalesOrderHeader

Customer

FK_SalesOrderDetail_
Product_ProductID

SalesOrderDetail

Product

FK_Product_ProductCategory_
ProductCategoryID

Product

ProductCategory

FK_ProductCategory_
ProductCategory_
ParentProductCategoryID_
ProductCategoryID

ProductCategory

ProductCategory

FK_ProductModelProductDescription_
ProductDescription_
ProductDescriptionID

ProductModelProductDescription

ProductDescription

FK_Product_ProductModel_
ProductModelID

Product

ProductModel

FK_ProductModelProductDescription_
ProductModel_ProductModelID

ProductModelProductDescription

ProductModel

FK_SalesOrderDetail_
SalesOrderHeader_SalesOrderID

SalesOrderDetail

SalesOrderHeader

 

ניתן לראות שהטבלה CustomerAddress מקושרת ל 2 טבלאות נוספות: Address, Customer לכן לצורך מדריך קצר זה נוכל לבחור את שלושת טבלאות אלו ולבנות דיאגרמה של שכבת הלקוחות למשל.

כל טבלה שאנו מוסיפים לדיאגרמה תעלם מחלון הטבלאות (מכיוון שכבר הוכנסה) ונוכל להמשיך לבחור טבלאות נוספות. לאחר שבחרנו את כל הטבלאות שאנו רוצים לראות נסגור את חלון הטבלאות ונתחיל לסדר את הדיאגרמה שלנו בצורה נוחה לעבודה.

בתמונה הבאה ניתן לראות שבחרתי את 3 הטבלאות שרצינו לנהל והוספתי לדיאגרמה.

כפי שניתן לראות הטבלאות שבחרנו עם הקשרים שלהם מוצגות תלנו כבר בסיום השלב הראשון. כל פעולה שנבצע על הדיאגרמה כרגע החל מהקטנת חלון הצפייה ועד DDL (שינויים באלמנטים במסד הנתונים) ישמרו לנו בדיאגרמה לניהול עתידי.

לאחר שנסיים לבנות את הדיאגרמה שלנו לשביעות רצוננו נשמור את הדיאגרמה בשם ייחודי בעזרתו נוכל תמיד לזהות איזה טבלאות וקשרים מנהלת דיאגרמה זו. למשל לבחירה הנוכחית נוכל לקרוא CustonersRelationsDiagram

 

חלק מהאפשרויות הנוספות לניהול שיש לנו:

 

הצגת שמות הקשרים בין הטבלאות

כפתור ימני על המשטח של הדיאגרמה -> בחירה ב show relationship labels

הקטנה והגדלה של הדיאגמה

ניתן להיעזר בגלילה של העכבר + ctrl

הוספת קשרים בין טבלאות

כפתור ימני של העכבר על הטבלה אליה רוצים להוסיף קשר