Поколение Python 🐍
50.3K subscribers
2K photos
16 videos
6 files
866 links
Серия курсов по языку Python от BEEGEEK 🐝.

Сайт: pygen.ru
Мерч: shop.pygen.ru
Чат: @pygen_ru_comments
Бот: @pygen_ru_bot
Поддержка: @pygen_ru_support

Перечень РКН: https://www.gosuslugi.ru/snet/673650d605391b3bfb5541c0
Download Telegram
Друзья, сегодня поговорим о positional-only и keyword-only параметрах функций. 😉

❤️Параметры positional-only — это параметры, которым можно передать только позиционные аргументы. В определении функции такие параметры указываются перед символом /, который записывается как один из параметров.

В приведенном ниже коде:

def add(a, /, b=2):
return a + b

print(add(1, 3)) # 4
print(add(1, b=3)) # 4


a — параметр positional-only, b — обычный необязательный параметр.

Если positional-only параметру передать именованный аргумент, будет возбуждено исключение TypeError.

❤️Параметры keyword-only — это параметры, которым можно передать только именованные аргументы. В определении функции такие параметры указываются после символа *, который записывается как один из параметров.

В приведенном ниже коде:

def add(a, *, b=2):
return a + b

print(add(a=1, b=3)) # 4
print(add(1, b=3)) # 4


a — обычный обязательный параметр, b — параметр keyword-only.

Если keyword-only параметру передать позиционный аргумент, будет возбуждено исключение TypeError.

😌 Параметры positional-only и keyword-only можно использовать одновременно в одном определении функции, в том числе вместе с обязательными и необязательными параметрами в любых сочетаниях, например, так:

def add(a, /, b, c, *, d):
return a + b + c + d


❤️Основная цель добавления параметров positional-only и keyword-only — это улучшение читаемости и ясности кода, а также бóльшая гибкость в управлении интерфейсом функций. Например, параметры positional-only позволяют менять имена в определении функции без риска нарушить обратную совместимость, а параметры keyword-only гарантируют ясность и узнаваемость при вызове функции.

Ставьте реакцию:


🔥 — если знали про positional-only и keyword-only параметры
👀 — если слышите о них впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#поколениеpython #полезныйматериал
Please open Telegram to view this post
VIEW IN TELEGRAM
👀80🔥529❤7👍33👏2💯1🆒1
Друзья, баги повсюду! 😁

Попробуйте замените слово в названии фильма словом "баг". 🪲

Мы начнем:

🌱Унесенные багами
🌱Список багов
🔵Темный баг

Ставьте реакцию:

🔥 — если угадали оригиналы всех фильмов из поста
👀 — если что-то осталось непонятным

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥58👀37108👾3🙊2❤1🆒1
Друзья, разберем задачу с собеседований! 😌

📍Данную задачу можно решить несколькими способами. Приведем один из них:

def restore_values(nums):
n = len(nums)
result = [0] * n
min_value = min(nums) // 2
for i in range(n):
result[i] = nums[i] - min_value
return result


💡 Минимальный элемент в исходном списке остался минимальным и после прибавления, только увеличился вдвое. Заведем вспомогательный список result c размером, равным размеру входного списка, и заполним его нулями. С помощью функции min() определим минимальный элемент входного списка. В цикле проходим по всем элементам списка result и записываем значение соответствующего элемента входного списка за вычетом минимального значения, уменьшенного вдвое. По завершении цикла возвращаем список result.

Также можно воспользоваться списочным выражением:

def restore_values(nums):
min_value = min(nums) // 2
return [num - min_value for num in nums]


⬇️Как вы думаете, какова временнáя и пространственная сложность данного алгоритма? Пишите в комментариях. 😉

Ставьте реакцию:

🔥 — если задача показалась вам легкой
👀 — если пришлось основательно подумать над решением

#поколениеpython #собеседования #разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥4120👀13❤104👏2
Друзья, собрали для вас дайджест публикаций “Поколения” за май. Будем считать его списком чтения на лето! 😉

😵‍💫 ЗАДАЧИ

🟢Задача на код №1 и ее разбор
🟢Задача на код №2 и ее разбор
🟢Задача про скорость парохода и ее разбор
🟢Вопрос с собеседования про магический метод new() и ответ на него

😎 ПОЛЕЗНЫЕ МАТЕРИАЛЫ

🟢Слово недели. Линтер
🟢Слово недели. Миксин
🟢Слово недели. Трассировка стека
🟢Группировка данных в SQL
🟢Транзитивность операторов
🟢Метод двух указателей
🟢Positional-only и keyword-only параметры функций

😮 ПОЗНАВАТЕЛЬНЫЕ ПОСТЫ

🟢Кто такие фрилансеры
🟢Структура компьютерной памяти
🟢Парадокс дней рождения

👩‍❤️‍👨 НОВОСТИ “ПОКОЛЕНИЯ”

🟢Подарки за покупку мерча до 6 июня
🟢Много новых пинов на Озоне
🟢Ответы на вопросы от Тимура
🟢“Поколение” поддержало мероприятие для школьников

Ставьте ❤️ и сохраняйте пост в избранное, чтобы ничего не пропустить!

#дайджест #май2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32👍117🔥43🏆2👾2👻1
Друзья, а вот и новое слово недели! Сегодня поговорим о транзакциях в базах данных. 🙂

🟪 Нередко при работе с базой данных возникает ситуация, когда нужно выполнить несколько разных действий, но смысл они имеют только при совместном выполнении.

Предположим, что мы пишем банковское ПО, которое должно выполнять три действия:

▫списание денег со счета отправителя
▫добавление денег на счет получателя
▫сохранение информации о произведенном переводе денег

Если во время выполнения любого из этих действий возникнет ошибка, то остальные два тоже нужно отменить.

✔ Такая совокупность связанных действий представляет собой транзакцию. Действия, составляющие транзакцию, должны быть выполнены только все вместе.

🟪 Транзакции обрабатываются транзакционными системами, к которым существует набор требований — ACID. К этим требованиям относятся:

1⃣Atomicity (атомарность): любая транзакция не может быть частично завершена — она либо выполнена, либо нет.

2⃣Consistency (согласованность): завершившаяся транзакция должна сохранять согласованность базы данных.

3⃣Isolation (изолированность): транзакция не должна оказывать влияния на результаты других выполняющихся параллельно с ней транзакций.

4⃣Durability (устойчивость): изменения, которые сделаны успешно завершенной транзакцией, должны остаться сохраненными после возвращения системы в работу.

😉 Транзакции являются фундаментальным механизмом обеспечения надежности и согласованности данных в любых серьезных приложениях, работающих с базами данных.

Почитать о транзакциях подробнее можно по ссылке.

Ставьте реакцию:

🔥 — если знали, что такое транзакция
👀 — если слышите этот термин впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥68👀42❤15114✍2🆒2
Друзья, решаем задачу, от которой очень хочется мороженого! 😁

🧠🧠🧠🧠

Команда "Поколения" решила подарить Тимуру целую коробку мороженого. Им нужно выяснить, какое именно мороженое любит Тимур.

Команда опросила трех знакомых Тимура, и все они сказали разные вещи:

🩵первый сказал, что Тимур любит малиновый щербет
🩵второй уверен, что Тимур обожает шоколадный пломбир
🩵третий сообщил, что Тимур любит джелато, но точно не малиновое

С помощью детектора лжи, который нашелся у Артура старшего, команде удалось выяснить, что каждый опрошенный ошибся или в виде, или во вкусе мороженого. 😔

Помогите команде "Поколения" найти ответ! Свои варианты и ход мысли пишите в комментариях, не забывая про скрытый текст.

Ставьте реакцию:

🔥 — если любите мороженое
👀 — если равнодушны к нему

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥99👀29❤85⚡1🏆1🍾1👨‍💻11
Друзья, сегодня поговорим о системах счисления. 😍

❤️Система счисления — это способ записи чисел с помощью определенного набора символов, называемых цифрами.

Сегодня существует множество разных систем счисления. В одних системах значение каждой цифры зависит от ее позиции в записи числа, а в других — нет. На основе этого свойства все системы счисления делятся на две группы: позиционные и непозиционные.

❤️Непозиционная система счисления — это система счисления, в которой значение каждой цифры не зависит от ее позиции в записи числа. Где бы цифра ни находилась, она всегда имеет одно и то же значение.

