PDA

View Full Version : گفتگو: چرا جدولهاي ديتابيس AdventureWorks دو كلمه اي هستند ؟



Mostafa_Dindar
یک شنبه 16 خرداد 1389, 21:53 عصر
سلام ،

اينطوري خونديم كه ، اشيا در ديتابيس 4 بخش دارند :

شي.مالك.بانك اطلاعاتي.سرور

مثلا :
ServerName.Pubs.dbo.Contact

همانطور كه اطلاع داريد ، ديتابيس نمونه AdventureWorks در SQL2005 -2008 از 2 كلمه تشكليل شده اند . مثلا Person.Address

در صورتي كه در ديتابيس هاي نمونه Pubs & Northwind در SQL2000 جداول يك كلمه اي بودند .

سوال من اين هست كه :

1- نام دادن به جداول به صورت 2 كلمه اي كه با دات ( .) از هم جدا شده باشند ، چه مزايايي ( و شايد معايب ) دارد ؟

2- چرا در ObjectExplorer در ديتابيس AdventureWorks در حالي كه جداول 2 كلمه اي نشون داده ميشن ، وقتيكه ميخواهيد Rename كنيد ، تك كلمه اي ميشود ، آيا اون بخش اولي ، قسمتي از نام جدول نيست ؟


مرسي

حسین شهریاری
یک شنبه 16 خرداد 1389, 23:28 عصر
فرض کنید شما ساکن یکی از محله های تهران باشید! فردی از شما آدرسی را میپرسه که دقیقا سر کوچه شما هست.شما به ایشون کدوم جواب را میدید؟

1-تشریف ببرید انتهای همین کوچه دست چپ
2-تشریف ببرید توی ایران-توی تهران-توی محله فلان-کوچه فلان دست چپ

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

Mostafa_Dindar
دوشنبه 17 خرداد 1389, 01:57 صبح
سلام ،

ممنون از توجهتون ،
فكر كنم اشاره من به بخشهاي شي.مالك.بانك اطلاعاتي.سرور باعث سوءتفاهم شده ،

من با مفاهيم Scope, نحوه آدرس دهي آشنا هستم ،

در Trigger زير دقت كنيد :

CREATE TRIGGER Sales.uStore
ON Sales.Store
AFTER UPDATE
AS UPDATE Sales.Store SET ModifiedDate = GETDATE() FROM inserted WHERE inserted.CustomerID = Sales.Store.CustomerID
GOschema_name ، Salesهست و Store نام جدول . ( طبق تعاريف Template هاي TemplateExplorer).

من سوالم رو واضح پرسيدم ، اين schema_name اينجا چي هست ؟

ضمن اينكه در پست اول سوالات ديگري رو هم پرسيده بودم .

محمد سلیم آبادی
دوشنبه 17 خرداد 1389, 11:35 صبح
سلام،
لطفا این مقاله را مطالعه بفرمایید، مطمئن هستم با مطالعه ی دقیق آن حتما برای پرسش هایتان پاسخ های مناسبی خواهید یافت:
http://www.sqlteam.com/article/understanding-the-difference-between-owners-and-schemas-in-sql-server