Witam,
chce podjąć się wykonania strony turniejów gry piłkarskiej PES ale mam maly problem z baza danych. Mam juz wszystko ladnie w głowie poukladane i zaczalem pisac Scenariusze do Cucumbera, ale jak zaczne myslec o relacjach miedzy turniejem, meczem i zawodnikami to nic konstruktywnego nie potrafie wymyslic.
Jest wiele turnieji które składaja sie na tabele główna: (tabela główna w moim wyobrazeniu nie jest modelem a suma pktów wszyskich turnieji)
Turniej posiada - mecze (one-to-many)
mecz nalezy do turnieju i jest rozgrywany przez 2 graczy (one-to-many)
gracze rozgrywaja mecz (many-to-one)
Turniej
has_many :meczy
has_many :graczy, through :mecz
Mecz
belongs_to :turniej
Gracz
has_many :meczy
has_many :turnieje, through :mecz
Poki co tyle w glowie mam - nie uzywalem jeszcze has_many through wiec moze cos jest nie tak ale czytalem ze lepiej tego uzywac niz many_to_many.
W dobrym kierunku to idzie ?
Oto moja propozycja, pisane na szybko (atrybuty są przykładowe, bardziej chodzi o relacje):
Tournament
atrybuty: start_at, stop_at, registration_fee, max_players etc.
has_many :participations
has_many :players, :through => :participations
Player
atrybuty: login, email itp.
has_many :participations
has_many :tournamets, :through => :participations
Team (zespół)
atrybuty: name
Participation (uczestnictwo w turnieju) - reprezentuje uczestnictwo gracza w turnieju
atrybuty: created_at, status (np. potwierdzenie uczestnictwa przez administratora itp)
belongs_to :team
belongs_to :tournamet
belongs_to :user
Game
atrybuty: status (np rozegrany, oczekuje, walkower itp), score, played_at
belongs_to :host_participation, :guest_participation
ps. łezka mi się zakręciła jak sobie przypominam turnieje i ligę PESa (pes4, granie po LANie) z czasów studenckich. Zrobiłem stronkę ligową w PHP, jaki dumny byłem… Jest jeszcze online, ale jej wygląda mi nie pozwala na upublicznienie :D.
Radarek mam pytanie odnosnie Modelu Game:
belongs_to :host_paricipation, :guest_participation - czym sa host i guest ?
pewnie gospodarz spotkania i drużyna przyjezdna
Te relacje odnoszą się do modelu Participation, a robi się takie relacje tak:
class Game < ActiveRecord::Base
belongs_to :host_participation, :class_name => 'Participation', :foreign_key => 'host_participation_id'
belongs_to :guest_participation, :class_name => 'Participation', :foreign_key => 'guest_participation_id'
end
Heh dzieki
Tak wlasnie “myslelismy” ale ten skrot myslowy troche nas zaskoczyl