К непозиционным системам счисления относятся, например:

❤️унарная
❤️египетская, представлена на картинке 😵‍💫
❤️римская

❤️Позиционная система счисления — это система счисления, в которой значение каждой цифры зависит от ее позиции в записи числа. При перемещении цифры с одного места на другое ее значение меняется.

К позиционным системам счисления относятся, например:

❤️двоичная
❤️десятичная, является основной и используется повсеместно
❤️шестнадцатеричная

😌 Существует мнение, что десятичная система счисления стала основной, потому что в древности люди для подсчета предметов загибали пальцы рук. Их у человека десять, поэтому люди стали считать вещи десятками.

😃 Раньше в Китае использовалась пятеричная система счисления, основанная на количестве пальцев на одной руке. У ацтеков, майя и некоторых народов Африки применялась двадцатеричная система, которая учитывала общее число пальцев на руках и ногах. Помимо этого существовала двенадцатеричная система, основанная на подсчете фаланг пальцев.

Ставьте реакцию:

🔥 — если знали о всех перечисленных системах счисления
👀 — если узнали о некоторых впервые

#поколениеpython #япознаюмир #системысчисления
Please open Telegram to view this post
VIEW IN TELEGRAM
60👀80🔥62❤1576👍2❤‍🔥1👻1
Друзья, принесли вам новый вопрос с собеседований! 😌

Что такое метод класса? Как его создать? Чем методы класса отличаются от методов экземпляра класса?

🤍 Делитесь в комментариях своими ответами на вопрос! 😍

Ставьте реакцию:

🔥 — если уже прошли собеседование и работаете в IT
❤️ — если еще на пути к этой цели

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
❤92🔥21123👍2👻2❤‍🔥1
Друзья, сегодня поговорим о методе скользящего окна. 😌

📎 Ранее мы рассмотрели технику обработки последовательностей под названием метод двух указателей. Вариант реализации метода двух указателей, при котором направление движения указателей совпадает, часто выделяют в качестве отдельной техники и называют методом скользящего окна. Под окном здесь подразумевается область, заключенная между указателями, которая "скользит" вдоль последовательности и просматривает часть ее элементов.

✔️ Указатели могут находится на одинаковых или разных начальных позициях и перемещаться в одном направлении с равной или неравной скоростью. Например:

🟢два указателя движутся направо с неравной скоростью, начиная с одной и той же позиции — первой

[1, 2, 3, 4, 5, 6]
↑↑


🟢два указателя движутся направо с равной скоростью, при этом один из них начинает с первой позиции, а другой — с третьей

[1, 2, 3, 4, 5, 6]
↑ ↑

🟢два указателя движутся направо с неравной скоростью, при этом один из них начинает с первой позиции, а другой — с четвертой

[1, 2, 3, 4, 5, 6]
↑ ↑

✔️ Если указатели движутся с одинаковой скоростью, то длина образованного ими окна всегда будет одной и той же. Если же указатели движутся с разной скоростью, то длина образованного ими окна постоянно меняется.

📎 Метод скользящего окна позволяет эффективно решать множество различных задач, связанных с обработкой последовательностей. Он довольно часто встречается на алгоритмических собеседованиях. 😉

Ставьте реакцию:

🔥 — если знали о методе скользящего окна
👀 — если узнали о нем впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#поколениеpython #курспоалгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
👀76🔥37❤1454❤‍🔥1🤝1
Друзья, открылся последний модуль в нашем новом курсе "Алгоритмы и структуры данных для начинающих"! 😍

В модуль "Структуры данных" вошли темы:

🟢односвязный список
🟢двусвязный список
🟢кольцевой список
🟢стек
🟢очередь
🟢дек

Всего в этом модуле 116 тестовых задач и 96 задач на программирование. После того, как решите их все, у вас точно не останется вопросов по этим темам. 😁

☝️☝️☝️☝️ Совсем скоро появятся последние уроки по хеш-таблицам, и курс будет готов на 100%. После этого мы приступим к курсу для продвинутых. 😎 Если хотите первым узнать о его выходе (и о бонусах к курсу), оставьте заявку на сайте.

