Baza danych LibreOffice Base

Odpowiedz Nowy wątek
2017-06-11 17:23
0

Dzień dobry,
jestem w trakcie robienia bazy danych. Zrobiłem tabelę z kluczem głównym, na który składa się kilka pól tej tabeli. Czy jest możliwość, by ten klucz główny rozszerzyć w przyszłości o dodatkowe pola?
Przykładowo mamy tabelę o polach A, B i C.
Teraz klucz główny składa się z B i C.
W przyszłości może być możliwość dodawania pola D i wtedy chciałbym, by klucz główny składał się z B i C i D.

Dziękuję.

Pozostało 580 znaków

2017-06-12 11:50
1

Nie rób tak. Taka sytuacja jak opisujesz jest niby poprawna, ale nie praktykuje się jej. Zazwyczaj jako klucz główny daje się sztuczne pole nazywając np ID oraz ustawia w nim autoinkementację. Eliminuje to takie problemy jak opisujesz. Wtedy odwołanie się w innych tabelach do danego rekordu jest też prostsze ponieważ podajesz tylko ID, a nie zestaw pól A,B,C jak w Twoim przypadku.

Pozostało 580 znaków

2017-06-12 13:01
2

Taka sytuacja nie jest poprawna, nigdy. Klucza głównego się nie zmienia. Do klucza głównego mogą się odwoływać inne tabele po kluczu obcym. Zmiana klucza głównego pociągała by za sobą modyfikację wszystkich tabel od tego klucza zależnych oraz wszystkich widoków/zapytań. Generalnie bazę projektuje się na początkowym etapie projektu. Powinno się temu etapowi poświęcić DUŻO uwagi i starać się ująć wszelkie znane i mogące w przyszłości pojawić się aspekty rzeczywistości, którą próbuje się opisać. Generalnie zaprojektowanej bazy zmieniać się nie powinno. Generalnie. Ale jak wiadomo generalnie sobie a życie sobie i chyba każda, nawet najlepiej zaprojektowana DB kiedyś dochodzi do etapu, że czegoś się nie da zrobić i trzeba zmieniać. Ale nigdy nie rusza się PK w tabelach, chyba, że na bazie istniejącego schematu tworzy się nowy wraz z migracją bazy. Taka zmiana PK to za duże niebezpieczeństwo spieprzenia czegoś jeszcze.

Natomiast jak pisał @Mr.YaHooo rzadko kiedy stosuje się klucz główny na więcej niż jednym polu (praktycznie wcale poza tabelami łączącymi przy relacjach m-n), a jeśli nie ma wśród istniejących pól pojedynczego pola kandydującego do miana PK wprowadza się dodatkowe pole ID typu numerycznego, które jest auto inkrementowane. Natomiast na pozostałych polach (polu), które kandydują do miana PK ustawia się indeks unikalny


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
@abrakadaber faktycznie zapomniałem o tym, że trzeba dodać potem indeks unikalny. - Mr.YaHooo 2017-06-12 20:36

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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