Pytanie jednak czy samo ustawienie OneToOne musi wymuszać fakt, że z dwóch stron element ma tylko JEDEN element powiązany?
Oczywiście, inaczej by to nie miało sensu.
@quechua jak bym powiedział, że 1:1 oraz 1:wielu nie muszą mieć takich samych struktur. Przy 1:1 wystarczy, że rekordy w obu tabelach będą miały takie samo ID (czy jak tam nazwiesz klucz główny)
A co jeśli związek jest opcjonalny?
Ty piszesz o rozbijaniu tabeli na dwie, nie o związkach 1:1.
Ja jestem zwolennikiem tej opcji gdzie baza sama z siebie trzyma spójność oraz poprawność powiązań pomiędzy rekordami. Dlatego wszędzie zakładam klucze obce które wymuszają taką spójność. W dodatku pozwalają na usunięcie kaskadowe rekordów po usunięciu "nadrzędnego" rekordu.
Świetny pomysł na przypadkowe skasowanie całej bazy albo spędzenie dziesiątek godzin na debugowaniu.
Właściwie z tego punktu widzenia to błędem jest robienie relacji 1:1 w postaci:
tabela a:
id
nazwa
tabela b:
id
nazwa
a_id
powinno być:
tabela b:
a_id
nazwa
Nie, nie powinno tak być. Klucz obcy powinien być. Jeśli masz jedną kolumnę ID w obu tabelach, to masz jedną tabelę rozbitą na dwie, a nie związek 1:1.
Pociag.Skład = objectSklad;
Czy to ma jakąś konkretną nazwę?
To się nazywa ustawienie wartości właściwości obiektu.
Pytanie tylko, czemu na poziomie obiektowym chcesz mieć cykliczne referencje?
Powtarzam jeszcze raz - nie ma czegoś takiego jak "relacja 1:1" ani "relacja 1:N".
Relacje istnieją w relacyjnych bazach danych, i są zbiorami krotek definiowanymi przez te same atrybuty (schemat), w efekcie czego fizycznie wyglądają jak tabele.
Natomiast krotności związków (1:1, 1:N, M:N) istnieją w modelach związków-encji, które to dopiero są transformowane na model relacyjny podczas implementacji bazy danych. Krotność taka w bazie relacyjnej przyjmuje najczęściej postać klucza obcego.
O tym co to są relacyjne bazy danych możecie przeczytać tutaj: http://osilek.mimuw.edu.pl/index.php?title=Bazy_danych/Wyk%C5%82ad_2
O modelowaniu związków encji tutaj: http://osilek.mimuw.edu.pl/index.php?title=Bazy_danych/Wyk%C5%82ad_3
A o transformowaniu drugiego na pierwsze tutaj: http://osilek.mimuw.edu.pl/index.php?title=Bazy_danych/Wyk%C5%82ad_4