[PowerDesigner] Model bazy do sprawdzenia

0

Podobnie jak kolega Misiasty kilka tematow nizej dostalem do zrobienia projekt:

Opis projektu:
Aplikacja ma służyć pracownikom PZPN oraz wszystkim kibicom interesującym się polską piłką nożną. Powinna być ona zrealizowana:
•	za dopomogą języka programowania obiektowego (np. C++, Java)
•	przy pomocy technologii ASP i umieszczona na serwerze WWW.
Powinna ona realizować następujące funkcje:
•	Wprowadzanie przez upoważnioną osobę wyników spotkań oraz modyfikację drużyn grających oraz zmiany ich składów (piłkarzy).
•	Przeglądanie przez fanów wyników kolejek oraz aktualnego stanu ligi tzn. ranking drużyn (punkty, bramki, ilość rozegranych spotkań).
•	Tworzenie rankingu króla strzelców.
•	Możliwość tworzenia okresowych raportów na temat pracy sędziów np. ilość prowadzonych spotkań.
Odpowiedzialna za bazę osoba powinna mieć możliwość edytowania odpowiednich tabel. Fani powinni za pomocą tej aplikacji przeglądać wyniki kolejek, ranking ligi czy wyniki konkursu na króla strzelców. Pracownik PZPN powinien mieć możliwość sporządzania raportów na temat pracy sędziów.  

Baza powinna zawierać nie mniej niż 5 tabel, np.:
•	SPOTKANIA
•	DRUŻUNY
•	PIŁKARZE
•	TRENERZY
•	SĘDZIOWIE
Projekt może zawierać więcej tabel, np. tabelę SPOTKANIA można rozszerzyć o tabele SEZON itp.

Chcialbym aby ktos sprawdzil czy moja baza jest dobra :) tzn polaczenia itp :)

user image
i po stworzeniu MySQL 5
user image

Jeszcze jedno pytanie gdzie w PowerDesigner'ze ustawic autoinkrementacje?
P.S. pozdro Misiek :)

0

Zawodnicy

  1. ID_D niepotrzebne
  2. zdobyte_gole, minuty_na_boisku powinny wynika z z tabeli rozegrane mecze

Strzelcy
zbędna

Drużyny

  1. pozycja_w_tabeli, w-poprzednim_sezonie, gole_zyskane, stracone, zwyciestwa, remisy, porazki, punkty to zależy od wyników meczy - powinno być wyliczane tak jak zdobyte_gole i minuty_na_boisku
  2. trener masz w tabeli trenerzy
  3. id_st - jeśli nie określa to stadionu, który jest drużyny to do wyrzucenia

Trenerzy

  1. data_objecia_posady do wywalenia

Terminarz
przyjmijmy, że określa kto, z kim, kiedy, gdzie i tyle

  1. wynik out
  2. dodać gospodarze, id_st

dodatkowe tabele
zawodnik_druzyna (nie wiem jak to nazwac)
id_zawodnika
id_druzyny
od_kiedy
do_kiedy

sędziowie (tak to się pisze?)
id
imie
nazwisko
...

Mecze
id_meczu
id_terminu
id_sedziego_glownego
id_sedziego_pom_1
id_sedziego_pom_2 (przyjmujemy, że zawsze jest 3 sedziów)

sklady (skład w danym meczu - od kiedy do kiedy na boisku, czy w składzie podstawowym, na jakiej pozycji)
id_skladu
id_meczu
id_druzyny
id_zawodnika
data_wejscia
data_zejscia
podstawowy
pozycja

gole (kto, kiedy i komu strzelił bramkę)
id_gola
id_meczu
id_druzyny
id_zawodnika
czas
samobujcza

kartki
id_kartki
id_meczu
id_druzyny
id_zawodnika
czas
typ_kartki

generalnie musiałbyś to ładnie do kupy zebrać i pokazać raz jeszcze bo się mogłem poplątać

0

na razie bez relacji, dzis w nocy postaram sie sam zrobic "polaczenia miedzy tabelami". Prosze o sprawdzenie :)
user image

0

nie podoba mi sie ta pajenczynka ... no ale moze tak powinno byc?? user image

