Programowanie
1.08.2025

Załóż nazwy tabel i wygenerujesz kod SQL do znalezienia tweetów Elona Muska z 2019 roku - Prompt do ChatGPT

Zaprojektuj skalowalny schemat bazy tweetów i pakiet SQL: DDL, indeksy, widoki, analityka, optymalizacja, partycjonowanie, bezpieczeństwo. Gotowe do wdrożenia w wielu DBMS.

Co robi ten prompt:

  • Projektuje schemat bazy danych dla użytkowników i tweetów, definiując tabele, kolumny i relacje między nimi.
  • Generuje zoptymalizowane zapytania SQL do wyszukiwania danych w różnych dialektach (PostgreSQL, MySQL, T-SQL) na podstawie podanych kryteriów.
  • Służy jako narzędzie edukacyjne i praktyczne do nauki projektowania baz danych i pisania wydajnych zapytań SQL dla typowych scenariuszy.
SQLmodel danychanaliza tweetówoptymalizacja

Treść prompta do skopiowania

Dane wejściowe:
Nazwa użytkownika:
Rok:
Dialekt SQL:

Jesteś doświadczonym inżynierem danych specjalizującym się w projektowaniu schematów baz danych i optymalizacji zapytań SQL dla dużych zbiorów danych, takich jak archiwa mediów społecznościowych.

Zadanie (Cel): Twoim zadaniem jest stworzenie kompletnego rozwiązania SQL do znalezienia wszystkich tweetów konkretnego użytkownika z określonego roku.

  1. Zaproponuj schemat bazy danych: Załóż i opisz dwie niezbędne tabele: users (do przechowywania informacji o użytkownikach) i tweets (do przechowywania treści tweetów). Zdefiniuj kluczowe kolumny, w tym klucze główne i obce, które łączą te tabele.
  2. Wygeneruj kod SQL: Napisz zoptymalizowane zapytanie SQL, które wykorzysta zaproponowany schemat do odfiltrowania tweetów na podstawie [Nazwa użytkownika] i [Rok]. Zapytanie musi być zgodne ze wskazanym [Dialekt SQL].
  3. Dodaj komentarze: W kodzie SQL umieść zwięzłe komentarze wyjaśniające kluczowe operacje (np. JOIN, warunki WHERE).

Format Odpowiedzi:

1. Proponowany Schemat Bazy Danych:

  • Tabela users: Krótki opis i lista kluczowych kolumn (np. user_id, username, full_name).
  • Tabela tweets: Krótki opis i lista kluczowych kolumn (np. tweet_id, user_id (klucz obcy), content, created_at).

2. Kod SQL:

  • Użyj bloku kodu Markdown (```sql) dla wygenerowanego zapytania.

3. Wyjaśnienie Logiki:

  • W 2-3 zdaniach opisz, jak zapytanie łączy tabele i filtruje dane, aby uzyskać pożądany wynik.

Najważniejsze: Skoncentruj się na zaproponowaniu realistycznego i wydajnego schematu z poprawnie zdefiniowaną relacją users -> tweets. Kluczowe jest, aby wygenerowany kod SQL był bezpośrednio powiązany z tym schematem, a funkcja do obsługi daty (np. EXTRACT(YEAR FROM ...) w PostgreSQL lub YEAR(...) w MySQL) była precyzyjnie dopasowana do podanego [Dialekt SQL]. Zaproponuj również potencjalne indeksy (np. na users.username i tweets.created_at) dla optymalizacji wydajności.

7

Jak używać tego prompta:

Należy uzupełnić pola w nawiasach kwadratowych: [Nazwa użytkownika], [Rok] oraz [Dialekt SQL]. Przykładowo, aby znaleźć tweety Billa Gatesa z 2021 roku dla bazy danych MySQL, należy wpisać: [Nazwa użytkownika: Bill Gates], [Rok: 2021], [Dialekt SQL: MySQL]. Dla pola [Dialekt SQL] możesz podać jedną lub więcej wartości oddzielonych przecinkami, np. 'PostgreSQL, T-SQL'.

Dobrze wiedzieć

Kluczowym elementem wydajności w tego typu zapytaniach jest odpowiednie indeksowanie. Prompt sugeruje stworzenie indeksów na kolumnach users.username i tweets.created_at. W praktyce, indeks na kluczu obcym (tweets.user_id) jest równie ważny, ponieważ przyspiesza operacje łączenia tabel (JOIN). Bez indeksów, baza danych musiałaby skanować całe tabele w poszukiwaniu pasujących wierszy, co przy milionach rekordów byłoby niezwykle wolne.

Zaproponowany schemat jest prosty i zoptymalizowany pod kątem odczytu dla tego konkretnego zadania. W bardziej złożonych systemach social media, dane takie jak hashtagi, wzmianki o innych użytkownikach czy załączniki multimedialne często przechowuje się w osobnych tabelach (np. hashtags, tweet_hashtags). Taki zabieg, zwany normalizacją, pomaga unikać redundancji danych i ułatwia zarządzanie bazą, choć może wymagać bardziej skomplikowanych zapytań z większą liczbą złączeń.

Sprawdź również