🚨🚨⚠️🚨☝️ Также скоро в курсе откроются тестовые алгоритмические собеседования. Их цель — проверить ваши знания по алгоритмам и структурам данных и помочь подготовиться к реальному трудоустройству.

❗️Тем, кто не успел купить курс на весенней распродаже, дарим промокод АЛГОСЫ. С ним курс по алгоритмам для начинающих будет стоить 4790 рублей вместо 6900. Доступно всего 1️⃣0️⃣ активаций промокода.

Ставьте реакцию:

🔥 — если уже проходите курс по алгосам
👀 — если пока проходите другие курсы

#поколениеpython #алгоритмы #скидки
Please open Telegram to view this post
VIEW IN TELEGRAM
👀79🔥47❤135👍43👻2❤‍🔥1👏1🎉1🎄1
Друзья, отвечаем на вопрос с собеседований! 😎

🌱Методы класса, как следует из названия, тесно связаны с классом, в котором они определены. В отличие от методов экземпляра, имеющих обязательный параметр self, указывающий на экземпляр класса, методы класса имеют обязательный параметр cls, который указывает на сам класс.

🌱Методы класса имеют возможность менять состояние класса, а это, в свою очередь, отражается на всех экземплярах данного класса. Однако менять состояние конкретного объекта, как это делают методы экземпляра, они не могут, так как имеют доступ лишь к классу.

🌱Для создания методов класса используется декоратор @classmethod.

Приведенный ниже код:

class MyClass:
@classmethod
def my_classmethod(cls):
print('Это метод класса')
print(cls)


MyClass.my_classmethod()


создает в классе MyClass метод класса my_classmethod() и выводит:

Это метод класса
<class '__main__.MyClass'>

😌 Присутствие параметра cls в методе класса обязательное. Мы не обязаны называть его cls, однако рекомендуется действовать согласно общепринятой практике.

Ставьте реакцию:

🔥 — если знали ответ на вопрос
👀 — если пришлось гуглить

#поколениеpython #собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👀2912❤55✍2👾2🎉1
Друзья, а вы знали, что встроенная в Python функция type() — это не просто функция, возвращающая тип объекта? 😨

🌱На самом деле type() — это класс, который имеет два варианта использования: с одним и с тремя аргументами.

🌱В первом случае класс type принимает в качестве аргумента объект и возвращает его тип.

Приведенный ниже код:
print(type(3.14))
print(type('beegeek'))


выводит:
<class 'float'>
<class 'str'>

🌱Во втором случае класс type динамически создает новый класс, принимая в качестве обязательных аргументов:

🌱name — имя создаваемого класса
🌱bases — кортеж родительских классов
🌱dict — словарь атрибутов нового класса

Аргумент name становится атрибутом __name__, аргумент bases — атрибутом __bases__, а аргумент dict — атрибутом __dict__ нового класса.

Приведенный ниже код:
class Animal: 
pass

Dog = type('Dog', (Animal,), {'sound': 'woof'})

print(Dog.__name__)
print(Dog.__bases__)
print(Dog.__dict__)


выводит:
Dog
(<class '__main__.Animal'>,)
{'sound': 'woof', '__module__': '__main__', '__doc__': None}

🌱Python использует класс type внутренне для создания всех классов, то есть любой класс в Python является экземпляром класса type. Поэтому класс type называют метаклассом, а программирование с использованием метакласса называется метапрограммированием.

Метапрограммирование позволяет быстро и элегантно реализовать некоторые сложные паттерны проектирования. Оно используется во многих инструментах языка. Например, популярный фреймворк Django использует метаклассы, чтобы обеспечить расширяемость и простое переиспользование кода. Однако концепции метапрограммирования зачастую сложны для понимания.

😌 Тим Питерс, один из разработчиков ядра Python, сказал про метапрограммирование следующее:

Если вы задаетесь вопросом, нужны ли вам метаклассы, значит, не нужны. Люди, которым нужны метаклассы, точно знают, что нуждаются в них, и не нуждаются в объяснениях почему.


Почитать подробнее о метапрограммировании в Python можно по ссылке.

Ставьте реакцию:

🔥 — если знали о метапрограммировании
👀 — если слышите о нем впервые

#поколениеpython #полезныйматериал #метапрограммирование
Please open Telegram to view this post
VIEW IN TELEGRAM
66👀116🔥49❤7👨‍💻764🤩3💯2✍1😁1🏆1
Друзья, а вы кто в мире программирования? 😁

Пишите в комментариях, что у вас получилось!

Ставьте реакцию:

🔥 — если получилось что-то осмысленное
👀 — если совсем не про вас

#поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥59👀4815❤76👍2👻1🙈1💘1
Друзья, давайте разберем задачу про любимое мороженое Тимура. 🍦

Алгоритм решения задачи содержит элементы перебора.

1️⃣ Возьмем первое утверждение и предположим, что первая часть верна, а вторая — нет. Затем сверим этот вариант с остальными утверждениями.

Итак, предположим, что Тимур любит малиновое мороженое, но точно не щербет.

Тогда во втором утверждении ошибочно указан шоколадный вкус, а правда — что Тимуру нравится пломбир.

Итак, любимое мороженое Тимура — малиновый пломбир? Но нет, это вступает в противоречие с третьим утверждением.

2️⃣ Получается, что в первом утверждении правда — про щербет, а про малиновый вкус — ошибка.

Тогда во втором утверждении указан правильный вкус — шоколадный.

Проверяем правильность версии третьим утверждением. В нем ошибочна часть про джелато, а вторая часть верна: шоколадный вкус — совсем не малиновый.

Любимое мороженое Тимура — шоколадный щербет (если он, конечно, вообще существует 😃).

Ставьте реакцию:

🔥 — если легко справились с задачей
👀 — если запутались в утверждениях

#разборзадачи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👀28😁7❤443🥰1💯1
Друзья, продолжаем отвечать на вопросы подписчиков! Сегодня у нас два вопроса о планах "Поколения". 😉

⭐️ Планы на линейку курсов "Поколение Python"?

Ближайшие три курса:

🔵 "Поколение Python: курс для самураев" уже находится в разработке. В нем будут раскрыты такие темы, как аннотации типов, логирование, юнит-тестирование и многое другое

🔵Вторая часть курса по алгоритмам, в которой будут раскрыты такие темы, как рекурсия, быстрые сортировки, динамическое программирование, жадные алгоритмы, деревья и многое другое.

🔵Курс "Математика для программистов". В нем рассмотрим разделы математики, полезные для программистов: математический анализ, теория вероятностей, комбинаторика, статистика, основы алгебры и геометрии и многое другое

⏳ Над этими курсами мы будем работать в 2025 и 2026 году.

☝️☝️☝️☝️ На нашем сайте вы можете подписаться на новости о каждом из этих курсов и первым узнать о его выходе.

⭐️ Планируется ли курс по Django?

Мы думаем над таким курсом, но конкретных решений пока не приняли, поскольку ближайшие полтора года уже распланированы.

Ставьте реакцию:

🔥 — если хотите курс по Django от "Поколения"
👀 — если вам такой курс неинтересен

#поколениеpython #ответнавопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥196👀491410❤9👍4❤‍🔥2🍾2😇1👾11
Друзья, продолжаем рубрику "Слово недели"! Сегодня поговорим об интроспекции в программировании. 😌

✔️ Интроспекция позволяет получать информацию о свойствах объектов, их методах, документации и других метаданных без необходимости изучать исходный код вручную. Это может быть полезно при анализе механизмов работы программы и поиске ошибок.

✔️ К наиболее важным инструментам интроспекции в Python относятся:

➖функция id() возвращает адрес объекта в памяти

➖функция dir() возвращает отсортированный по алфавиту список атрибутов и методов, доступных для объекта

➖функция type() возвращает тип объекта

➖функция isinstance() позволяет проверить, является ли переданный объект экземпляром переданного класса (с учетом наследования)

➖функция help() позволяет получить строку документации (docstrings) объекта

➖функция hasattr() проверяет, есть ли у объекта указанный атрибут

➖модуль inspect предоставляет ряд функций для получения подробной информации об объектах

😉 Почитать подробнее о данных инструментах интроспекции можно в документации по ссылкам:

🟢функция id()
🟢функция dir()
🟢функция type()
🟢функция isinstance()
🟢функция help()
🟢функция hasattr()
🟢модуль inspect

Ставьте реакцию:

🔥 — если знали, что такое интроспекция
👀 — если слышите этот термин впервые

