آموزش دیتاساینس و ماشین‌لرنینگ
1.91K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.me/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
👨‍🎓 مروری بر پرس‌وجو یا Query در پایگاه داده

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

🔵 پرس‌وجو چیه؟

پرس‌وجو به دستوری گفته می‌شه که به یک پایگاه داده ارسال می‌شه تا اطلاعات خاصی رو ازش استخراج کنه. این دستورات می‌تونن به زبان‌های مختلفی مثل SQL (Structured Query Language) نوشته شن. پرس‌وجوها به کاربران اجازه می‌دن تا داده‌ها رو جستجو، بازیابی، به‌روز‌رسانی یا حذف کنن.

🔵 انواع Query

🔵پرس‌وجوی انتخابی (SELECT Query): این نوع پرس‌وجو برای بازیابی داده‌ها از پایگاه داده استفاده می‌شه. دستور SELECT برای انتخاب سطرها و ستون‌های خاصی از یک یا چند جدول در پایگاه داده به کار می‌ره.

🔵پرس‌وجوی درج: INSERT برای اضافه کردن داده‌های جدید به جدول پایگاه داده استفاده می‌شه. دستور INSERT INTO برای این کار به کار می‌ره.

🔵پرس‌وجوی به‌روز‌رسانی: UPDATE برای تغییر داده‌های موجود در جدول پایگاه داده استفاده می‌شه.

🔵پرس‌وجوی حذف: DELETE برای حذف داده‌های موجود در جدول پایگاه داده استفاده می‌شود.

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

🔵کلید اصلی (Primary Key): کلید اصلی یک ستون یا ترکیبی از ستون‌ها در یک جدوله که به طور یکتا هر سطر رو مشخص و به حفظ یکپارچگی داده‌ها کمک می‌کنه، مقادیر Null نمی‌پذیره و سرعت دسترسی به داده‌ها رو افزایش می‌ده. کلید اصلی به عنوان مرجعی برای کلیدهای خارجی در جداول دیگه استفاده می‌شه و به ایجاد روابط بین جداول کمک می‌کنه.

🔵کلید خارجی (Foreign Key): کلید خارجی یک ستون یا ترکیبی از ستون‌ها در یک جدوله که به کلید اصلی در جدول دیگه اشاره می‌کنه و برای ایجاد روابط بین جداول مختلف استفاده می‌شه. برای مثال، اگه رکوردی در جدول پدر حذف شه، می‌شه با استفاده از قوانین محدودیت‌ها (Constraints) مشخص کرد که چه اتفاقی برای رکوردهای وابسته در جدول فرزند بیفتد (حذف cascade یا set null).

🔵 بهینه‌سازی پرس‌وجوها با هدف افزایش کارایی و کاهش زمان پاسخ‌دهی پایگاه داده انجام می‌شه. بعضی از روش‌های بهینه‌سازی شامل موارد زیر هست:

🔵استفاده از ایندکس‌: Indexها ساختارهایی هستن که سرعت دسترسی به داده‌ها را افزایش می‌دهند. ایجاد ایندکس روی ستون‌های پرکاربرد می‌تواند زمان جستجو و بازیابی داده‌ها را کاهش دهد.

🔵استفاده از VIEW: جداول مجازی‌ای که نتیجه یک پرس‌وجو رو ذخیره و به ساده‌سازی پرس‌وجوهای پیچیده کمک می‌کنن.

CREATE VIEW StudentGrades AS
SELECT students.name, courses.course_name, enrollments.grade
FROM students
JOIN enrollments ON students.id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.id;


🔵استفاده از SUBQUERY و CTE: پرس‌وجوی فرعی و CTE (عبارت‌های مشترک) برای ساده‌سازی و خوانایی پرس‌وجوهای پیچیده استفاده می‌شن.

WITH TopStudents AS (
SELECT student_id, AVG(grade) AS avg_grade
FROM enrollments
GROUP BY student_id
HAVING AVG(grade) > 85
)
SELECT students.name
FROM students
JOIN TopStudents ON students.id = TopStudents.student_id;


🔵 ایجاد امنیت در پرس‌وجوها

🔵جلوگیری از حملات SQL Injection: استفاده از پرس‌وجوهای آماده (Prepared Statements) و پارامترهای ورودی به جای وارد کردن مستقیم مقادیر، از حملات SQL Injection جلوگیری می‌کنه.

PREPARE stmt FROM 'SELECT * FROM users WHERE username = ? AND password = ?';
EXECUTE stmt USING @username, @password;


🔵مدیریت دسترسی کاربران: تعریف سطوح دسترسی مختلف برای کاربران از دسترسی غیرمجاز به داده‌ها جلوگیری می‌کنه.

GRANT SELECT ON students TO read_only_user;


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3👏21👌1
🧑‍🎓 تفاوت پایگاه‌های داده SQL و NoSQL چیه و هر کدوم چه کاربردهایی دارن؟

پایگاه‌های داده SQL به مدل‌های ساختاریافته و رابطه‌ای تأکید می‌کنن، درحالی‌که پایگاه‌های داده NoSQL با رویکردی برای مدیریت داده‌های متنوع و پویا با تأکید بیشتر بر مقیاس‌پذیری و سرعت دارن. این مطلب تفاوت‌های بین این دو سیستم پایگاه داده رو بررسی می‌کنه.

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 http://ctdrs.ir/ds0282

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2👏2👌1
👨‍🎓 به‌کارگیری شرط (WHERE) در پرس‌وجوهای پایگاه داده

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

🔵 ساختار کلی عبارت WHERE: ساختار کلی عبارت WHERE به شکل زیره:

SELECT column1, column2, ...
FROM table_name
WHERE condition;


در این ساختار:
🔵SELECT column1, column2, ...: تعیین می‌کنه که کدوم ستون‌ها از جدول بازیابی شن.
🔵FROM table_name: مشخص می‌کنه که داده‌ها از کدام جدول بازیابی شن.
🔵WHERE condition: شرطی که باید برای هر رکورد بررسی شه. تنها رکوردهایی که این شرط رو برآورده می‌کنن، در نتیجه نشون داده می‌شن.

🔵 انواع شرط در عبارت WHERE

🔵شرایط مقایسه‌ای برای مقایسه مقادیر استفاده می‌شن و شامل عملگرهای زیر هستن:

- = (برابر بودن): برای بررسی اینکه آیا دو مقدار برابرن یا نه.
- != یا < > (مخالف بودن): برای بررسی اینکه آیا دو مقدار نابرابرن یا نه.
- > (بزرگتر بودن): برای بررسی اینکه آیا مقدار اول بزرگتر از مقدار دومه یا نه.
- < (کوچکتر بودن): برای بررسی اینکه آیا مقدار اول کوچکتر از مقدار دومه یا نه.
- >= (بزرگتر یا مساوی بودن): برای بررسی اینکه آیا مقدار اول بزرگتر یا مساوی با مقدار دومه یا نه.
- <= (کوچکتر یا مساوی بودن): برای بررسی اینکه آیا مقدار اول کوچکتر یا مساوی با مقدار دومه یا نه. در مثال زیر، همه کارمندانی که سن اونها بیشتر از 30 ساله، انتخاب می‌شن.
SELECT * FROM employees
WHERE age > 30;


🔵شرایط منطقی برای ترکیب چند شرط به کار می‌رن و شامل عملگرهای زیر هستن:

- AND (و): وقتی هر دو شرط باید صحیح باشند.
- OR (یا): وقتی حداقل یکی از دو شرط باید صحیح باشد.
- NOT (نفی): برای معکوس کردن شرط. در مثال زیر، همه کارمندانی که سن‌ بیشتر از 30 سال و حقوق بیشتر از 50000 دارن، انتخاب می‌شن.
SELECT * FROM employees
WHERE age > 30 AND salary > 50000;


🔵عبارت BETWEEN برای بررسی اینکه آیا مقدار یک ستون در یک بازه مشخص قرار دارد یا نه، استفاده می‌شه. در مثال زیر، همه کارمندانی که سن‌شون بین 30 و 40 ساله، انتخاب می‌شن.
SELECT * FROM employees
WHERE age BETWEEN 30 AND 40;


🔵عبارت IN برای بررسی اینکه آیا مقدار یک ستون در یک مجموعه از مقادیر مشخص قرار داره یا نه، استفاده می‌شه. در این مثال، همه کارمندانی که در یکی از دپارتمان‌های HR، Finance یا IT کار می‌کنن، انتخاب می‌شن.

SELECT * FROM employees
WHERE department IN ('HR', 'Finance', 'IT');


🔵عبارت LIKE برای جستجوی الگوهای مشخص در رشته‌ها به کار می‌ره. این عبارت معمولاً با % و _ استفاده می‌شه. % نماینده هیچ یا چند کاراکتر و _ نماینده دقیقاً یک کاراکتر هست. در این مثال، همه کارمندانی که نام آن‌ها با حرف A شروع می‌شه، انتخاب می‌شن.

SELECT * FROM employees
WHERE name LIKE 'A%';


🔵عبارت IS NULL برای بررسی خالی بودن مقدار یک ستون استفاده می‌شه. در این مثال، همه کارمندانی که شماره تلفن‌شون خالیه، انتخاب می‌شن.

SELECT * FROM employees
WHERE phone_number IS NULL;


🔵 اولویت عملگرها در عبارت WHERE

زمان استفاده از چند شرط در یک عبارت WHERE، اولویت عملگرها اهمیت داره. عملگرهای NOT دارای بالاترین اولویت، بعد عملگرهای مقایسه‌ای (=, !=, >, <, >=, <=)، و در نهایت عملگرهای AND و OR قرار دارن. در این مثال، اول شرط داخل پرانتز ارزیابی می‌شه (آیا سن بیشتر از 30 یا حقوق کمتر از 50000 است)، بعد نتیجه‌اش با NOT معکوس می‌شه.

SELECT * FROM employees
WHERE NOT (age > 30 OR salary < 50000);


🔵 استفاده از پرانتزها برای تغییر اولویت

برای تغییر اولویت عملگرها و اعمال شرط‌ها به ترتیبی که مورد نظره، می‌شه از پرانتزها استفاده کرد. در این مثال، اول شرط داخل پرانتز ارزیابی می‌شه (آیا سن بیشتر از 30 و حقوق بیشتر از 50000 است)، بعد نتیجه‌اش با شرط خارج پرانتز ترکیب می‌شه (یا دپارتمان برابر با IT).

SELECT * FROM employees
WHERE (age > 30 AND salary > 50000) OR department = 'IT';


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63👌2👨‍💻2
کوییز شماره ۱۷۵: فرض کنین جدولی به نام sales داریم و می‌خواهیم رکوردهایی رو انتخاب کنیم که مقدار فروش اونها بیشتر از مقدار فروش تمامی رکوردهایی باشه که مربوط به سال 2020 هستن. کدوم یک از گزینه‌های زیر صحیحه؟
Anonymous Quiz
10%
SELECT * FROM sales WHERE amount > ANY (SELECT amount FROM sales WHERE year = 2020);
13%
SELECT * FROM sales WHERE amount > (SELECT AVG(amount) FROM sales WHERE year = 2020);
30%
SELECT * FROM sales WHERE amount > ALL (SELECT amount FROM sales WHERE year = 2020);
47%
SELECT * FROM sales WHERE amount > (SELECT MAX(amount) FROM sales WHERE year = 2020);
👍4🤔2👌1😎1
🧑‍🎓 متداول‌ترین سوالات مصاحبه SQL و بهترین روش‌ها برای پاسخگویی

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

🟢برای مطالعه بیشتر کلیک کنین:
👉📎 http://ctdrs.ir/ds0283

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43👌1😎1
👨‍🎓 مفاهیم Group By و Order By در پایگاه‌ داده‌ها


🔵 دستور GROUP BY

دستور GROUP BY در SQL برای گروه‌بندی رکوردها بر اساس یک یا چند ستون استفاده می‌شه. این دستور اکثرا همراه با توابع تجمعی مثل SUM ،COUNT ،AVG ،MAX و MIN به کار می‌ره. هدف اصلی GROUP BY، جمع‌بندی و تجمیع داده‌ها به نحوی هست که بتونیم نتایج خلاصه‌تری از داده‌ها استخراج کنیم.

🔵 نکات مهم در استفاده از GROUP BY

- ستون‌هایی که در دستور SELECT استفاده می‌شن، باید یا در دستور GROUP BY آورده شن یا شامل توابع تجمعی باشن.
- نمی‌شه از GROUP BY برای گروه‌بندی بر اساس ستون‌هایی که شامل داده‌های غیرتجمعی هستن، استفاده کرد.

🔵دستور HAVING

دستور HAVING در SQL برای فیلتر کردن گروه‌های داده بعد از گروه‌بندی با استفاده از دستور GROUP BY به کار می‌ره. برخلاف دستور WHERE که برای فیلتر کردن رکوردها قبل از گروه‌بندی استفاده می‌شه، HAVING برای اعمال شرط‌ها روی گروه‌های ایجاد شده به کار می‌رن.

🔵 دستور ORDER BY

دستور ORDER BY برای مرتب‌سازی نتایج جستجو بر اساس یک یا چند ستون استفاده می‌شه. این مرتب‌سازی می‌تونه به صورت صعودی (ASC) یا نزولی (DESC) با هدف نمایش منظم‌تر داده‌ها و پیدا کردن سریع‌تر اطلاعات مفید باشه.

🔵نکات مهم در استفاده از ORDER BY

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

   SELECT Name, Date
FROM Order
ORDER BY Name ASC, Date DESC;


🖼 در تصویر در کوئری اول 1000 رکورد اول از جدول sample در دیتابیس MyDB انتخاب می‌شه و ستون‌های ID،Name،Age و Salary نشون داده می‌شن. در کوئری دوم، نام و مجموع حقوق از جدول sample انتخاب و بر اساس ستون Name گروه‌بندی انجام می‌شه و بعد مجموع حقوق هر گروه نشون داده می‌شه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2👏1👌1
💡مرور مطالب گفته شده با بررسی یک کوئری

فرض کنید که سه جدول Employees شامل اطلاعات کارمندان، Departments شامل اطلاعات دپارتمان‌ها و جدول Sales شامل اطلاعات فروش‌ رو داریم.

هدف اینکه مجموع فروش‌های انجام‌شده توسط هر کارمند رو در سال 2023 محاسبه کنیم، بعد فقط کارمندانی که مجموع فروش‌شون بیشتر از 50,000 واحد هست رو نشون بدیم و نتایج رو به ترتیب نزولی مجموع فروش مرتب کنیم.

🔵 ساختار جداول و کوئری

CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName NVARCHAR(50),
DepartmentID INT
);

CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName NVARCHAR(50)
);

CREATE TABLE Sales (
SaleID INT PRIMARY KEY,
EmployeeID INT,
SaleAmount DECIMAL(10, 2),
SaleDate DATE
);


SELECT 
E.EmployeeName,
D.DepartmentName,
SUM(S.SaleAmount) AS TotalSales
FROM
Employees E
JOIN
Sales S ON E.EmployeeID = S.EmployeeID
JOIN
Departments D ON E.DepartmentID = D.DepartmentID
WHERE
S.SaleDate >= '2023-01-01' AND S.SaleDate <= '2023-12-31'
GROUP BY
E.EmployeeName, D.DepartmentName
HAVING
SUM(S.SaleAmount) > 50000
ORDER BY
TotalSales DESC;


🔵 بررسی جزئیات کوئری

🔵انتخاب ستون‌ها: در اینجا سه ستون EmployeeName (نام کارمند)، DepartmentName (نام دپارتمان) و SUM(S.SaleAmount) AS TotalSales (مجموع فروش‌ها به عنوان TotalSales) انتخاب می‌شن.
SELECT E.EmployeeName, D.DepartmentName, SUM(S.SaleAmount) AS TotalSales


🔵منبع داده و ارتباط جداول: در این بخش، جدول Employees با جدول Sales بر اساس EmployeeID و جدول Departments بر اساس DepartmentID مرتبط شدن.
FROM Employees E
JOIN Sales S ON E.EmployeeID = S.EmployeeID
JOIN Departments D ON E.DepartmentID = D.DepartmentID


🔵شرط‌ها (WHERE): این قسمت مشخص می‌کنه که فقط فروش‌هایی که در سال 2023 انجام شدن، انتخاب شن.
WHERE S.SaleDate >= '2023-01-01' AND S.SaleDate <='2023-12-31'


🔵گروه‌بندی (GROUP BY): داده‌ها بر اساس نام کارمند و نام دپارتمان گروه‌بندی می‌شن.
GROUP BY E.EmployeeName, D.DepartmentName 


🔵شرط‌ها برای گروه‌ها (HAVING): فقط گروه‌هایی که مجموع فروش‌شون بیشتر از 50000 واحده، انتخاب می‌شن.
HAVING SUM(S.SaleAmount) > 50000


🔵مرتب‌سازی (ORDER BY): نتایج بر اساس مجموع فروش به ترتیب نزولی مرتب می‌شن.
ORDER BY TotalSales DESC   


#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👏1👌1
👨‍🎓 ساب‌کوئری‌ در کوئری‌های دیتابیس

زیرپرس‌وجو یا Subquery، یک کوئری تودرتو (nested query) هست که داخل کوئری دیگه قرار می‌گیره. به عبارت دیگه، ساب‌کوئری یک پرس‌وجوی SQL هست که به عنوان بخشی از یک کوئری دیگه اجرا می‌شه. ساب‌کوئری می‌تونه در بخش‌های مختلف یک کوئری اصلی مثل SELECT، FROM، WHERE، HAVING و حتی در دستورهای UPDATE و DELETE استفاده شه.

🔵 انواع Subquery

🔵ساب‌کوئری‌های تک‌ارزش (Scalar Subqueries): یک مقدار منفرد رو برمی‌گردونن. این ساب‌کوئری‌ها معمولا در عبارات WHERE یا SELECT استفاده می‌شن. در مثال زیر، ساب‌کوئری میانگین حقوق رو محاسبه کرده و اون رو به کوئری اصلی برمی‌گردونه تا کارمندانی که حقوقشون بالاتر از میانگینه رو انتخاب کنه.

SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);


🔵ساب‌کوئری‌های چندارزش (Multi-Value Subqueries): یک مجموعه‌ای از مقادیر رو برمی‌گردونن و معمولاً با عملگرهایی مثل IN استفاده می‌شن. در این مثال، ساب‌کوئری لیست شناسه‌های دپارتمان‌های واقع در نیویورک رو برمی‌گردونه و کوئری اصلی کارمندانی رو انتخاب می‌کنه که در این دپارتمان‌ها مشغول به کار هستن.

SELECT name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');


🔵ساب‌کوئری‌های وابسته (Correlated Subqueries): به کوئری اصلی وابسته هستن و برای هر ردیف از کوئری اصلی یک بار اجرا می‌شن. در این مثال، ساب‌کوئری برای هر ردیف از کوئری اصلی اجرا می‌شه و میانگین حقوق رو برای دپارتمان خاص اون ردیف محاسبه می‌کنه.

SELECT name
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);


🔵 استفاده از ساب‌کوئری‌ها در بخش‌های مختلف کوئری

🔵ساب‌کوئری در عبارت SELECT: ساب‌کوئری‌ها می‌تونن به عنوان یک ستون در عبارت SELECT استفاده شن. در مثال زیر، تعداد پروژه‌هایی که هر کارمند مدیریت می‌کنه به عنوان یک ستون اضافی در نتایج کوئری اصلی نشون داده می‌شه.

SELECT name, (SELECT COUNT(*) FROM projects WHERE manager_id = e.employee_id) AS project_count
FROM employees e;


🔵ساب‌کوئری در عبارت FROM: ساب‌کوئری‌ها می‌تونن به عنوان یک جدول موقت در عبارت FROM استفاده شن. در مثال زیر، ساب‌کوئری میانگین حقوق هر دپارتمان رو محاسبه می‌کنه و به عنوان یک جدول موقت (sub) استفاده می‌شه تا دپارتمان‌هایی که میانگین حقوقشون بالاتر از ۵۰۰۰۰ هست انتخاب شن.

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;


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

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

🔵 بهینه‌سازی ساب‌کوئری‌ها: ایجاد ایندکس‌ روی ستون‌هایی که در ساب‌کوئری‌ها استفاده می‌کنن سرعت اجرای کوئری رو افزایش می‌ده. در بعضی موارد می‌شه ساب‌کوئری‌ رو با JOIN جایگزین کرد تا کارایی بهتری داشته باشن؛ تقسیم کوئری‌های پیچیده به کوئری‌های کوچک‌تر و ساده‌تر به بهبود کارایی و خوانایی کمک می‌کنه.

#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👨‍💻21
👨‍🎓 بررسی مفهوم ساب‌کوئری با یک مثال

دو جدول مشتری با ستون‌های 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 هستن که هر کدوم از این دو نوع پایگاه داده ابزارها و نرم‌افزارهای خاص خودشون رو دارن.

🔵 پایگاه داده‌های SQL

🔵یکی از محبوب‌ترین پایگاه داده‌های متن‌باز MySQL هست که توسط شرکت Oracle توسعه و پشتیبانی می‌شه. این پایگاه داده به دلیل سرعت بالا، کارایی مناسب و امنیت قابل قبول در بین توسعه‌دهندگان بسیار محبوبه. MySQL به طور گسترده در وب‌سایت‌ها، برنامه‌های وب و سیستم‌های مدیریت محتوا مثل وردپرس استفاده می‌شه.

🔵پایگاه داده‌ی رابطه‌ای متن‌باز دیگه PostgreSQL به دلیل پشتیبانی از ویژگی‌های پیشرفته و سازگاری با استانداردهای SQL، شناخته شده. این پایگاه داده قابلیت‌های متنوعی مثل پشتیبانی از داده‌های JSON، نسخه‌سازی داده‌ها و پشتیبانی از تراکنش‌های ACID رو داراست که اون رو برای برنامه‌های پیچیده مناسب می‌کنه.

🔵پایگاه داده‌ی Microsoft SQL Server توسط شرکت مایکروسافت توسعه پیدا کرده. این پایگاه داده به دلیل یکپارچگی با محصولات مایکروسافت مثل ویژوال استودیو و Azure، امنیت بالا و امکانات پیشرفته‌ی مدیریت داده‌ها، در بین شرکت‌ها و سازمان‌های بزرگ محبوبیت داره.

🔵پایگاه داده‌های رابطه‌ای Oracle Database توسط شرکت اوراکل توسعه پیدا کرده و به دلیل پشتیبانی از پردازش موازی، مدیریت حجم‌های بزرگ داده و امنیت بالا معروفه و به همین دلیل در برنامه‌های حیاتی و سیستم‌های بزرگ مالی و بانکی استفاده می‌شه.

🔵 پایگاه داده‌های NoSQL

🔵پایگاه داده‌ی MongoDB داده‌ها رو به صورت JSON-like ذخیره می‌کنه و به دلیل انعطاف‌پذیری در ساختار داده‌ها، مقیاس‌پذیری بالا و پشتیبانی از ویژگی‌هایی مثل جستجوی کامل متن و تجمع داده‌ها، بسیار محبوبه. MongoDB در برنامه‌های وب، برنامه‌های موبایل و تحلیل داده‌ها به طور گسترده استفاده می‌شه.

🔵یک پایگاه داده‌ی ستونی توزیع‌شده Cassandra هست که توسط Apache Software Foundation توسعه پیدا کرده. این پایگاه داده به دلیل مقیاس‌پذیری بالا، تحمل خطای زیاد و کارایی مناسب در مدیریت حجم‌های بزرگ داده، در بین شرکت‌های نت‌فلیکس و توییتر استفاده می‌شه.

🔵یک پایگاه داده‌ی کلید-مقدار در حافظه Redis هست که برای ذخیره و مدیریت داده‌های موقتی و دایمی استفاده می‌شه. Redis به دلیل سرعت بسیار بالا، پشتیبانی از ساختارهای داده‌ی پیچیده و قابلیت اجرای عملیات ACID، در برنامه‌های وب، کش‌های توزیع‌شده و پیام‌رسانی بلادرنگ استفاده می‌شه.

🔵 ابزارهای مدیریت و توسعه پایگاه داده

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

🔵ابزار تحت وب phpMyAdmin برای مدیریت پایگاه داده‌های MySQL و MariaDB هست. phpMyAdmin به دلیل رابط کاربری ساده و قابلیت‌های گسترده، بسیار محبوبه.

🔵ابزار pgAdmin برای مدیریت پایگاه داده‌های PostgreSQL هست. این ابزار امکان مدیریت و توسعه پایگاه داده‌های PostgreSQL را از طریق یک رابط کاربری گرافیکی فراهم می‌کنه.

🔵ابزار MongoDB Compass برای مدیریت پایگاه داده‌های MongoDB هست. این ابزار به کاربران امکان می‌ده تا داده‌ها رو به صورت بصری مشاهده و ویرایش کنن، کوئری‌های پیچیده رو اجرا کنن و شاخص‌ها رو مدیریت کنن.