0
  1. nie stadion ma drużynę tylko drużyna sadione
  2. po co tabela rozegrane_mecze??
  3. w terminarz ma być id_gospodarze i id_goscie (oba wskazują na drużyny)
  4. teraz widać, że w tabelach gole, kartki niepotrzebne są id_druzyny

popracuj nad relacjami bo 1-1 to nie będzie raczej nigdzie

0
Misiekd napisał(a)
  1. nie stadion ma drużynę tylko drużyna sadione
  2. po co tabela rozegrane_mecze??
  3. w terminarz ma być id_gospodarze i id_goscie (oba wskazują na drużyny)
  4. teraz widać, że w tabelach gole, kartki niepotrzebne są id_druzyny

popracuj nad relacjami bo 1-1 to nie będzie raczej nigdzie

  1. Nie rozumiem ....
  2. Zapomnialem o tabeli gole dlatego tamta stwozylem
  3. Wydaje mi sie czy chodzi tylko o nazewnictwo ... no i o rodzaj pola jesli sie myle to mnie popraw
  4. Bo ID_Druzyny wynika z ID_zawodnika dobrze rzumiem?

Najnowsze wypociny .. lepiej jest?? user image

0
  1. w drużynie powinno być id_stadion
  2. po to masz tabelkę sedziowie aby w innych tabelach się do niej odwoływać po id a nie po (jak pewnie chciałeś) nazwie sędziego, która btw nie jest unikalna
  3. tak
0
  1. zmienione, co prawda nie widze zbytnio wiekszej roznicy, ale to jadopiero zaczynam z bazami
  2. chyba chodzi o id gospodarza i goscia ale tak czy owak wiem zeby sie odwolywac po ID
    user image
    Zgadza sie? Moge probowac tworzyc klucze?:) Jeszcze chcialbym wiedziec gdzie w powerdesignerze ustawia sie autoinkrementacje :) bo mi sie nie chce potem w phpmydmin'ie przestawiac :)
0

pomiędzy trenerzy a drużyna jest powiązanie n-m bo a) drużyna może mieć wielu trenerów b) jeden trener może trenować różne drużyny (niekoniecznie w tym samym czasie) więc tu przydał by się tabela, np

trenuje
*#id_trenera
*#id_druzyny
od
do

to jest dokłądnie tak samo jak z zawodnikami i drużyną

co do relacji to

  1. w każdej tabelce powinieneś mieć klucz główny. Poza tabelkami kariera i trenuje tabelki mają klucz główny sztuczny, tzn specjalnie w tym celu dodaną kolumnę autoincrement (w rzeczywistych aplikacjach prościej jest kokoRZystaćystać przy wyszukiwaniu/usuwaniu/zmienianiu czy przy składaniu wyniku z kilku tabel z jednego pola typu numeric, które określa jednoznacznie rekord niż z kilku pul czy pola typu string)
  2. klucze obce to wszystkie pola, które mają nazwę id_coś_tam (mówię oczywiście o Twoim schemacie) i tyle też powinieneś mieć relacji do danej tabeli

w karierze i trenuje jeśli pole do jest puste (null) to oznacza, że dana osoba jest zatrudniona w danej drużynie - np jan kowalski, id=1 może mieć takie wpisy w kariera

id_z  id_d  od      do
1      1      12.02  12.03
1      2      15.03  null

co oznacza, że od 12.02 do 12.03 grł w drużynie 1, potem miał przerwę do 15.03 i teraz gra w drużynie 2. Jeśli nauczyciel każe Ci pokazać gdzie aktualnie gra jakiś zawodnik to po prostu szukasz rekordów z jego id i z pustym polem do - to taka uwaga

0

Pomiedzy kariera a duzyny nie powinno byc tez polaczenie many-many? i wtdy jak tworze tablele trenuje to tez z druzyna many-many i z trenerzy many-many??
Wiem ze latwiej rozpoznawac po cyferce niz stringu :) tylko wiesz moze gdzie w tym powerdesignerze ustawic taka opcje zeby mi kod SQL ktory wyeneruje Od razu zrobil autoincremetnacje?

0

