Pomoc w zaprojektowaniu bazy danych.

0

Zaczynam projekt do zarzadzania zadaniami i chciałbym zaczać od zaprojektowania bazy danych.
Nigdy tego nie robiłem wiec pisze tutaj z prośba o pomoc.

Otóż tak, plan jest taki:

user ma wiele projektów,
projekt może mieć wiele userów
user moze miec także task bez projektu
user ma wiele contextów
context nie musi miec usera

projekt ma wiele tasków
task ma jeden projekt

każdy task ma context
context nie musi meic przypisanego taska.

w załączniku dołączyłem jeszcze bardziej szczególowe dane dot projektu bazy.

kończe robić szkic w vertabelo, ale jakby ktoś mógl pomoc to byłbym wdziczny

0

Przyglądałeś się rozwiązaniom istniejącym w stylu asana, wunderlist, todoist, trello?
Warto to zrobić by pozyskać wiedzę na temat tego co jest/może być wykorzystane i co powinno być w takiej bazie.

0

Tak, jestem użytkownikiem todoist.

0

No to ja napiszę konkretniej abyś zrozumiał co @gg chciał Ci przekazać.
Bazy danych w znacznej większości opierają się o relacje. Relacje mogą być 1 do 1, 1 do wielu lub wiele do wiele. Relacje robisz przeważnie poprzez klucze główne (Primary Key) i klucze obce (Foreign Key). Jak to robić? W prosty sposób jeśli tabel A ma mieć tylko jeden odpowiednik w tabeli B (1 do 1) to konieczne jest w tabeli A dodanie pola z ID jako FK tabeli B. Jeśli ta sama sytuacja miałaby być na zasadzie 1 do wielu to wtedy w tabeli B robisz FK do tabeli A. Natomiast jeśli wiele do wielu to robisz dodatkową tabelę gdzie będziesz miał dwie kolumny z FK do tabeli A i B.

2

Owszem, relacyjne bazy danych opierają się o relacje. Relacja to zbiór krotek o tym samym schemacie, a schemat relacji to zbiór atrybutów. Jak sobie narysujemy taką relację ze schematem i krotkami na kartce, to wyjdzie z tego coś, co dzieci w szkole nazywają "tabelką", stąd też wzięła się druga nazwa dla relacji - tabela.

1 do 1, 1 do wielu, wiele do wielu, to nie są żadne relacje, tylko krotności związków. One nie występują w bazie danych, a jedynie w modelu związków encji.

Zasady transformacji związków z modelu ER do modelu relacyjnego są następujące:

  • Związek binarny 1:1 => klucz obcy we wskazanej tabeli.
  • Związek unarny 1:1 => klucz obcy w tej samej tabeli.
  • Związek binarny 1:M => klucz obcy w tabeli po stronie "wiele".
  • Związek binarny M:N => tabela.
  • Związek unarny M:N => tabela.

Przy czym te klucze obce są bardzo wartościowe, ale też nie do końca wymagane. Wielu ich nie używa ze względu na głupotę, czasami się z nich rezygnuje ze względu na wydajność, a czasami po prostu system bazy danych nie wspiera takiej funkcji.

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