Turniej Pro Evolution Soccer - Asocjacje

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… :slight_smile: 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 ? :smiley:

pewnie gospodarz spotkania i drużyna przyjezdna :wink:

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 :smiley:

Tak wlasnie “myslelismy” ale ten skrot myslowy troche nas zaskoczyl :smiley: