Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Wiele możliwości w polu
Forum PHP.pl > Forum > Przedszkole
konrados
Cześć,

Pewnie już było wielokrotnie, ale nie umiem tego opisać i tym samym znaleźć.

Jaka jest najprostsza i właściwa metoda zaimplementowania czegoś takiego: są sobie artykuły i mogą dotyczyć wielu państw (które piszący wybierze z listy) - chodzi o strukturę tabel w bazie danych. Pierwsze co mi przychodzi na myśl to:

Tabela artykuly : id, tytul, etc...
Tabela panstwa: id, nazwaPanstwa
Tabela panstwaArtykuly: id, idPanstwa, idArtykulu

No i teraz kupa roboty, bo "zaznaczenie" przez użytkownika listy państw dla artykułu o id = 1 będzie wymagało dodania do tabeli "panstwaArtykuly" wielu rekordów - dla każdego to samo idArtykulu i różne idPanstwa. Wyszukiwanie artykułów z danego państwa (a taki jest cel) też pewnie nie da się zrealizować jedną linijką kodu.

A w tym mini CMS'ie do każdego artykułu będzie można dodawać jeszcze wiele "multipól" (tak to nazwałem smile.gif ) takich jak tagi, kategorie (sport/muzyka etc.) i z tym moim pomysłem to będę musiał chyba z 10 tabel utworzyć i kupę kodu.

Wolałbym coś w rodzaju: państwa zdefiniowane w pliku php (więc łatwiejsza edycja i znika jedna niepotrzebna tabela) w stylu prostego arraya, zaś w tabeli artykuły pole typu varchar z numerami państw oddzielonymi przecinkami, ale jak później prosto wyszukać artykuły z wybranego państwa? Coś pewnie w stylu "SELECT .... where panstwa like poszukiwanePaństwo", czy dobrze myślę? Czy to nie byłoby prostsze i też "właściwe"?
Grzyw
Cytat(konrados @ 27.02.2011, 12:07:29 ) *
Wyszukiwanie artykułów z danego państwa (a taki jest cel) też pewnie nie da się zrealizować jedną linijką kodu.

  1. SELECT * FROM artykuly JOIN panstwaartykuly ON panstwaartykuly.id_artykul = artykuly.id_atrykul WHERE id_panstwo=*

Cytat(konrados @ 27.02.2011, 12:07:29 ) *
w tabeli artykuły pole typu varchar z numerami państw oddzielonymi przecinkami, ale jak później prosto wyszukać artykuły z wybranego państwa? Coś pewnie w stylu "SELECT .... where panstwa like poszukiwanePaństwo", czy dobrze myślę? Czy to nie byłoby prostsze i też "właściwe"?
Pogwałcenie podstawowych reguł relacyjnego modelu baz danych:)
Rozwiązane z dodatkową tabelą jest standardowym, dobrym rozwiązaniem relacji wiele do wielu. Nie zmieniałbym nic.
konrados
OK, dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.