Narzędzia użytkownika

Narzędzia witryny


fedora:aplikacje:libreoffice:base_pgsql

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronachPoprzednia wersja
Nowa wersja
Poprzednia wersja
fedora:aplikacje:libreoffice:base_pgsql [2025/11/03 19:55] – [Dodanie kolumny 'kraj' z wartością domyślną 'Polska' obowiązkiem wpisu do tabeli 'test_table'] sindapfedora:aplikacje:libreoffice:base_pgsql [2025/11/06 21:09] (aktualna) – [Pola kluczy] sindap
Linia 139: Linia 139:
 <code sql> <code sql>
 CREATE TABLE test_table ( CREATE TABLE test_table (
-    id SERIAL PRIMARY KEY,+    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
     nazwa TEXT NOT NULL,     nazwa TEXT NOT NULL,
     opis TEXT,     opis TEXT,
Linia 145: Linia 145:
 ); );
 </code> </code>
 +<WRAP center round important 80%>
 +Uwaga. Dodana kolumna o typie TEXT skutkuje tym, że po odświeżeniu tabel i wprowadzaniu danych tekstowych czasem w polach mogą pojawić się zera. Jeżeli tak się stanie odświeżenie tabel nie wystarcza. Trzeba wyłączyć i włączyć LO Base.
 +</WRAP>
 +
 +Jako typ pola kluczy używanym ''INTEGER ...'' . ''SERIAL'' jest starszym (choć wciąż działającym) sposobem tworzenia automatycznych kluczy w PostgreSQL, a ''GENERATED ... AS IDENTITY'' to nowoczesny, zgodny ze standardem SQL sposób.
 +
 +Jednak w przypadku bazy dla LibreOffice Base na tą chwilę wygodniej stosować SERIAL. W przypadku pola SERIAL znika problem pojawiających się zer. Nie wiem czy problem jest po stronie sterownika łączącego LO Base z bazą czy samego LO. Biorąc pod uwagę, że LO Base bez problemu działa z HSQLDB to raczej wina jest po stronie sterownika SDBC.
 +
 ==== Dodanie kolumny 'lokalizacja' do tabeli 'test_table' ==== ==== Dodanie kolumny 'lokalizacja' do tabeli 'test_table' ====
 <code sql> <code sql>
Linia 172: Linia 180:
  
 ===== Struktura bazy ===== ===== Struktura bazy =====
 +==== Pola kluczy ====
 +  * **klucz główny w każdej tabeli:** id
 +  * **klucz obcy:** nazwa_tabeli_docelowej_id
  
 +Trzymanie się tej zasady ułatwi późniejszą administrację i użytkowanie. W niektórych przypadkach stosuje się podejście klucza głównego nawiązującego do nazwy tabeli. Jeżeli tabela ''artysci'' to klucz ''artysta_id'', tabela ''utwory'' to klucz ''utwor_id''. Z jednej strony daje większą czytelność ale z drugiej więcej pisania. Najważniejsze by przynajmniej w obrębie jednej bazy trzymać się tej samej zasady.
 ==== Tworzenie przykładowej tabeli artyści ==== ==== Tworzenie przykładowej tabeli artyści ====
  
Linia 212: Linia 224:
 <code sql> <code sql>
 ALTER TABLE utwor_artysta ADD CONSTRAINT unikalny_utwor_artysta UNIQUE (utwor_id, artysta_id) ALTER TABLE utwor_artysta ADD CONSTRAINT unikalny_utwor_artysta UNIQUE (utwor_id, artysta_id)
 +</code>
 +
 +==== Dodanie tabeli gatunków muzycznych ====
 +<code sql>
 +CREATE TABLE gatunki (
 +    id SERIAL PRIMARY KEY,
 +    nazwa TEXT NOT NULL UNIQUE
 +);
 +</code>
 +
 +==== Połączenie tabeli artystów z tabelą gatunków relacją jeden-do-wielu ====
 +W tym celu w tabli ''artysci'' dodana zostanie kolumna ''gatunek_id'' przechowująca klucze tabeli ''gatunki''.
 +
 +<code sql>
 +ALTER TABLE artysci
 +ADD COLUMN gatunek_id INTEGER REFERENCES gatunki(id) ON DELETE SET NULL;
 </code> </code>
 ===== Połączenie LibreOffice Base ===== ===== Połączenie LibreOffice Base =====
fedora/aplikacje/libreoffice/base_pgsql.1762196137.txt.gz · ostatnio zmienione: przez sindap

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki