Drzewo SQL |
Drzewo SQL |
2.04.2010, 14:33:54
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
witam.
Muszę stworzyć bazę danych wyglądającą schematowo tak czyli mam sobie np. Powieść która ma tytuł, ta powieść składa się z 3 tomów, każdy z tych tomów ma tytuł, autora i ilość stron. Każdy tom ma kilka tagów opisujących dany tom. Nie trzeba, aby wszystko zostało wypisane jednym zapytaniem, ale żeby było możliwość wypisania samych tagów lub tomów. Da radę jakoś łatwo skonstruować taką bazę danych? czy trzeba stosować jakieś skombinowane algorytmy, czy dodatki do jeżyka SQL? proszę o pomoc, bo nie za bardzo wiem jak to zrobić Ten post edytował nowy214 2.04.2010, 14:45:12 |
|
|
2.04.2010, 15:24:46
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
O normalizacji czytałeś już?
|
|
|
2.04.2010, 15:34:07
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
nie, ale teraz coś przeczytałem na wiki i nie za bardzo rozumiem
według tego będzie ok? Ten post edytował nowy214 2.04.2010, 15:37:49 |
|
|
2.04.2010, 16:48:36
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
Normalizacja to podstawa przy projektowaniu baz danych. Bez zrozumienia przynajmniej jej podstaw, nie zabieraj się nawet za projektowanie bazy, bo sam siebie wyprowadzisz na manowce i zniechęcisz się do dalszej pracy.
Przykład normalizacji z twojego projektu: "Powieść która ma tytuł, ta powieść składa się z 3 tomów, każdy z tych tomów ma tytuł, autora i ilość stron" Mamy tutaj następujące obiekty: powieść tom(powieści) i cechy: tytuł(powieści) tytuł(tomu) ilość stron autor <---- czy to na pewno cecha? a może jednak obiekt? ---- tak więc wypadałoby zrobić następujące tabele: autor: autor_id, imie, nazwisko powiesc: powiesc_id, tytul tom_powiesci: tom_powiesci_id, powiesc_id, autor_id, tytul, iloscStron Pola *_id w kursywie, to klucze główne tych tabel. W sposób jednoznaczny określają rekord w danej tabeli. Czyli jak na przykład raz wprowadzisz do tabeli autor Marka Twaina, i baza przypisze mu autor_id = 1, to od tego momentu wszystkie tomy powieści jego autorstwa mają mieć autor_id=1. Z przykładowymi danymi wyglądało by to tak autor: autor_id, imie, nazwisko 1, Mark, Twain 2, Alfred, Szklarski 3, John Richard Reuel, Tolien ... powiesc: powiesc_id, tytul 1, Tomek w Krainie Kangurów 2, Przygody Tomka Sawyera 3, Władca Pierścieni 4, Hobbit czyli tam i z Powrotem ... tom_powiesci: tom_powiesci_id, powiesc_id, autor_id, tytul, iloscStron 1, 1, 2, null, 123 2, 2, 1, null, 1529 3, 3, 3, Powrót cienia, 512 4, 3, 3, Druzyna Pierscienia, 1337 5, 4, 3, null, 1234 ... |
|
|
2.04.2010, 21:46:52
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
Tak naprawdę to prawie w ogóle nie znam się na sql, tylko ta baza danych brakuje mi do pewnego projektu.
Ale rozumiem to co napisałeś. Podałem taki przykład żeby to zobrazować tak naprawdę to będzie jak w tym przykładzie ok 7 tomów i te tomy będą miały po 1000 elementów (a te elementy w rzeczywistości będą nazwiskami). wyszukiwane będzie miało miejsce po tytule powieści a wynikami będzie tytuł id oraz te 1000 elementów. i mam pytanie który sposób zapisu bazy danych jest lepszy/szybszy ten @Mchl czy ten Ten post edytował nowy214 2.04.2010, 22:08:37 |
|
|
2.04.2010, 22:06:11
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) |
http://wortal.php.pl/phppl/wortal/artykuly...orial_php_mysql
http://www.google.pl/search?q=mysql+tutori...lient=firefox-a -------------------- |
|
|
2.04.2010, 22:11:16
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
możesz zerknąć do mojego posta powyżej bo go edytowałem, zanim spojrzałem na odp.
|
|
|
2.04.2010, 22:26:33
Post
#8
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
To co jest opisane w 'Drzewa w PHP i MySQL' dotyczy całkiem innego problemu.
|
|
|
3.04.2010, 13:36:43
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
ok sorka nie za bardzo się znam
Jak zrobić, aby był dodawany automatycznie czas i data w bazie danych przy dodawaniu rekordów? Jakie kodowanie i porównywanie napisów umożliwia stosowania znaków specjalnych z różnych krajów? |
|
|
3.04.2010, 14:07:35
Post
#10
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
1. Definujesz kolumnę typu TIMESTAMP DEFAULT CURRENT_TIMESTAMP. Musi to być pierwsza kolumna typu TIMESTAMP w danej tabeli.
2. Jakiekolwiek utf8_* |
|
|
3.04.2010, 14:50:52
Post
#11
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
to będzie tak razem z id w php bo w phpmyadmin nie mogę dodawać pola dodatkowego?
A ten czas będzie automatycznie dodawany jak id? Ten post edytował nowy214 3.04.2010, 15:12:16 |
|
|
3.04.2010, 15:29:33
Post
#12
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
Kod CREATE TABLE nba (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, data TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) |
|
|
3.04.2010, 15:43:27
Post
#13
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 2.04.2010 Ostrzeżenie: (0%) |
Dzięki, ale czas jaki jest w pisany to 0000-00-00 00:00:00 a ja chce aby był wpisany automatycznie czas dodania rekordu.
Czy da tak radę? może ja źle dodaje rekordy tak dodaje dla samego id i data:
Ten post edytował nowy214 3.04.2010, 16:02:00 |
|
|
3.04.2010, 16:58:46
Post
#14
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) |
INSERT INTO `nba` VALUES (null, null)
albo INSERT INTO `nba` (data) VALUES (null) albo INSERT INTO `nba` (innePole1, innePole2) VALUES (innaWartosc1, innaWartosc2) (czyli pola id i data w ogóle pomijasz, bo MySQL sam wstawia domyślne wartości) Ten post edytował Mchl 3.04.2010, 16:59:54 |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 11:24 |