Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kilka tabel czy jedna ?
Forum PHP.pl > Forum > Bazy danych
ols1994
Cześć mam pytanie czysto teoretyczne. Zastanawiam się nad zrobieniem gry strategicznej powiedzmy takie marzenie za dzieciaka. Nurtuje mnie kilka kwestii jak to wszystko rozwiązać. Jak wiemy możemy zrobić wojsko, wioski i budynki na kilka sposobów:
1) Zamiast 3 tabel robimy wszystko w jednej. Czyli budynki wojsko wraz z wioską
2) Możemy rozbić to na 3 table, ale:
a) Przechowujemy wszystkie wyniki w jednym rekordzie. Np:
- w tabeli wojsko mamy takie pola jak: piechur, łucznik, łucznik na koniu. Wszystkie te pola przechowują liczbę wojska. Z budynkami możemy zrobić tak samo
cool.gif Przechowujemy wszystkie wyniki w wielu rekordach. Np:
- w tabeli wojsko mamy oddzielne rekordy dla różnych jednostek. Możemy w ten sposób rozszerzyć swoją działalność i możliwości. Dodając czas ruchu, ilość jednostek, siła jednostki.

No i właśnie nie wiem co wybrać, wiadomo mając wszystko w jednej tabeli wioska łatwiej wszystkim operować, jednak posiadamy w bazie w pewnym słowie "bajzel". Operując na wielu kilku tabelach oddzielnie mamy pewien komfort. Ale i tutaj nasuwa się pytanie czy każdy budynek, każdą jednostkę robić w jednym rekordzie czy każdy oddzielnie. Umiejąc operować pomiędzy tabelami każdy podany wyżej sposób nie sprawia trudności. Chodzi jednak mi o wasze zdanie jakbyście wy to zrobili. Jak według Was jest lepiej i wygodniej.
Pozdrawiam
kalmaceta
a ille wspólnych cech maja wojsko wioska i budynek? jeśli żadnej nie powinny być w jednej tabeli,. Ja bym zastanowił się nad bardziej ogólnymi formami, które łatwo później rozbudować jak:
tabele:
1. wojsko (tutaj zależnie czy operujemy po jakiś mniejszych jednostkach czy nawet wojaka indywidualnie trzeba to zmodyfikować.)
2a. miejsca
2b. miejsca_typy (łącznie z zależnościami parent child)
3a. obiekty
3b. typy obiektow
4. obiekty-miejsca
5. wojsko-miejsca

i to tak na początek z danych jakie podałeś.
ols1994
Jedyną cechą wspólną tych 3 tabel jest jedynie id wioski z której pochodzą.
Operacja jakie będę wykonywał np na wojsku to: atak/obrona(przemieszczanie), rekrutacja.
Mając wojsko w jednej tabeli i w jednym rekordzie, pobierałbym tylko z innej tabeli np czas akcji. Aczkolwiek to mogę zrobić tak jak wcześniej wspominałem każda jednostka to inny rekord. Masz rację że jest później łatwiej modyfikować różne pola.
askone
Osobiście preferuję podejście opisane przez kalmaceta. Staram się by tabela w bazie odzwierciedlała saoistny byt w realnym świecie. Możliwe iż takie rozwiązanie generuje więcej tabel, ale w przyszłości pozwala na łatwe i szybkie modyfikacje aplikacji.

Takie podejście jest zresztą zgodne z wzorcami poprawnego budowania baz danych.

Pozdrawiam
ols1994
Ok, dzięki. Biorę się za pisanie
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.