Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Więcej tabel, czy rekordów w pojedyńczej tabeli?
Forum PHP.pl > Forum > Bazy danych > MySQL
banias
Witam! Od niedawna zajmuję się PHPem i MySQLem.
Mam problem, mianowicie mogę zaprojektować bazę na dwa sposoby.

W bazie mam kilka głównych tabel.
Jedna z tabel zawiera elementy "A", inna "B". Każdy element "B" nawiązuje (należy) do jakiegoś elementu "A". Zastanawiam się, czy lepiej wszystkie elementy "B" trzymać w jednej tabeli, czy tworzyć osobne tabele dla każdego rekordu "A", które by zawierały te elementy, czyli:
TABELA B
|pole1 | pole2 | pole3 .... | A |
czyli są wszyskie pola + pole A które mówi, do jakiego elementu A należy dany rekord

drugi sposób:
TABELA B1
|pole1 | pole2 | pole3 .... |
TABELA B2
|pole1 | pole2 | pole3 .... |
itd.
czyli wszystkie pola, bez pola A: zamiast tego id rekordu z A dodaje do nazwy.

Takie tabele "B" byłyby (chyba) dwie dla każdego rekordu "A".


Oprócz tego inny problem:
Rekordy "A" trzymają też pewną listę id i znów dwa sposoby, jak to robić:
dodatkowe pole w "A" 'pewne_id' które zawiera: "id1;id2;id3;id4;...;idn" gdzie idx to wartość id, a ; to seperator.

drugi sposób:
Dla każdego rekordu w "A" nowa tabela:
TABELA pewne_id1 której rekordami są id1 id2 id3 itd (jedno pole zawiera)

Te listy id też (chyba) są dwie dla każdego rekordu w "A".

Mam nadzieję, że dosyć zrozumiale opisałem winksmiley.jpg
nospor
Cytat
Mam nadzieję, że dosyć zrozumiale opisałem
Byloby bardziej zrozumiale, jakbys napisal to na konkretnych danych a nie jakiś A B gdzie po drugim zdaniu zaczyna sie to wszystko zlewac w jeden wielki belkot winksmiley.jpg

Cytat
TABELA B
|pole1 | pole2 | pole3 .... | A |
czyli są wszyskie pola + pole A które mówi, do jakiego elementu A należy dany rekord
No raczej tak. choc glowy nie dam bo nie jestem pewien czy mowimy o tym samym

Cytat
drugi sposób:
Dla każdego rekordu w "A" nowa tabela:
TABELA pewne_id1 której rekordami są id1 id2 id3 itd (jedno pole zawiera)
Jak wyzej
banias
Spróbuję zamienić na coś zrozumiałego w takim razie:

Jedna z głównych tabel zawiera, powiedzmy marki samochodów (nasza "A"). W tej tabeli są jakieś tam informacje podstawowe, nieważne.
Każda marka ma typy różne ("B"). Te typy opisywane kilkoma polami.
Teraz, czy wszystkie typy w jednej tabeli:
TABELA typ
|126p | p #2 | p #3 | p #4 ... | Fiat |
|Viper| p #2..... | Dodge |
[zamiast napisu trzymamy wartość id ofc]

czy trzymać w osobnych tabelach:
powiedzmy, Fiat ma ID = 3, a Dodge ma ID = 8 to w tabeli:
TABELA typ3
|126p | p #2 | p #3 | p #4 ... |
TABELA typ8
|Viper| p #2.....

I powiedzmy mamy jakąś tabelę wyposażenia, każdy rekord ma tam ID. Każda marak (nie typ) może korzystać z jakichś elementów wyposażenia. Kilka marek może z jednego korzystać, więc zapisujemy ID wyposażeń z których może korzystać:
TABELA wyposazenie
ID| p#2 | p#3 itd
1 | ABS | ....
....
W polu "wyposazenie" trzymać te id oddzielone separatorami, czyli jak jakaś marka może mieć ABS to dodajemy to pola "1;" jak element wyposażenia o ID 7 to dodajemy "7;"
Czy trzymać w osobnej tabeli, czyli wyposażenie dla Fiata o ID = 3 (ID marki, nie wyposażenia) w:
TABELA wypisazenie3
|ID|
|1 |
|x |
itd.
nospor
Cytat
I powiedzmy mamy jakąś tabelę wyposażenia, każdy rekord ma tam ID. Każda marak (nie typ) może korzystać z jakichś elementów wyposażenia. Kilka marek może z jednego korzystać, więc zapisujemy ID wyposażeń z których może korzystać:
TABELA wyposazenie
ID| p#2 | p#3 itd
1 | ABS | ....
....
W polu "wyposazenie" trzymać te id oddzielone separatorami, czyli jak jakaś marka może mieć ABS to dodajemy to pola "1;" jak element wyposażenia o ID 7 to dodajemy "7;"
Czy trzymać w osobnej tabeli, czyli wyposażenie dla Fiata o ID = 3 (ID marki, nie wyposażenia) w:
TABELA wypisazenie3
|ID|
|1 |
|x |
itd.

Ma byc jedna tabela wiązaca:
ID_MARKI | ID_WYPOSAZENIA

marka 3 z wyposazeniem 1,4,6
marka 6 z wyposazeniem 4,5
3 | 1
3 | 4
3 | 6
6 | 4
6 | 5



a tego pierwszego chyba nadal nie kumam wiec sie nie bede wypowiadal
banias
No to inny przykład.
Mamy jakieś filmy ("A") i recenzje krótkie do nich (krótki tekst bez formatowania).
Recenzja składa się z pól:
ID Autor Data Treść

Każdy film ma jakieś recenzje i teraz, czy trzymać recenzje filmy ID=2 w tabeli
TABELA recenzje2

czy trzymać wszystkie recenzje w jednej tabeli
ID Autor Data Treść ID_Filmu

Dziękuję za poprzednią odpowiedź, o takim czymś nie pomyślałem smile.gif
nospor
Cytat
czy trzymać wszystkie recenzje w jednej tabeli
ID Autor Data Treść ID_Filmu
ta wersja jest ok
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.