زیرپرسوجو یا Subquery، یک کوئری تودرتو (nested query) هست که داخل کوئری دیگه قرار میگیره. به عبارت دیگه، سابکوئری یک پرسوجوی SQL هست که به عنوان بخشی از یک کوئری دیگه اجرا میشه. سابکوئری میتونه در بخشهای مختلف یک کوئری اصلی مثل SELECT، FROM، WHERE، HAVING و حتی در دستورهای UPDATE و DELETE استفاده شه.
SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
SELECT name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');
SELECT name
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);
SELECT name, (SELECT COUNT(*) FROM projects WHERE manager_id = e.employee_id) AS project_count
FROM employees e;
SELECT sub.department_id, sub.avg_salary
FROM (SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id) sub
WHERE sub.avg_salary > 50000;
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏2👌2👨💻2❤1
❓کوییز شماره ۱۷۷: کدوم یک از موارد زیر در مورد عملگر EXISTS در Subquery صحیح نیست؟
Anonymous Quiz
22%
تمام ردیفهای Subquery رو قبل از ارزیابی نتیجه پردازش میکنه.
13%
زمانی که حداقل یک ردیف برگردانده شه، TRUE میشه.
35%
معمولاً با یک زیرپرسوجوی وابسته استفاده میشه.
30%
همیشه یک مقدار Boolean (درست یا نادرست) برمیگردونه.
👍6😁2😎1
دو جدول مشتری با ستونهای customer_name و customer_id و سفارشات با ستونهای order_date، customer_id و order_id داریم. برای پیدا کردن نام مشتریانی که تعداد سفارشهاشون بیشتر از میانگین تعداد سفارشهای همه مشتریانه، از یک Subquery استفاده میکنیم.
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id
SELECT AVG(order_count)
FROM (
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id
) AS subquery
SELECT customer_name
FROM Customers
WHERE customer_id IN (
SELECT customer_id
FROM Orders
GROUP BY customer_id
HAVING COUNT(order_id) > (
SELECT AVG(order_count)
FROM (
SELECT customer_id, COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id
) AS subquery
)
);
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👏2👌1
دو نوع اصلی پایگاه دادهها SQL و NoSQL هستن که هر کدوم از این دو نوع پایگاه داده ابزارها و نرمافزارهای خاص خودشون رو دارن.
علاوه بر نرمافزارهای اصلی پایگاه داده، ابزارهای متعددی برای مدیریت و توسعه پایگاه دادهها وجود دارن. بعضی از این ابزارها عبارتند از:
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1👨💻1
❓کوییز شماره ۱۷۸: کدوم یک از ابزارهای زیر یک راهحل مجازیسازی داده است که میتونه دادههای ناهمگن از منابع مختلف رو یکپارچه کنه و به عنوان یک لایه انتزاعی بین برنامههای کاربردی و منابع داده عمل کنه؟
Anonymous Quiz
16%
Denodo
12%
Talend
56%
Apache Drill
16%
Informatica PowerCenter
👍3❤1🤔1👌1😎1
#Weekend
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2👏2
Audio
#Webinars
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2👏1
در پایگاههای داده، مدیریت بهینه دادهها اهمیت خاصی داره. دو تکنیک اساسی که برای بهبود عملکرد و یکپارچگی دادهها به کار میرن، نرمالسازی و نرمالزدایی (Normalization and Denormalization) هستن. انتخاب بین این دو روش باید بر اساس نیازها و الزامات سیستم انجام شه تا بهترین عملکرد و کارایی به دست بیاد.
-فرم نرمال اول (1NF): در این فرم، همه ستونهای جدول باید atomic باشن، یعنی هر ستون باید تنها یک مقدار منحصر به فرد داشته باشه و جداول باید بدون تکرار و چندتایی باشن.
-فرم نرمال دوم (2NF): برای رسیدن به فرم نرمال دوم، اول باید جدول به فرم نرمال اول رسیده باشه. بعد همه ستونهای غیر کلیدی باید به کلید اصلی بهطور کامل وابسته باشن، یعنی نباید هیچگونه وابستگی جزئی وجود داشته باشه.
-فرم نرمال سوم (3NF): برای رسیدن به فرم نرمال سوم، اول باید جدول به فرم نرمال دوم رسیده باشه. بعد هیچ کدوم از ستونهای غیر کلیدی نباید به ستونهای غیر کلیدی دیگه وابستگی Transitive داشته باشن.
وابستگی ترانزیتی (Transitive Dependency) در پایگاههای داده به وضعیتی گفته میشه که یک ستون غیر کلیدی به یک ستون غیر کلیدی دیگه وابسته باشه، نه به کلید اصلی.
-فرم نرمال بویس-کاد (Boyce-Codd Normal Form - BCNF): این فرم تکمیلکننده فرم نرمال سومه و اطمینان حاصل میکنه که هر وابستگی تابعی در جدول، باید تنها و تنها به کلید اصلی وابسته است.
-فرم نرمال چهارم (4NF): این فرم از چند مقدار بودن جداول جلوگیری میکنه تا هیچ ترکیب چند مقداری از دادهها در یک جدول وجود نداشته باشه.
-فرم نرمال پنجم (5NF): این فرم اطمینان میده که هیچ وابستگی پیوستی در جدول وجود نداره و جداول باید به نحوی باشن که بدون از دست دادن اطلاعات بشه اونها رو به بخشهای کوچکتر تقسیم کرد.
وابستگی پیوستی (Join Dependency) زمانی اتفاق میافته که یک جدول نمیتونه بدون از دست دادن اطلاعات به جداول کوچکتر تقسیم شه. به عبارت دیگه، اگه جدول به جداول کوچکتر تقسیم شه، برای بازسازی اطلاعات اصلی نیاز به پیوندهای پیچیده (Join) خواهد بود.
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3👏2👌1
❓کوییز شماره ۱۷۹: در چه شرایطی استفاده از نماهای پیشمحاسبهشده (Materialized Views) در نرمالزدایی توصیه میشه؟
Anonymous Quiz
47%
زمانی که نیاز به حفظ سازگاری دادههاست.
13%
زمانی که پرسوجوها نیاز به پردازش پیچیدهای ندارن.
27%
زمانی که پرسوجوها بیشتر روی دادههای تاریخی انجام میشن.
13%
زمانی که دادهها به ندرت بهروزرسانی میشن.
👌5❤2🤔2😎1
مثال: اضافه کردن نام مشتری به جدول سفارشات تا نیاز به پیوند جدول مشتریان و سفارشات کاهش پیدا کنه.
مثال: تقسیم جدول بیماران به دو جدول
Patient_Details
و Patient_Medical_History
برای جدا کردن اطلاعات عمومی بیماران از سوابق پزشکیشون.مثال: تقسیم جدول اطلاعات دانشجویان به جداول جداگانه بر اساس دانشکدههای مختلف.
مثال: اضافه کردن ستون مجموع نمرات به جدول دانشجویان برای جلوگیری از محاسبه مجدد مجموع نمرات در هر پرسوجو.
مثال: ایجاد نسخهای از جدول سفارشات که فقط شامل سفارشات فعاله و برای پرسوجوهای مکرر مربوط به سفارشات فعال بهینهسازی شده.
مثال: ایجاد یک Materialized Views برای نمایش مجموع فروش ماهانه که نیاز به پیوند جداول فروش و محصولات رو کاهش میده.
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1🔥1👏1
ایندکس در پایگاههای داده، دسترسی سریع به دادهها رو ممکن میکنه. ایندکسها مثل فهرست یک کتاب عمل میکنن؛ به این معنی که برای پیدا کردن سریع یک رکورد خاص در جدول دادهها، از ایندکس استفاده میشه. بدون وجود ایندکس، جستجو در پایگاه داده نیازمند اسکن کامل جدوله که میتونه بسیار زمانبر باشه.
CREATE INDEX
به همراه مشخص کردن نام ایندکس، نام جدول و ستون یا ستونهایی که باید ایندکس شن، به کار میرن. برای مثال:CREATE INDEX idx_name ON table_name(column_name);
- مزایا: به دلیل ساختار درختی، زمان دسترسی به دادهها رو به شکل لگاریتمی کاهش میده که باعث کارایی بالا در جستجو و مرتبسازی میشه. B-tree برای جستجوهای محدودهای کارآمده چون میتونه به سرعت دادههایی رو که در یک محدوده خاص قرار دارن، پیدا کنه. در نهایت، این ساختار از انعطافپذیری بالایی برخورداره و برای ایندکسهای اولیه، ثانویه و ترکیبی مناسبه.
- معایب: نیاز به فضای ذخیرهسازی زیاده داره چون باید اطلاعات ساختاری درخت رو ذخیره کنه. همچنین، مدیریت و نگهداری یک B-tree میتونه پیچیده باشه، به ویژه در پایگاههای داده با حجم زیاد تغییرات و اطلاعات.
- مزایا: سرعت بسیار بالا در جستجوهای دقیق (Exact Match) و ایندکسهای هش نسبت به B-tree سادهتر پیادهسازی و مدیریت میشن، که در نتیجه باعث کاهش پیچیدگی در فرآیندهای نگهداری و بهروزرسانی ایندکسها میشه.
- معایب: عدم پشتیبانی از جستجوهای محدودهای؛ یعنی ایندکسهای هش برای جستجوهایی که نیاز به بررسی یک محدوده از دادهها دارن، مناسب نیستن. همچنین، در صورتی که تابع هش دو کلید مختلف رو به یک مکان نگاشت کنه، Collision به وجود میاد که نیاز به مدیریتش داریم و این موضوع پیچیدگی رو افزایش میده.
- مزایا: افزایش کارایی جستجوهای ترکیبی؛ به این معنی که ایندکسهای ترکیبی میتونن سرعت جستجوهایی که بر اساس چند ستون انجام میشن رو بهبود بدن.
- معایب: مدیریت ایندکسهای ترکیبی ممکنه پیچیده باشه، به خصوص اگه تعداد ستونهای ایندکس شده زیاد باشن و هر بار که دادهها در ستونهای ایندکس شده تغییر میکنن، ایندکس ترکیبی هم باید بهروز شه که هزینهبره.
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3👍2👏1
❓کوییز شماره ۱۸۰: کدوم یک از گزینههای زیر، توصیفی از ایندکس خوشهبندی شده (Clustered Index) در پایگاهدادههاست؟
Anonymous Quiz
19%
فقط در پایگاهدادههای NoSQL استفاده میشه
15%
هیچ تأثیری روی ترتیب فیزیکی دادهها نداره
44%
باعث مرتبسازی فیزیکی دادهها بر اساس کلید ایندکس میشه
22%
در پایگاهدادههای توزیعشده استفاده نمیشه
❤5👍2😎2🔥1
انبار داده (Data Warehouse):
- تحلیل دادهها
- ذخیره دادههای خلاصهشده
- استفاده از OLAP (پردازش تحلیلی آنلاین) که بر اساس مدل داده چندبعدیه
- انجام عملیات پیچیده روی دادهها برای تحلیل
- نیاز به بهروزرسانی دادهها برای دریافت اطلاعات جدید
- معمولاً برای استفاده چند برنامه کاربردی و بخشهای مختلف سازمان طراحی میشه
- معمولاً برای پشتیبانی از تصمیمگیری و تحلیلهای کلان استفاده میشه
پایگاه داده (Database):
- ثبت دادهها و تراکنشها
- ذخیره دادههای جزئی و دقیق
- استفاده از OLTP (پردازش تراکنش آنلاین) که اجرای لحظهای تعداد زیادی از تراکنشهای پایگاه داده رو ممکن میکنه
- انجام عملیات اساسی روی دادهها
- دسترسی لحظهای به دادهها رو فراهم میکنه
- استفاده از دادهها از چند برنامه کاربردی
- معمولاً برای پشتیبانی از عملیات روزمره و تراکنشهای جاری استفاده میشه
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4👌2👨💻1
جوینها در SQL به ما امکان میدن دادهها رو از چند جدول با هم ترکیب کنیم. درک صحیح از انواع مختلف JOIN و نحوه استفاده از اونها، برای هر برنامهنویس پایگاه داده ضروریه.
employees
و departments
داریم. میخوایم تمام کارمندان رو همراه با نام دپارتمانهاشون نشون بدیم، حتی اگه کارمندی دپارتمان نداشته باشه.SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
products
و orders
داریم. میخوایم تمام سفارشها رو همراه با جزئیات محصولاتشون نشون بدیم، حتی اگه محصولی در سفارشها نباشه.SELECT orders.order_id, products.product_name
FROM orders
RIGHT JOIN products ON orders.product_id = products.id;
students
و courses
داریم. میخوایم تمام دانشجویان و تمام دورهها رو نشون بدیم، حتی اگه دانشجویی در دورهای ثبتنام نکرده باشه یا دورهای دانشجو نداشته باشه.SELECT students.name, courses.course_name
FROM students
FULL OUTER JOIN courses ON students.course_id = courses.id;
authors
و books
داریم. میخوایم تمام کتابها رو همراه با نویسندگان نشون بدیم، فقط اگه کتابی نویسندهای داشته باشه.SELECT authors.name, books.title
FROM authors
INNER JOIN books ON authors.id = books.author_id;
SELECT A.*
FROM A
LEFT JOIN B ON A.id = B.id
WHERE B.id IS NULL;
SELECT B.*
FROM A
RIGHT JOIN B ON A.id = B.id
WHERE A.id IS NULL;
SELECT A.*, B.*
FROM A
FULL OUTER JOIN B ON A.id = B.id
WHERE A.id IS NULL OR B.id IS NULL;
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2👌1
❓کوییز شماره ۱۸۱: در مورد پیوند HASH JOIN، کدوم گزینه صحیح نیست؟
Anonymous Quiz
22%
همیشه سریعتر از NESTED LOOP JOIN هست
28%
معمولاً برای جوین جداول بزرگ استفاده میشه
39%
از یک تابع هش برای ایجاد جدول هش استفاده میکنه
11%
میتونه در حافظه یا روی دیسک اجرا شه
❤6🤔2👌2😎1
انبار داده (Data Warehouse):
- قابلیت ذخیرهسازی دادههای ساختاریافته و پردازششده
- دارای حجم کمتری از دادهها در حدود ترابایت
- شامل دادههای تاریخی و رابطهای
- بیشتر توسط تحلیلگران کسبوکار استفاده میشه
- کاربرد در پردازش دستهای و گزارشدهی هوش تجاری
- دارای امنیت بالا و کامل
- ساختار انبار داده از قبل تعریف شده و برای پرسوجوهای خاص بهینه شده
دریاچه داده (Data Lake):
- قابلیت ذخیرهسازی مقادیر زیادی از دادههای ساختاریافته، نیمهساختاریافته، غیرساختاریافته و خام
- دارای حجم بسیار زیادی از دادهها در حدود پتابایت
- دادهها میتونن برای انواع مختلفی از کاربردها مثل یادگیری ماشین، تحلیل جریان داده و هوش مصنوعی استفاده شن
- بیشتر توسط دانشمندان داده و تحلیلگران داده استفاده میشه
- امنیتاش میتونه متغیر باشه و نیاز به مدیریت دقیق داره
- انعطافپذیری بیشتری در ذخیرهسازی و پردازش دادهها داره
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍2🔥2👌1
انبار داده یک سیستم مرکزیه که دادههای سازمان رو از منابع مختلف جمعآوری، ذخیره و مدیریت میکنه تا برای تحلیل و گزارشدهی آماده باشن. این سیستم به منظور پشتیبانی از فرآیند تصمیمگیری و تحلیلهای پیچیده طراحی شده.
#Database
@Data_ML | دیتاساینس و ماشین لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥1👌1