![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 25.11.2014 Ostrzeżenie: (10%) ![]() ![]() |
jakie przełożenie na strukturę bazy ma krotność relacji encji w diagramie?
Gdzie w budowie tabel mam zapisane czy relacja między encjami jest jeden-do-wielu czy jeden-do-jeden? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jesli masz dobrze zrobiona strukture to aby zobaczyc jakie sa relacje pomiedzy tabelami, najlepiej uruchomic strukture bazy w jakims edytorze np. jesli mysql to mysql workbench i tam automatycznie beda widoczne powiazania i typy powiazan.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Diagramy pomagają przede wszystkim zrozumieć i ogarnąć zależności między tabelami. Na strukturę tych tabel przekładają się tylko jeśli stosuje się FOREIGN KEY w tabelach InnoDB. Wtedy jeśli jakieś pole z ustawionym FOREIGN KEY na inną tabelę jednocześnie ma primary albo unique key to wtedy można mówić o relacji jeden do jeden, jeśli to zwykły index to jeden do wielu. Przydaje się to jeśli chcemy zachować spójność bazy już na poziomie mysql, na przykład by niemożliwe było usunięcie kontrahenta, na którego wystawione są faktury.
W praktyce nie pamiętam kiedy ostatnio w projekcie jakiejś bazy używałem relacji jeden do jeden. Zazwyczaj łatwiej jest po prostu umieścić wszystko w jednej tabeli. Właściwie zdecydowana większość relacji to jeden do wielu, ewentualnie wiele do wielu połączone przez dodatkową tabelę w środku. Do tego większość baz danych jest projektowana w ogóle bez foreign keys, a spójność jest trzymana na poziomie aplikacji (przykładowo w interfejsie nie ma w ogóle możliwości usuwania kontrahentów, ewentualnie ustawia się jakąś flagę nieaktywności, a jeśli jest możliwość usuwania to dodatkowy kod robi coś konkretnego z powiązanymi fakturami). Oczywiście nie staram się nikogo przekonywać do rezygnowania z foreign key, kaskadowe operacje chociażby są całkiem przyjemne w odpowiednich sytuacjach, ale taka jest rzeczywistość, często terminy wygrywają ze sztywnym trzymaniem ACID. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:28 |