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

Problem z prawidłową relacją w bazie danych MySQL

VPS Starter Arubacloud
0 głosów
409 wizyt
pytanie zadane 1 listopada 2020 w Rozwój zawodowy, nauka, praca przez adus97ek Nowicjusz (120 p.)

Dobry wieczór.

Jestem w trakcie pisania pracy dyplomowej, lecz napotkałem się z problemem nawiązania relacji pomiędzy dwoma tabelami. Mowa o tabelce "kroki" oraz "przepisy". Jednocześnie chciałbym zapytać społeczność, czy skonstruowana baza będzie współgrała ze stroną internetową?

 

Tabela skladniki - znajduja sie w niej wszystkie dostepne skladniki, ktore beda wykorzystywane do tworzenia przepisów

Tabela przepisy - znajdują się w niej podstawowe informacje o przepisie takie jak Opis, Czas trwania, poziom trudności itp.
Tabela przepisy_skladniki - przechowuje informację na temat skladnikow uzytych do przepisu oraz jej ilości
Tabela kroki - przechowuje informację na temat kroków przygotowania oraz czasu dla poszczegolnego kroku



Załączam też wyeksportowany plik SQL, byłbym wdzięczny gdyby mi ktoś wytłumaczył co zrobiłem źle ze takowa relacja nie działa oraz czy ta konstrukcja będzie miała jakikolwiek byt we funkcjonowaniu stronki.

Dziękuję i pozdrawiam :)

 

-- phpMyAdmin SQL Dump
-- version 4.9.5
-- https://www.phpmyadmin.net/
--
-- Host: mysql.ct8.pl
-- Czas generowania: 01 Lis 2020, 01:55
-- Wersja serwera: 5.7.26-29-log
-- Wersja PHP: 7.1.33

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `m6273_s35449`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `kroki`
--

CREATE TABLE `kroki` (
  `ID` int(11) NOT NULL,
  `Przepis_ID` int(11) NOT NULL,
  `Numer` int(11) NOT NULL,
  `Opis_kroku` text NOT NULL,
  `Czas_realizacji` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `przepisy`
--

CREATE TABLE `przepisy` (
  `ID` int(11) NOT NULL,
  `Nazwa` text NOT NULL,
  `Opis` text NOT NULL,
  `Trudnosc` text NOT NULL,
  `Ocena` int(11) NOT NULL,
  `Czas` int(11) NOT NULL,
  `Wyswietlenia` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `przepisy`
--

INSERT INTO `przepisy` (`ID`, `Nazwa`, `Opis`, `Trudnosc`, `Ocena`, `Czas`, `Wyswietlenia`) VALUES
(1, 'Sałatka Gyros', 'Gyros jest obecnie popularną grecką potrawą, której korzenie sięgają jednak prawdopodobnie XIX-wiecznej Turcji. Zazwyczaj do jej przyrządzenia wykorzystuje się mięso z szynki wieprzowej, ale z powodzeniem można zastąpić ją innymi rodzajami mięsa, np. kurczakiem. Ciekawą propozycją dla wszystkich miłośników tegoż mięsa jest sałatka Gyros. Jej przygotowanie jest bardzo proste i szybkie. Sałatka Gyros jest nie tylko wyborna w smaku, ale jednocześnie wspaniale się prezentuje! Delikatnie doprawione mięso z kurczaka świetnie komponuje się z chrupiącymi warzywami i kremowym majonezem dekoracyjnym WINIARY. Przygotuj warstwową sałatkę gyros z kurczakiem jako wyjątkowy dodatek do obiadu lub imponującą przekąskę na imieninowy czy świąteczny stół! Jak to zrobić? Wystarczy, że odpowiednio przyprawisz i usmażysz mięso, a następnie nałożysz na nie (gdy już ostygnie) kolejne składniki sałatki, takie jak: cebula, ketchup (opcjonalnie), ogórki, kukurydza, majonez, papryka, kapusta. Wierzch sałatki możesz udekorować świeżym szczypiorkiem. Oczywiście, aby sałatka doskonale się prezentowała, przygotuj ją koniecznie w przezroczystej misce, by każda jej warstwa była widoczna. Pamiętaj o tym, że wygląd jest równie istotny jak smak potrawy – to on w dużej mierze wpływa na jej odbiór i atrakcyjność. Ale bez obaw. Aromatyczna, kolorowa, przyciągająca wzrok sałatka Gyros skradnie serca wszystkich Twoich gości i domowników, czyniąc przyjemnym i radosnym każde spotkanie w gronie bliskich! Smacznego! ', 'łatwy', 0, 0, 0);

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `przepisy_skladniki`
--

CREATE TABLE `przepisy_skladniki` (
  `ID` int(11) NOT NULL,
  `Przepisy_ID` int(11) NOT NULL,
  `Skladniki_ID` int(11) NOT NULL,
  `Ilosc_skladnikow_` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `skladniki`
--

CREATE TABLE `skladniki` (
  `ID` int(11) NOT NULL,
  `Produkt` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `skladniki`
--

INSERT INTO `skladniki` (`ID`, `Produkt`) VALUES
(1, 'Cebula');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `uzytkownicy`
--

CREATE TABLE `uzytkownicy` (
  `id` int(5) NOT NULL,
  `imie` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  `nazwisko` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  `email` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  `login` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  `haslo` varchar(50) COLLATE utf8_polish_ci NOT NULL,
  `poziom_konta` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

--
-- Zrzut danych tabeli `uzytkownicy`
--

INSERT INTO `uzytkownicy` (`id`, `imie`, `nazwisko`, `email`, `login`, `haslo`, `poziom_konta`) VALUES
(3334, 'admin', 'admin', 'admin@gmail.com', 'admin', '9e38e8d688743e0d07d669a1fcbcd35b', 1),
(3335, 'test', 'test', 'test@gmail.com', 'test', '4d3c54a22a97802627566a24f2dc7c1b', 0),
(3336, 'xa', 'xa', 'xa@xa.pl', 'zaq1@WSX', '9e38e8d688743e0d07d669a1fcbcd35b', 0),
(3337, '', '', 'admin@gmail.com', 'adminn', 'd41d8cd98f00b204e9800998ecf8427e', 1);

--
-- Indeksy dla zrzutów tabel
--

--
-- Indeksy dla tabeli `kroki`
--
ALTER TABLE `kroki`
  ADD PRIMARY KEY (`ID`),
  ADD UNIQUE KEY `Przepis_ID` (`Przepis_ID`),
  ADD KEY `Przepis_ID_2` (`Przepis_ID`),
  ADD KEY `ID` (`ID`);

--
-- Indeksy dla tabeli `przepisy`
--
ALTER TABLE `przepisy`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `ID` (`ID`);

--
-- Indeksy dla tabeli `przepisy_skladniki`
--
ALTER TABLE `przepisy_skladniki`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `Przepisy_ID` (`Przepisy_ID`,`Skladniki_ID`),
  ADD KEY `Skladniki_ID` (`Skladniki_ID`);

--
-- Indeksy dla tabeli `skladniki`
--
ALTER TABLE `skladniki`
  ADD PRIMARY KEY (`ID`);

--
-- Indeksy dla tabeli `uzytkownicy`
--
ALTER TABLE `uzytkownicy`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `login_2` (`login`),
  ADD KEY `login` (`login`);

--
-- AUTO_INCREMENT dla tabel zrzutów
--

--
-- AUTO_INCREMENT dla tabeli `kroki`
--
ALTER TABLE `kroki`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT dla tabeli `przepisy`
--
ALTER TABLE `przepisy`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT dla tabeli `przepisy_skladniki`
--
ALTER TABLE `przepisy_skladniki`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT dla tabeli `skladniki`
--
ALTER TABLE `skladniki`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT dla tabeli `uzytkownicy`
--
ALTER TABLE `uzytkownicy`
  MODIFY `id` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3338;

--
-- Ograniczenia dla zrzutów tabel
--

--
-- Ograniczenia dla tabeli `przepisy_skladniki`
--
ALTER TABLE `przepisy_skladniki`
  ADD CONSTRAINT `przepisy_skladniki_ibfk_1` FOREIGN KEY (`Skladniki_ID`) REFERENCES `skladniki` (`ID`),
  ADD CONSTRAINT `przepisy_skladniki_ibfk_2` FOREIGN KEY (`Przepisy_ID`) REFERENCES `przepisy` (`ID`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

1 odpowiedź

0 głosów
odpowiedź 1 listopada 2020 przez SzkolnyAdmin Szeryf (86,280 p.)
W kodzie SQL, który załączyłeś, nie ma ustawionej relacji pomiędzy tabelami kroki i przepisy. Pamiętaj, że relacja w bazie pilnuje tylko, aby baza była spójna.

Czy baza będzie współpracowała ze stroną? Kwestia odpowiednich zapytań do bazy i prezentacji ich wyników na stronie.
komentarz 1 listopada 2020 przez adus97ek Nowicjusz (120 p.)

W kodzie SQL, który załączyłeś, nie ma ustawionej relacji pomiędzy tabelami kroki i przepisy.

Wiem wiem, że brakuje relacji pomiędzy tabelą kroki oraz przepisy, próbowałem takowa relacje nawiązać ale jest błąd, który powoduje że stworzenie tej relacji pomiędzy tabelami kroki (PrzepisID) oraz przepisy (ID) jest właśnie niemożliwe i nie wiem właśnie co jest tego przyczyną, wydaje mi się że nie powinno być problemu z nawiązaniem tej relacji. 

komentarz 2 listopada 2020 przez SzkolnyAdmin Szeryf (86,280 p.)

Bez problemu działa:

ALTER TABLE `kroki` ADD FOREIGN KEY(Przepis_ID) REFERENCES `przepisy`(ID)

 

Podobne pytania

+1 głos
1 odpowiedź 120 wizyt
pytanie zadane 1 lutego 2023 w SQL, bazy danych przez Antoni2422 Użytkownik (570 p.)
0 głosów
1 odpowiedź 241 wizyt
0 głosów
1 odpowiedź 703 wizyt
pytanie zadane 23 marca 2020 w SQL, bazy danych przez wsnofi Bywalec (2,680 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...