Modelowanie bazy danych

Modelowanie bazy danych
P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Mam za zadanie zamodelować bazę danych, dostałem informacje zwrotną o treści: do identyfikatora Encji kontrakt powinien wejść również związek od Zawodnika. Niestety nie wiem do końca jak to zrobić, proszę o pomoc.

screenshot-20200617081321.png

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
0

Nie znam się na diagramach, ale wnioskuję, ze hasze oznaczają kolumny na które ma się składać klucz główny i jednoznacznie identyfikują wiersz. W przypadku Kontraktu data_zawarcia nie ma takiej własności, ma ją za to trójka data_zawarcia, zawodnik.imie, zawodnik.nazwisko.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Czyli, wystarczyłoby do encji kontrakty dodać dwa atrybuty: imie oraz nazwisko i dodać je do klucza głównego?

biela_
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: WPR
  • Postów: 136
0

A profesor do encji Klub i Zawodnik się nie czepiał? Bo przecież ten związek masz na strzałkach posiada i jest przypisany do.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Nie, nie dostałem żadnej uwagi odnośnie tego.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Czy mógłby ktoś potwierdzić moją wiadomość odnoście dodania atrybutow do encji Konrakt?

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
0

Tak bym powiedział, ale nie wiem jaka jest konwencja, bo te atrybuty to de facto ten związek opisany strzałką jest przypisany do, a nie widzę na schemacie jawnie wskazanych kolumn klucza obcego w pozostałych miejscach.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

Możesz z tego SQL wygenerować?
Np. ja tych obrazków nie rozumiem i do mnie bardziej przemawia CREATE TABLE i ALTER TABLE

biela_
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: WPR
  • Postów: 136
0

To może chodzi o to że ustawił ten klucz na data_zawarcia, jak będą 3 kontrakty jednego dnia to jak je rozpozna? Dodaj tam pole np nr_kontraktu

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

Tak, dokładnie o to chodzi, tylko że mam jasno określone, że do indentyfikatora ma wejsc zwiazek od zawodnika.

superdurszlak
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 2003
2
Przemas1402 napisał(a):

Czyli, wystarczyłoby do encji kontrakty dodać dwa atrybuty: imie oraz nazwisko i dodać je do klucza głównego?

To będzie bardzo kiepski klucz główny dla kontraktu. Będziesz go identyfikował sporym kluczem złożonym, w dodatku będzie mieć w składzie dwa klucze obce do jednej tabeli. Poza tym ogólnie identyfikując ludzi po imieniu i nazwisku zakładasz, że nie ma dwóch ludzi z tym samym imieniem i nazwiskiem - a jeśli są, to trzeba zmienić klucz również tam. Nie mówiąc o tym, o czym ktoś już wspomniał - identyfikowanie po dacie jest słabe, bo skąd możesz wiedzieć, że dwóch ludzi nie zawrze kontraktu w jednym dniu albo nawet minucie?

Najprościej byłoby wprowadzić klucze proste (jakieś id_kontraktu dla kontraktu, pesel lub id_zawodnika dla zawodnika etc...) i po nich identyfikować, wtedy wystarczyłoby że kontrakt zawiera informację o id_zawodnika / jego peselu jako klucz obcy i jakieś własne unikalne id jako klucz główny. No chyba, że prowadzący jest jakimś fanem sklejania kluczy złożonych z 3-6 kolumn. Wtedy to hulaj dusza, możesz jeszcze dorzucić fazy księżyca do identyfikatora :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.