po to jest ta tabelka, żeby nie było m-n - zawodnik nie może w tym samym czasie grać w dwóch różnych drużynach (a przynajmniej takie jest założenie)

nie używam PD

0

Troche pozno wiec moze byc troche nowych bledow ale mam nadzieje ze jednak nie jest najgorzej. Klucze obce same sie utworza wiec musialem pousuwac klucze glowne z innych tabel. Nie wiedzialem jakie klucze utworzyc w trenuje i kariera. dodac jakies nowe ID? Nie jestem nadal pewny wszystkich relacji. Klucze glowne sa oznaczone <pi> natomiast autoinkrementacja NO.
P.S. takie pytanie z ciekawosci :) inne programy do projektowania DB tez przy polaczeniu n-m tworza dodatkowa kolumne? :> bo moge pokazac jeszcze schemat po eksporcie do mySQL ale nie wiem czy bedzie on czytelny :)user image

0

gdzie masz klucze obce w kariera, trenuje, druzyny i całej reszcie?

0

To model konceptualny wiec nie zawiera kluczy obcych, aczkolwiek nie byłby to chyba problem dla kolegi @BoBi1234 nacisnąć Ctrl+G i wygenerować model fizyczny.
Połączenie wiele do wielu nie można zrealizować inaczej jak tworząc dodatkową tabelę pośrednią więc raczej inne programy inaczej tego nie robią jeśli o to pytasz.
BTW - nie lepiej byłoby Mecze zrobić za pomocą encji asocjacji?

0

Nie ma problemu z modelem fizycznym :) user image BTW - nie lepiej byłoby Mecze zrobić za pomocą encji asocjacji? a pomoca czego?:> Jakie ustawic klucze w karierze i trenuje? ID_zawodnika i ID_trenera? w ogóle klucz obcy moze byc jednoczesnie kluczem glownym?

0
  1. co to są te niebieskie tabelki?
  2. masz dwa klucze obce - każdy do innej tabelki, ale nie ma przeciwwskazań aby oba pola, które osobno są kluczami obcymi razem były kluczem głównym
0

Niebieskie tabelki powstaja przy relacjach many-many. Niezbyt wiem jak zrbic te klucze glowne :/ w tych dwoch tabelkach :/

0

ale po to masz tabelę trenuje!!!!, Przecież na jednym meczu jest jeden sędzia główny!! i po to masz tabelkę składy!!

0

sklady - zawodnicy
"wielu zawodnikow do jednego skladu, wiele skladow moze byc do jednego zawodnika" czyli relecja m-n dobrze mysle?
mecze - sklady
"min 2 sklady do jednego meczu (goscie i gosp), no ale ten sam sklad moze byc w innym meczu"

Usunelem relacje tenerzy-druzyny.
Dobrze mysle? to jest wsuie moje pierwsze takie spotkanie z bazami bo dotychczas bazy polegaly na tworzeniu zapytan SQL wiec poprawiajcie mnie.
P.S Misiekd moglbys sie odezwac na moje GG:1228776??

0

składy - zobacz jak wyglądała ta tabelka w poście z 20-03-2009 22:59
to właśnie on wywalała relację m-n ale jak wywaliłeś z niej połowę pól to przestała spełniać swoej zadanie. Dodatkowo nie jest w niej zapisywany podstawowy skład ale dokładnie kto i ile grał w danym meczu - wątpię, żeby zdażyły się chociaż dwa mecze, w których skład byłby taki sam

0

1.Juz to pojelem wsumie to bylo oczywiste ale nie potrafie myslec "bazodanowo". Co do wywalania tych pol to niestety ale w modelu konceptualnym cos takiego musze robic ... Dodalem relacje sklady - druzyny ( druzyna wynika z zawdnika ale w danym momencie, jesli zawodnik zmienil klub to wskazywaloby bledny wynik .. tak moim tokiem myslenia)
2.A co do tabeli mecze tmoge usunac ID_sed_gl bo klucz obcy ID_sedziego bedzie jako sedzia glowny tak?
3. Terminarz: jesli usune id_gospodarze to klucz obcy id_druzyn moze byc jako gospodarze ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1