Prosta baza danych - biblioteka. Kłopot z rozplanowaniem.

0

Mam za zdanie zrobić prostą bazę danych z książkami historycznymi. Sęk w tym, że mają się w niej znajdować cytaty/frazy z książek oraz informacja o tym na których dokładnie stronach w danej książce można znaleźć tenże cytat/frazę.
Niby proste bo cała baza danych będzie mieć 5 atrybutów: Nazwa, Autor, book_id, Page_NR oraz phrase. Frazy w tabeli nie mogą się powtarzać, co jest chyba awykonalne, ponieważ dana fraza występuje wiele razy w jednej książce.
Tak to wygląda na teraz, a trzeba zrobić tak, żeby fraza się nie powtarzała. Jest to w ogóle możliwe? Moim zdaniem fraza musi być w tabeli razem z pageNR.

Tu starszy screen żeby zobrazować problem.

screenshot-20220210175821.png

0

Dobra, podzieliłem na 3 tabele. Są powtórki ale zminimalizowane do minimum.
Mam pytanie. Czy takie querry jest prawidłowe, czy można by było poprawić cały design tej bazy by querry było prostsze?

screenshot-20220210192213.png
screenshot-20220210192250.png
tabela book:
screenshot-20220210192315.png

tabela pages:
screenshot-20220210192331.png

tabela phrases:

screenshot-20220210192344.png

3

Autorów bym dał do oddzielnej tabeli, bo może być wiele książek tego samego autora.

Mam pytanie. Czy takie querry jest prawidłowe, czy można by było poprawić cały design tej bazy by querry było prostsze?

No ja bym na joinach zrobił łączenia.

0

Zrobiłem joinem ale wyrzuca wszystkie książki a szukana fraza występuje tylko w książce 2 i 3.

screenshot-20220210222559.png

1

@Lobos91: tak na szybko patrząc to masz źle zapytanie zrobione.
Tak na szybko:

SELECT *
FROM books b
JOIN pharses p ON p.book_id = b.id
WHERE p.pharse = "War of the roses"

To ci zrobi takie mapowanie książka === fraza i potem odfiltruje tylko te które mają tę frazę.

0

Dzięki za odpowiedź
A jakbym chciał, żeby jeszcze jedna kolumna z innej tabeli się wyświetliła to jak to napisać? Wyskakuje mi błąd.

screenshot-20220211173227.png

3

@Lobos91: wywal pages z from.

0

o dzięki, działa!

1 użytkowników online, w tym zalogowanych: 0, gości: 1