🔵یک ابزار جامع و چند‌منظوره برای مدیریت پایگاه داده‌ها DBeaver هست که از انواع مختلف پایگاه داده‌ها، SQL و NoSQL، پشتیبانی می‌کنه.

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1👨‍💻1
کوییز شماره ۱۷۸: کدوم یک از ابزارهای زیر یک راه‌حل مجازی‌سازی داده است که می‌تونه داده‌های ناهمگن از منابع مختلف رو یکپارچه کنه و به عنوان یک لایه انتزاعی بین برنامه‌های کاربردی و منابع داده عمل کنه؟
Anonymous Quiz
16%
Denodo
12%
Talend
56%
Apache Drill
16%
Informatica PowerCenter
👍31🤔1👌1😎1
🔖بهترین ابزارهای نرم‌افزاری علم داده

🔠پایگاه داده: PostgreSQL، DuckDB
🔠استخراج داده‌های وب: Beautiful Soup، Zyte
🔠تحلیل داده: Python، R، Tableau
🔠یادگیری ماشین: FastAI، TensorFlow
🔠گزارش‌دهی: Jupyter Notebook

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51👏1👌1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵عملیات CRUD در پایگاه‌های داده
📎 https://t.me/data_ml/630

🔵پرس‌وجو یا Query در پایگاه داده
📎 https://t.me/data_ml/633

🔵به‌کارگیری شرط (WHERE) در پرس‌وجوها
📎 https://t.me/data_ml/636

🔵مفاهیم Group By و Order By در پایگاه‌ داده‌ها
📎 https://t.me/data_ml/639

🔵آشنایی با Subquery یا زیرپرس‌وجو
📎https://t.me/data_ml/642

🔵ابزارها و نرم‌افزارهای پایگاه داده
📎 https://t.me/data_ml/646

🔺 کوئیز

🔵کوییز شماره ۱۷۳: مزایای استفاده از Stored Procedures
📎 https://t.me/data_ml/631

🔵کوییز شماره ۱۷۴: عبارت MERGE در SQL
📎 https://t.me/data_ml/634

🔵کوییز شماره ۱۷۵: بررسی یک کوئری
📎 https://t.me/data_ml/637

🔵کوییز شماره ۱۷۶: از GROUP BY با ROLLUP
📎 https://t.me/data_ml/640

🔵کوییز شماره ۱۷۷: عملگر EXISTS در Subquery
📎 https://t.me/data_ml/644

🔵کوییز شماره ۱۷۸: یک ابزار برای یکپارچه سازی داده
📎 https://t.me/data_ml/647

🔺 نکته

🔵 بلاگ زبان SQL و دستورهای آن برای دیتا ساینس
📎 https://t.me/data_ml/632

🔵تفاوت پایگاه‌های داده SQL و NoSQL
📎 https://t.me/data_ml/635

🔵متداول‌ترین سوالات مصاحبه SQL
📎 https://t.me/data_ml/638

🔵بررسی کامل یک کوئری
📎 https://t.me/data_ml/641

🔵بررسی مفهوم ساب‌کوئری با یک مثال
📎 https://t.me/data_ml/645

🔵بهترین ابزارهای نرم‌افزاری علم داده
📎 https://t.me/data_ml/648

#Weekend
#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2👏2
👩‍🎓 برنامه آموزشی هفته: پایگاه داده‌ها - بخش دوم

🟠شنبه: نرمال‌سازی

🔵یک‌شنبه: ایندکس‌گذاری

🟢دوشنبه: انواع جوین

🔴سه‌شنبه: انبار داده یا Warehousing

🟠چهارشنبه: پایگاه‌های داده NoSQL

🔵پنج‌شنبه: پشتیبان‌گیری و بازیابی

🟢جمعه: جمع‌بندی

#Database

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31👏1👌1
Audio
🟡 توضیحات وبینار رایگان بازارکار علم داده و تحلیل داده

🔵 سرفصل‌ها:
🔵موقعیت‌های شغلی جهانی مرتبط با داده
🔵نحوه جستجو کردن شغل در #لینکدین و ست کردن جاب آلارم
🔵آشنایی با ساختار شرح شغل‌ها و نحوه بهبود صفحه شخصی براساس نیاز شرکت‌ها
🔵بررسی راه‌های شبکه‌سازی در لینکدین
🔵راهکارهای افزایش احتمال موفقیت در تماس اولیه از طرف شرکت‌ها
🔵بررسی ترفندهای جستجو شغل
🔵 ۵ نکته کلیدی در فرآیند جستجو شغل
🔵پنل پرسش و پاسخ

🗓 فردا، ۱۶ تیر
ساعت ۲۰

🟢برای دریافت جزئیات بیشتر و ثبت‌نام رایگان، به لینک زیر سر بزنین:

👉📎 http://ctdrs.ir/cr15841

#Webinars

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥2👏1
👨‍🎓 نرمال‌سازی و نرمال‌زدایی در پایگاه‌های داده

در پایگاه‌های داده، مدیریت بهینه داده‌ها اهمیت خاصی داره. دو تکنیک اساسی که برای بهبود عملکرد و یکپارچگی داده‌ها به کار می‌رن، نرمال‌سازی و نرمال‌زدایی (Normalization and Denormalization) هستن. انتخاب بین این دو روش باید بر اساس نیازها و الزامات سیستم انجام شه تا بهترین عملکرد و کارایی به دست بیاد.

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

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

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

-فرم نرمال اول (1NF): در این فرم، همه ستون‌های جدول باید atomic باشن، یعنی هر ستون باید تنها یک مقدار منحصر به فرد داشته باشه و جداول باید بدون تکرار و چندتایی باشن.

-فرم نرمال دوم (2NF): برای رسیدن به فرم نرمال دوم، اول باید جدول به فرم نرمال اول رسیده باشه. بعد همه ستون‌های غیر کلیدی باید به کلید اصلی به‌طور کامل وابسته باشن، یعنی نباید هیچ‌گونه وابستگی جزئی وجود داشته باشه.

-فرم نرمال سوم (3NF): برای رسیدن به فرم نرمال سوم، اول باید جدول به فرم نرمال دوم رسیده باشه. بعد هیچ‌ کدوم از ستون‌های غیر کلیدی نباید به ستون‌های غیر کلیدی دیگه وابستگی Transitive داشته باشن.

وابستگی ترانزیتی (Transitive Dependency) در پایگاه‌های داده به وضعیتی گفته می‌شه که یک ستون غیر کلیدی به یک ستون غیر کلیدی دیگه وابسته باشه، نه به کلید اصلی.

-فرم نرمال بویس-کاد (Boyce-Codd Normal Form - BCNF): این فرم تکمیل‌کننده فرم نرمال سومه و اطمینان حاصل می‌کنه که هر وابستگی تابعی در جدول، باید تنها و تنها به کلید اصلی وابسته است.

-فرم نرمال چهارم (4NF): این فرم از چند مقدار بودن جداول جلوگیری می‌کنه تا هیچ ترکیب چند مقداری از داده‌ها در یک جدول وجود نداشته باشه.

-فرم نرمال پنجم (5NF): این فرم اطمینان می‌ده که هیچ وابستگی پیوستی در جدول وجود نداره و جداول باید به نحوی باشن که بدون از دست دادن اطلاعات بشه اونها رو به بخش‌های کوچک‌تر تقسیم کرد.

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

🔵 نرمال‌زدایی: نرمال‌زدایی فرآیندیه که طی اون جداول نرمال‌سازی شده به منظور بهبود عملکرد سیستم و کاهش تعداد جستجوها (joins) به شکل اولیه‌شون بازگردانده می‌شن. در واقع، نرمال‌زدایی به معنی اضافه کردن افزونگی کنترل شده به پایگاه داده است.

🔵مزایای نرمال‌زدایی: افزایش سرعت دسترسی به داده‌ها، به دلیل کاهش تعداد جستجوها و بهبود زمان دسترسی، کاهش پیچیدگی جستجوها و ساده‌تر شدن اونها، بهبود عملکرد کلی سیستم به دلیل بهینه‌سازی دسترسی به داده‌ها و کاهش تعداد جستجوها.

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

🔵کاربردهای نرمال‌زدایی: نرمال‌زدایی بیشتر در سیستم‌هایی که نیاز به خوندن سریع داده‌ها دارن و عملیات نوشتن و به‌روزرسانی کمتر انجام می‌شه، به کار می‌ره. مثال‌هایی از این سیستم‌ها شامل پایگاه‌های داده‌ی تحلیلی و انبارهای داده (Data Warehouses) هستن.

#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