Logika tabel dla biblioteki

0

Witam,
piszę program do obsługi biblioteki i mam problem natury logicznej. Nie wiem jak zaprojektować tabele, ale może wyjaśnię o co chodzi:

Jak wiadomo w bibliotece są różne książki, lecz niektóre są tego samego tytułu, ale mają różne daty/miejsce wydania, ISBN itp. Chodzi o to że klientowi jest to przeważnie obojętne. Gdy chcę listować w programie książki chcę mieć widoczne ile książek o danym tytule jest dostępnych/wypożyczonych/zarezerwowanych. Muszę to jakoś rozdzielić, ale nie wiem jak. Bo z jednej strony są to te same książki, ale z drugiej każda jest osobną, fizyczną ksiązką.

Mam nadzieje że nie zamieszałem. jak coś to piszcie to spróbuje wyjaśnić lepiej.

0

osobno książki i osobno egzemplarze

0

no dobra... No ale i tak pozostaje pytanie jak przy dodawaniu nowej pozycji rozpoznać czy dany tytuł już istnieje??

Bo w przypadku jakiejkolwiek literówki książka już bedzie uznana jako inna. Czy dobrym rozwiązaniem będzie przy dodawaniu wziąć np 5 pierwszych znaków tytułu i dać zapytanie sql z "WHERE tytul LIKE '@te5znakow%' " po czym wyświetlić wynik i żeby uzytkownik sprawdził czy nie jest to ta książka?? Myślę że to będzie dość dobre rozwiązanie. Ma ktoś lepsze ??

Poza tym w "egzemplarze" mają być wspólne cechy danej książki, a w "książki" ma być reszta danych, dobrze myślę ??

0
fuzzy86 napisał(a)

no dobra... No ale i tak pozostaje pytanie jak przy dodawaniu nowej pozycji rozpoznać czy dany tytuł już istnieje??

jeśli się dodaje książkę to znaczy, że takiej jeszcze nie ma. Jak chcesz dodać egzemplarz to jedyne co potrzebujesz z tabeli książki to jej id

Poza tym w "egzemplarze" mają być wspólne cechy danej książki, a w "książki" ma być reszta danych, dobrze myślę ??
źle - w tabeli egzemplarz jest FK do książki i to co jest RÓŻNE dla poszczególnych egzemplarzy - wydawnictwo, rok wydania, numer, ...

0
Misiekd napisał(a)

jeśli się dodaje książkę to znaczy, że takiej jeszcze nie ma. Jak chcesz dodać egzemplarz to jedyne co potrzebujesz z tabeli książki to jej id

No tak, ale mnie chyba nie zrozumiałeś. Dodając egzemplarz pani Kazia z biblioteki może nie pamiętać że taką książkę już ma, dlatego muszę sprawdzić czy książka o tym samym tytule istnieje w bazie danych. Ale myślę że rozwiążę to tak jak pisałem... Chyba że już wiesz o co mi chodzi i masz lepsze rozwiązanie.

Z tego co napisałeś to potrzebuję id ksiązki ktora już istnieje, ale mi chodzi o to że ja jeszcze nie wiem czy takowa istnieje i tu jest problem -> jak to wykrywać ;)

źle - w tabeli egzemplarz jest FK do książki i to co jest RÓŻNE dla poszczególnych egzemplarzy - wydawnictwo, rok wydania, numer, ...

Przepraszam - no przecież że tak... Za szybko pisałem ;P

0

Witam,

każda książka powinna byc traktowana jako inny element. Nie mozna brać pod uwagę tytułu książki, podczas sprawdzania czy już taka istnieje w bazie. Książka powinna być wyróżniona poprzez nadany jej numer ISBN. Dodając nową książkę o takim samym tytule, nie dodajesz takiej samej książki, ponieważ ma ona inny numer ISBN. Taki sposób myślenia pozwoli zaprowadzić porządek w bazie.

Pozdrawiam

0
Misiekd napisał(a)

co jest RÓŻNE dla poszczególnych egzemplarzy - wydawnictwo, rok wydania, numer, ...

Na mój gust w bibliotece różne dla poszczególnych egzemplarzy są tylko numery egzemplarza w bibliotece.
Książka o tym samym tytule, ale innym roku wydania czy wydawnictwie to już przecież inna książka - ma inny ISBN.

0

dla mnie jako dla czytelnika czy książka jest wydana w 2000 czy w 2008, czy ma twardą czy miękką okładkę, czy ją tłumaczył mietek, franek czy ktoś jeszcze inny nie ma znaczenia jeśli tylko tytuł, autor i treść jest ta sama. Trochę inaczej jest jeśli jest to książka techniczna, gdzie inne wydanie może oznaczać trochę inną treść - wszystko trzeba rozpatrzyć

0

Wg mnie każda książka w bazie powinna być wprowadzona osobno (nie zastosował bym tabeli liczba egzemplarzy). Wydaje mi się że łatwiej jest sprawdzić historię konkretnego egzemplarza książki (jest to chyba ważne dla bibliotekarza, do tego dochodzi np. brakowanie książek czy inwentaryzacja).

0
Misiekd napisał(a)

dla mnie jako dla czytelnika czy książka jest wydana w 2000 czy w 2008, czy ma twardą czy miękką okładkę, czy ją tłumaczył mietek, franek czy ktoś jeszcze inny nie ma znaczenia jeśli tylko tytuł, autor i treść jest ta sama.

Dla mnie jako czytelnika też nie. W zasadzie tytułu, autora i okładki mogłoby nie być, ważna jest tylko treść ;)

Ale system jest tworzony dla pracowników biblioteki, prawda? Więc musi uwzględniać ich wymagania i realia pracy. A są one takie, że istnieją książki (wirtualne twory z tytułem, autorem, itp. oraz przede wszystkim ISBN) oraz egzemplarze (realne z jakimś wewnętrznym numerem bibliotecznym). I system (jeśli ma być sensowny) powinien odwzorowywać rzeczywistość.
To tak, jakby w wypożyczalni samochodów mieć tylko tabelę modeli, bez tabeli z konkretnymi pojazdami. Albo w filmie telekomunikacyjnej jedynie tabelę z listą dostępnych abonamentów, bez tabeli z konkretnymi klientami korzystającymi z usług. Pełna egzotyka i zupełny nonsens.

0

ale czy Wy w ogóle czytacie całość tego co piszę czy tylko to co chcecie???

Przecież napisałem osobna tabela z książkami (gdzie będzą wspólne rzeczy dla danej książki - autor, tytuł - to co interesuje wypożyczającego) oraz tabela egzemplarze, gdzie są rzeczy specyficzne dla każdej książki (ISBN, wydawnictwo, rok wydania i inne, ważne dla bibliotekarza).

somekind i intro jak chcecie się wypowiadać to czytajcie całość a nie to co wam wygodne

0
Misiekd napisał(a)

Przecież napisałem osobna tabela z książkami (gdzie będzą wspólne rzeczy dla danej książki - autor, tytuł - to co interesuje wypożyczającego) oraz tabela egzemplarze, gdzie są rzeczy specyficzne dla każdej książki (ISBN, wydawnictwo, rok wydania i inne, ważne dla bibliotekarza).

Teraz to już całkiem zamotałeś.
książka - id (pk), tytuł, autor, ilustrator, wydawnictwo, rok wydania, ISBN (bo to są rzeczy wspólne dla wszystkich egzemplarzy jednej ksiażki)
egzemplarz - id_ksiazki (fk), numer_biblioteczny (bo to jest rzecz specyficzna dla każdego egzemplarza)

System ma odzwierciedlać rzeczywistość, a nie ją naginać.

A co do tego, że czytelników interesuje jedynie tytuł i autor należy zrealizować wyszukując w tabeli z książkami i zwracając kilka pozycji, np. różniących się rokiem wydania.

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