🔝🔝🔝Сохраняйте пост в избранное, точно пригодится! ✍🏻

#словонедели #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
👀105🔥30❤863🏆1🫡1
Друзья, сегодня приготовили для вас графическую задачу. 👀

Внимательно посмотрите на пять квадратов на картинке. Вам необходимо определить, по какому принципу строится последовательность рисунков и какие клетки будут закрашены в следующем квадрате.

Свои варианты скидывайте в комментариях, не забывая, что картинки тоже нужно скрывать. 😉

Ставьте реакцию:

🔥 — если любите графические задачи
👀 — если предпочитаете текстовые задачи

#задача #поколениеpython
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45👀18❤553👾2❤‍🔥1😁1🏆1🤗1
Друзья, а вы знали, что в информатике существует понятие "алгоритм страуса"? 😁

🥚 Алгоритм страуса — стратегия, при которой потенциальные проблемы игнорируются, потому что они слишком маловероятны.

Такой подход можно использовать для решения проблемы с взаимоблокировками в параллельном программировании, если они очень редки, а стоимость их предотвращения высока.

Ставьте реакцию:

🔥 — если используете алгоритм страуса в реальной жизни
👀 — если пытаетесь предусмотреть даже самые маловероятные проблемы

#поколениеpython #япознаюмир #алгоритмстрауса #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥79👀65❤98👍5❤‍🔥2🌚22👾1
Друзья, принесли вам новую задачу с собеседований! 😄

🤣😀😆😀😝😀
▫️▫️▫️▫️▫️▫️▫️
Реализуйте функцию third_max_value(), которая принимает один аргумент:

🟣nums – список целых чисел (3 ≤ len(nums) ≤ 10⁶)

Функция должна возвращать третий максимум списка nums.

Примечание. Третий максимум — это элемент, который будет стоять третьим с конца, если список отсортировать по неубыванию.
▫️▫️▫️▫️▫️▫️▫️

📎 Примеры тестовых данных: 😉

print(third_max_value([1, 2, 3]))  # 1


print(third_max_value([4, 4, 4]))  # 4


print(third_max_value([4, 8, 6, 10]))  # 6


⤵ Пишите свой ход рассуждений и решения в комментариях, не забывая прятать их под скрытым текстом. 😎

☝️☝️☝️☝️ Больше алгоритмических задач ищите в курсе "Алгоритмы и структуры данных для начинающих". Купить курс можно на нашем официальном сайте по ссылке.

Ставьте реакцию:

❤️ — если любите разбирать сложные задачи
👀 — если предпочитаете более простые вопросы

#поколениеpython #собеседования #задачанакод
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5111👀10🙈5❤‍🔥3🔥22👍1🎄1
Друзья, сегодня поговорим о первичных и внешних ключах в реляционных базах данных. 🖥

✔️ Первичный ключ (Primary Key) — это уникальный идентификатор записи в таблице. Первичный ключ, состоящий из одного поля, называют простым, а из нескольких полей — составным.

Также первичные ключи подразделяют на суррогатные и естественные:

🟢суррогатные первичные ключи создаются специально для идентификации записей таблицы, их значения не имеют прямого отношения к самим данным. К суррогатным ключам относятся, например, числовые id записей

🟢естественные первичные ключи непосредственно связаны с реальными данными. Например, в таблице, хранящей данные людей, естественным ключом может выступать поле, содержащее номер паспорта человека

✔️ Внешний ключ (Foreign Key) — это столбец или набор столбцов в одной таблице, который ссылается на первичный ключ в другой таблице. Внешний ключ используется для установления связей между таблицами.

Внешние ключи могут ссылаться на первичный ключ не только другой таблицы, но и той, в которой находится сам внешний ключ. Такие внешние ключи называют рекурсивным. Они используются для установления связей между разными записями в одной и той же таблице.

☝️☝️☝️☝️ Подробно о ключах рассказываем в курсе "Базы данных и SQL". Купить курс можно на нашем официальном сайте по ссылке.

Ставьте реакцию:


🔥 — если знали о первичных и внешних ключах
👀 — если слышите эти понятия впервые

#поколениеpython #базыданных #sql
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥72👀42❤134❤‍🔥32👏1🫡1👾1