Relacje pomiędzy bazami danych - jaka poprawna ?

Relacje pomiędzy bazami danych - jaka poprawna ?
pred
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 4 lata
  • Postów:33
0

Witam

Robie projekt na bazy danych. Mam doprowadzić wszystko do 3 postaci normalnej.

Posiadam obecnie kilka tabel, z trzema mam takie problemy że:

  1. Tabela Participants powinna mieć możliwość odwołania się do tabeli PlayerDetails, lecz PlayerDetails nie powinna nic wiedzieć na temat Participants. Po prostu nie ma takiej potrzeby. Jak to dokładnie zaznaczyć na diagramie ?
  2. Participants powinno odwoływać się jakoś do ConflictSide, z tym że ConflictSides tabela ma klucz kompozytowy. Takie same pytanie, jak to dokładnie oznaczyć? Może po prostu napisać nazwę tabeli w NavigationProperties ?

Krótkie wyjaśnienie na temat tabel:
Events - wydarzenia - Zapisani użytkownicy spotykają się w wyznaczonym miejscu, określonym przez organizatora wydarzenia.
Participants - jest to lista zapisanych użytkowników na wydarzenie. Każdy podczas zapisu wybiera stronę konfliktu oraz inne rzeczy jak broń (z listy) którą wcześniej podał w profilu
PlayerDetails - są to informacje na temat użytkownika - podaje on tam swoj ksywkę, team do którego należy, Kamuflaż oraz inne rzeczy.

Tutaj screen. https://zapodaj.net/4d232022d1d31.bmp.html

Oczywiście w bazie danych będą też inne błędy. Jeśli ktoś jakieś wychwyci to proszę o info.

Pozdrawiam

mariano901229
  • Rejestracja:ponad 10 lat
  • Ostatnio:7 miesięcy
  • Postów:597
0

Ja widzę wiele błędów:

  1. Brak konsekwencji w nazwie klucza głównego tabeli - raz jest Id, w tabeli Maps mamy MapId.
  2. Tabela ConflictSides z diagramu wynika, że mamy taką sytuację - tam klucz główny jest złożony z dwóch atrybutów w tym jeden to varchar ?
    "Terroryści", 2 (numer eventu);
    "Prawilni",2
    "Terroryści",3
    "Prawilni,3
    Rozumiesz mogą być te same nazwy konfliktu
  3. W Partipicants mamy UserId, ale nie ma połączenia z AspNetUsers ? Czy UserId powinno być połączone z PlayerDetails ?
  4. Na tym diagramie mamy związek wiele do wielu między rolami, a użytkownikami. Mam nadzieję, że wiesz iż pomiędzy nimi powinna być tabela łącząca.

To tak na pierwszy rzut oka... w mojej opinii ogólnie cała struktura jest mało czytelna. Musiałem się chwilę zastanowić co jest co. Z reguły ja projektuje bazy danych w taki sposób by kilka miesięcy później wiedzieć szybko o co chodzi.

edytowany 1x, ostatnio: mariano901229
pred
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 4 lata
  • Postów:33
0
  1. poprawiłem
  2. Oczywiście zdaję sobie z tego sprawę, lecz w każdym wydarzeniu nie może być dwóch takich samych nazw konfliktu. Nazwa konfliktu w połączeniu z numerem wydarzenia daje unikatowy klucz główny (kompozytowy)
  3. Podobna sytuacja jak w 2. Tutaj zastanawiam się jak to połączyć do PlayerDetails. Może być relacja tylko w jedną stronę ? Jeśli tak to jak to zaznaczyć ? Dokładniej: Jeśli będę wyciągał dane z tabeli Participants to chce pobrać też niektóre kolumny z tabeli PlayerDetails. Ale np przy pobieraniu PlayerDetails nigdy nie zajdzie potrzeba wyciągania informacji z Participants.
  4. Tak, dodam ją po namyśle czy to w ogóle jest mi potrzebne w tym projekcie.

Co do Twojego ostatniego zdania Mariano. Też tak staram sie robić, na razie wychodzi jak wychodzi.

edytowany 1x, ostatnio: pred
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)