• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

mysql 3 tabele z kluczem obcym jak prawidłowo to powinno wygladać

Object Storage Arubacloud
0 głosów
369 wizyt
pytanie zadane 13 marca 2022 w SQL, bazy danych przez gatka84 Bywalec (2,150 p.)

Witam staram się nauczyć pracy na kilku tabelach żeby sprawniej i lepiej dodawać usuwać i robić korekty na danych ale nie potrafię do końca zrozumieć jak to powinno działać

pierw założenie chciałam zrobić prostego bloga i

i w tabeli blog jest blog_id z int i on jako główny unikatowy klucz

jest tam jeszcze tytuł posta i autor

tabela zdjęcia ma id z kluczem obcym pobieranym z blog id 

i tak samo tabela card_id na klucz obcy z blog id

i teraz pytanie czy to tak powinnam zrobić jeśli tak to jak zadać pytanie do sql żeby mi wyświetlił wszystko tzn z 3 tabel po konkretnym id

do tej pory uczyłam się pracy na jednej tabeli i jak przy trzech zrobić crud tak jak do tej pory robiłam na jednej

bo np chcąc zrobić

$select_stmt = $db->prepare('SELECT * FROM blog WHERE blog_id =:id'); 

        $select_stmt->bindParam(':id', $id);

        $select_stmt->execute();

        $row = $select_stmt->fetch(PDO::FETCH_ASSOC);

        extract($row);

jak powinnam wystawić zapytanie do bazy żeby mi wyświetliło wszystko z tabel dla danego id

 

jeśli idę w złą stronę była bym wdzięczna za podpowiedzi i nakierowanie

komentarz 13 marca 2022 przez PreZmyK Pasjonat (21,470 p.)
A co chcesz osiągnąć? Jak na razie są 3 tabelki nie spełniające I postaci normalnej.

zdjecia (id_zdjecia int PK, nazwa_zdjecia varchar)

blogi (id_blogu int PK, tytul_blogu varchar, autor_blogu varchar)

karty (id_karty int PK, data_dodania date, tekst_blogu varchar, id_blogu int FK blogi.id_blogu)

karty_zdjecia (id_karty int PFK karty.id_karty, id_zdjecia int PFK zdjecia.id_zdjecia)

O to chodzi?
komentarz 13 marca 2022 przez Wiciorny Ekspert (270,110 p.)
akurat 1 postać normalną spełniają, dane są atomowe w zakresie relacji. Druga już łamana
komentarz 13 marca 2022 przez PreZmyK Pasjonat (21,470 p.)
Racja. Myślałem, że jedna tabela ma tylko FK, a to PK. Zasugerowałem się opisem.

1 odpowiedź

+1 głos
odpowiedź 13 marca 2022 przez rafal.budzis Szeryf (85,260 p.)
Nie ma sensu robić tabeli tylko po to żeby było ich wiele :) Ja czuje że wszystkie te dane powinny być w jednej tabeli. Dodatkowo dobrze aby każda tabela miała swoje ID oraz w nazwie ID z obcej tabeli miała nazwę tej tabeli. Czyli zamiast "zdjecia_id" zrobiłbym 'blog_id' i osobny klucz id

Zdjecia
id: primary
blog_id: int
imageA: varchar
imageB: varchar
imageB: varchar

Blog
id: primary
tytul: string
autor:string

lub odwrotnie

Zdjecia
id: primary
imageA: varchar
imageB: varchar
imageB: varchar

Blog
id: primary
photo_id: int
tytul: string
autor:string

Jednak osobne tabele robi się jeśli do jednego wiersza może się odnosić wiele rekordów (relacja jeden do wielu) lub jeśli do wielu rekordów może się odnosić wiele innych (relacja wiele do wielu). W twoim przypadku masz relacje jeden do jednego. Nie da się przypisać 2 zdjęć do jednego bloga więc dlatego ta tabela nie ma dużo sensu.

Bardziej życiowymi przykładami mogły by być komentarze. Masz artykuł na blogu, a w nim komentarze. Do jednego artykułu mozna napisać wiele komentarzy i już masz relacje jeden do wielu ;)

Lub inny przykład masz autorów artykułów na blogu. Każdy autor może napisać kilka artykułów więc znów masz relacje jeden do wielu :)
komentarz 13 marca 2022 przez gatka84 Bywalec (2,150 p.)
ok pomyślałam że tak będzie łatwiej bo obecnie mam jedną ale przy trzymaniu kilku kolumn ze zdjęciem i kiedy chciałabym usunąć zdjęcie z jednej kolumny (wszystkie są w jednym wierszu) to problem mam jak to zrobić a dokładniej  update które zrobi pustą komórkę przy zachowaniu reszty dlatego chciałam spróbować na kilku tabelach gdzie np w tabeli zdjęcia doadała bym kilka wierszy ze zdjęciami przypisanymi do id danego posta i jeśli bym coś chciała zmienić lub usunąć to łatwiej usunąć mi wiersz ew jak to powinno wyglądać

gdzie dany post będzie miał wyświetlana w Index kartę ze zdjęciem tytułowym + tytuł + jakiś opis i przekieruje na stronę z postem na której będzie cały tekst i kilka zdjęć

Podobne pytania

0 głosów
1 odpowiedź 3,015 wizyt
0 głosów
2 odpowiedzi 3,347 wizyt
pytanie zadane 4 lutego 2018 w SQL, bazy danych przez `Krzychuu Stary wyjadacz (13,940 p.)
0 głosów
2 odpowiedzi 103 wizyt
pytanie zadane 30 kwietnia 2019 w C# przez Franek Kimono Początkujący (340 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...