{"id":628,"date":"2023-09-04T16:45:00","date_gmt":"2023-09-04T14:45:00","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=628"},"modified":"2023-09-05T14:38:22","modified_gmt":"2023-09-05T12:38:22","slug":"relacje-w-mysql-podstawy","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/relacje-w-mysql-podstawy\/","title":{"rendered":"Relacje w MySQL: Podstawy"},"content":{"rendered":"<p>W bazach danych relacyjnych, takich jak MySQL, dane s\u0105 przechowywane w tabelach, kt\u00f3re mog\u0105 by\u0107 powi\u0105zane ze sob\u0105 poprzez relacje. <!--more-->Relacje umo\u017cliwiaj\u0105 efektywne przechowywanie i zarz\u0105dzanie danymi. W tym artykule om\u00f3wimy podstawy tworzenia relacji w MySQL na przyk\u0142adzie tabel: &#8222;uzytkownicy&#8221;, &#8222;zamowienia&#8221; i &#8222;produkty&#8221;.<\/p>\n<h2>Tworzenie tabel<\/h2>\n<p>Zacznijmy od stworzenia trzech tabel, kt\u00f3re b\u0119d\u0105 nam potrzebne do zobrazowania na przyk\u0142adzie podstawowych relacji w MySQL:<\/p>\n<p><code>CREATE TABLE uzytkownicy (<\/code><br \/>\n<code>id INT PRIMARY KEY AUTO_INCREMENT,<\/code><br \/>\n<code>imie VARCHAR(50) NOT NULL,<\/code><br \/>\n<code>nazwisko VARCHAR(50) NOT NULL,<\/code><br \/>\n<code>email VARCHAR(100) UNIQUE NOT NULL<\/code><br \/>\n<code>);<\/code><\/p>\n<p><code>CREATE TABLE produkty (<\/code><br \/>\n<code>id INT PRIMARY KEY AUTO_INCREMENT,<\/code><br \/>\n<code>nazwa VARCHAR(100) NOT NULL,<\/code><br \/>\n<code>cena DECIMAL(10,2) NOT NULL<\/code><br \/>\n<code>);<\/code><\/p>\n<p><code>CREATE TABLE zamowienia (<\/code><br \/>\n<code>id INT PRIMARY KEY AUTO_INCREMENT,<\/code><br \/>\n<code>id_uzytkownika INT,<\/code><br \/>\n<code>id_produktu INT,<\/code><br \/>\n<code>ilosc INT NOT NULL,<\/code><br \/>\n<code>FOREIGN KEY (id_uzytkownika) REFERENCES uzytkownicy(id),<\/code><br \/>\n<code>FOREIGN KEY (id_produktu) REFERENCES produkty(id)<\/code><br \/>\n<code>);<\/code><\/p>\n<p>W powy\u017cszym kodzie stworzyli\u015bmy trzy tabele. Najwa\u017cniejsza cz\u0119\u015b\u0107 dotycz\u0105ca relacji to klucze obce (FOREIGN KEY) w tabeli &#8222;zamowienia&#8221;, kt\u00f3re odnosz\u0105 si\u0119 do tabel &#8222;uzytkownicy&#8221; i &#8222;produkty&#8221;.<\/p>\n<h2>Relacje mi\u0119dzy tabelami<\/h2>\n<p>W naszym przyk\u0142adzie tabela &#8222;zamowienia&#8221; jest tabel\u0105 \u0142\u0105cz\u0105c\u0105, kt\u00f3ra reprezentuje relacj\u0119 mi\u0119dzy &#8222;uzytkownikami&#8221; a &#8222;produktami&#8221;. Dzi\u0119ki tej tabeli wiemy, kt\u00f3ry u\u017cytkownik zam\u00f3wi\u0142 jaki produkt i w jakiej ilo\u015bci.<\/p>\n<p>Klucze obce w tabeli &#8222;zamowienia&#8221; wskazuj\u0105 na rekordy w tabelach &#8222;uzytkownicy&#8221; i &#8222;produkty&#8221;, tworz\u0105c w ten spos\u00f3b relacje mi\u0119dzy tabelami. Dzi\u0119ki temu mo\u017cemy, na przyk\u0142ad, dowiedzie\u0107 si\u0119, jakie produkty zam\u00f3wi\u0142 dany u\u017cytkownik lub kto zam\u00f3wi\u0142 dany produkt.<\/p>\n<h2>Operacje na relacjach<\/h2>\n<p>Korzystaj\u0105c z relacji, mo\u017cemy tworzy\u0107 z\u0142o\u017cone zapytania, kt\u00f3re \u0142\u0105cz\u0105 dane z r\u00f3\u017cnych tabel. Na przyk\u0142ad, je\u015bli chcemy zobaczy\u0107, jakie produkty zam\u00f3wi\u0142 u\u017cytkownik o imieniu &#8222;Jan&#8221;, u\u017cywamy zapytania:<\/p>\n<p><code><br \/>\nSELECT produkty.nazwa, zamowienia.ilosc<br \/>\nFROM uzytkownicy<br \/>\nJOIN zamowienia ON uzytkownicy.id = zamowienia.id_uzytkownika<br \/>\nJOIN produkty ON zamowienia.id_produktu = produkty.id<br \/>\nWHERE uzytkownicy.imie = 'Jan';<br \/>\n<\/code><\/p>\n<p>W tym zapytaniu \u0142\u0105czymy trzy tabele, korzystaj\u0105c z operacji JOIN, aby uzyska\u0107 informacje o produktach zam\u00f3wionych przez u\u017cytkownika o imieniu &#8222;Jan&#8221;.<\/p>\n<p>Relacje s\u0105 kluczem do efektywnego i elastycznego projektowania baz danych. Dzi\u0119ki nim mo\u017cemy tworzy\u0107 z\u0142o\u017cone struktury danych i \u0142atwo je \u0142\u0105czy\u0107 w r\u00f3\u017cnych kombinacjach, dostosowuj\u0105c si\u0119 do potrzeb naszej aplikacji. W kolejnych artyku\u0142ach dowiesz si\u0119 wi\u0119cej o zaawansowanych technikach projektowania relacyjnych baz danych. Do zobaczenia wkr\u00f3tce!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W bazach danych relacyjnych, takich jak MySQL, dane s\u0105 przechowywane w tabelach, kt\u00f3re mog\u0105 by\u0107 powi\u0105zane ze sob\u0105 poprzez relacje.<\/p>\n","protected":false},"author":1,"featured_media":155,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[224,24],"class_list":["post-628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bazy-danych","tag-bazy-danych","tag-mysql"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=628"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/628\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/155"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}