🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #195121

Re: [mysql] Łączenie danych z wielu tabel

#195121
From: Kamil Sobczyk
Date: Wed, 28 Jun 2017 07:56
58 lines
4232 bytes
W dniu wtorek, 18 października 2016 12:19:21 UTC+2 użytkownik geos napisał:
> On 18.10.2016 10:50, kamil.sobczyk@gmail.com wrote:
> > Ogólnie problem jest taki, że tych "konkurencji" jest wiele. Dzieciaki oprócz biegów rywalizują też w rzucie piłką lekarską, skoku w dal itp. A liczba tych konkurencji może się zmieniać (pól/kategorii oceniania w danej konkurencji może być wiele, choć w każdej jest pole SUMA/PUNKTY). I pomiary są robione raz na kwartał.
> >
> > Zastanawiam się czy nie będzie lepiej jak stworzę sobie dodatkową tabelę, powiedzmy:
> >
> > Wyniki
> > id_zawodnik (pk)
> > id_szkolka (pk)
> > rok (pk)
> > kwartal (pk)
> > punkty_b10 {default 0}
> > punkty_b20 {default 0}
> > punkty_b30 {default 0}
> > ...
> > punkty_skok {default 0}
> >
> > i w niej będę sobie na bieżąco aktualizował dane.
> 
> takie podejście jest podejściem hurtownianym. wydaje mi się, że narobisz 
> sobie w ten sposób więcej pracy, bo każde dodanie dyscypliny będzie 
> wymuszało dodanie kolumny dla odpowiednich punktów, tabela będzie się 
> rozrastać wszerz, wiele kolumn z punktami będzie pustych.
> 
> na Twoim miejscu kierowałbym się raczej w stronę postaci znormalizowanej 
> i zrobiłbym tak:
> 
> tabela zawodnicy(idz,...)
> tabela kluby(idk,...)
> tabela dyscypliny(idd,...)
> tabela przejścia z kluczami (idz,idk,idd,idsz,rok,kw) i kolumnami (pkt,...)
> 
> w takiej konfiguracji dodanie dyscypliny to byłby jeden insert do tabeli 
> dyscypliny. z tabeli przejściowej stosunkowo łatwo też będzie zrobić 
> odpowiedni widok aby prezentował dane tak jak powyżej.
> 
> pozdrawiam,
> geos

Witam,
I po kliku miesiącach okazało się, że miałeś racje - takie podejście było bardzo niewłaściwe. Do tego stopnia, że chce to zrobić od zera. Tylko potrzebowałbym pomocy bo mam braki w wiedzy ;)

Z zaproponowanego przez Ciebie rozwiązania:
1) oczywiste
tabela zawodnicy (idz, nazwiskoimie)
tabela kluby (idk, nazwaklubu)
tabela dyscypliny (idd, nazwadyscypliny)
2) mniej oczywiste dla mnie - prośba o pomoc z tymi tabelami przejścia czy dobrze kombinuje (założenie /na przykładzie biugu na 5m/ - test wykonywany jest raz na kwartał, przy czym dzieciak ma 3 próby i wyniki tych trzech prób musi być zapamiętany; dla innych konkurencji np. rzut piłką lekarską zapamiętywany jest wynik tylko 1 próby)

tabela przejscia z kluczami: dyscpomiary (idz,idk,idd,rok,kw,idp(autoincrement))

tabela przejscia z kolumnami: dyscwyniki (idp, wynikprobax) ???

Chciałbym, aby później dało się w miarę prosty sposób w MySQL zrobić widok wyświetlający dane:
idz||idk||rok||kw||idd1||wynikproba1||wynikproba2||wynikproba3||idd2||wynikproba1

Pozdrawiam
Kamil
Technical Details
Message-ID: <255d6a7f-e733-4fa6-b920-83b27e5c3585@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!185no1836891itv.0!news-out.google.com!k7ni2124itk.0!nntp.google.com!185no1836888itv.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <f97272db-262f-4f16-912e-f32dacc7518b@googlegroups.com> <580536ce$0$5152$65785112@news.neostrada.pl> <f54591f8-2697-4abb-ae25-3575f5645bd6@googlegroups.com> <5805f70b$0$642$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.99.136.66 with SMTP id l63mr5482702pgd.27.1498636607606;        Wed, 28 Jun 2017 00:56:47 -0700 (PDT)
X-Received: by 10.36.19.1 with SMTP id 1mr101711itz.4.1498636607556; Wed, 28 Jun 2017 00:56:47 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!185no1836891itv.0!news-out.google.com!k7ni2124itk.0!nntp.google.com!185no1836888itv.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych
Date: Wed, 28 Jun 2017 00:56:47 -0700 (PDT)
In-Reply-To: <5805f70b$0$642$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.238.28.151; posting-account=MZqKhQoAAAD5JCk5fBCRURrOJPrkLjus
NNTP-Posting-Host: 83.238.28.151
References: <f97272db-262f-4f16-912e-f32dacc7518b@googlegroups.com> <580536ce$0$5152$65785112@news.neostrada.pl> <f54591f8-2697-4abb-ae25-3575f5645bd6@googlegroups.com> <5805f70b$0$642$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <255d6a7f-e733-4fa6-b920-83b27e5c3585@googlegroups.com>
Subject: Re: [mysql] Łączenie danych z wielu tabel
From: Kamil Sobczyk <kamil.sobczyk@gmail.com>
Injection-Date: Wed, 28 Jun 2017 07:56:47 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit