ďťż
 
[newbie] Klucze - po co? ďťż
 
[newbie] Klucze - po co?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[newbie] Klucze - po co?



Lukasz Palka - 15-11-2005 20:12
[newbie] Klucze - po co?
  Witam,

próbuję nauczyć się mysql. Googluje i staram się. Czytałem już troszeczkę
dokumentację na www.mysql.com . Niestety mój angielski nie jest aż tak
dobry. Próbowałem też wygooglać, ale nie udało mi się.

A moje pytanie - po co właściwie są klucze? Co daje zaznaczenie, ze dana
kolumna jest kluczem podstawowym? Co daje ustawienie kluczy obcych?

Czytalem o INNER JOIN, dowiedzialem sie, ze rownie dobrze mozna uzywac ','.
Rozumiem, ze w takiej sytuacji sama kolumna z kluczami jest potrzebna, ale
co mi da, ze oznacze ta kolumne jako klucz podstawowy?

Wiem, ze te pytania sa naprawde podstawowe, ale ciezko jest znalezc podstawy
w google.

Pozdrawiam
--
Pala
gg: 778724





Godless - 15-11-2005 20:12

  Dnia Tue, 15 Nov 2005 00:18:07 +0100, Lukasz Palka napisał(a):

> A moje pytanie - po co właściwie są klucze?

Z: http://pl.wikipedia.org/wiki/Baza_danych

"Z braku możliwości identyfikacji wiersza przez jego pozycję pojawia
się potrzeba obecności jednej lub więcej kolumn niepowtarzalnych w
granicach całej tabeli, pozwalających odnaleźć konkretny wiersz.
Kolumny te określa się jako "klucz podstawowy" (primary key) tabeli."

Praktyczny prosty przykład, który Ci to powinien zobrazować:

Masz tabelę "klienci", która zawiera pola: nazwa klienta, adres oraz
tabelę, która zawiera pola: data zamówienia, opis zamówienia,
zamawiający.

Załóżmy, że jako klient rejestruje się Anna Kowalska, dokonuje 5
zamówień, potem wychodzi za mąż za Nowaka (aktualizuje swoje dane w
bazie i staje się Anną Kowalską Nowak), dokonuje następnych pięciu
zamowień. Dodatkowo rejestruje się następny klient -- inna Anna Kowalska
:) i dokonuje 5 zamówień.

Zamówienia Anny Kowalskiej (tej pierwszej) w polu zamawiający będą
miały wartość "Anna Kowalska", a po ślubie "Anna Kowalska Nowak",
zamówienia drugiej Anny Kowalskiej będą miały w polu zamawiający
wartość "Anna Kowalska" -- więc widzisz momentalnie bałagan...

Aby go uniknąć, wystarczy wprowadzić do tabeli klienci pole "numer
klienta" jako klucz główny, jednoznacznie identyfikujący dany rekord,
zaś w tabeli zamówienia w "zamawiający" wpisywać ten numer.

Wtedy możesz mieć wielu użytkowników Anna Kowalska i bez problemu
identyfikować, które zamówienia do której Anny należą i żaden ślub
czy rozwód nie wpłynie na spójność danych Twojego sklepu :)

Moje wyjaśnienie jest, podejrzewam, bardzo łopatologiczne i na pewno
koledzy grupowicze będą tu mieli sporo do dodania, ale sądzę, że da
Ci ono jakiś pogląd na temat, po co w ogóle są klucze.

Pozdrawiam,

--
Godless
godless@vp.pl




Godless - 15-11-2005 20:12

  Dnia Tue, 15 Nov 2005 00:18:07 +0100, Lukasz Palka napisał(a):

> próbuję nauczyć się mysql. Googluje i staram się. Czytałem już troszeczkę
> dokumentację na www.mysql.com . Niestety mój angielski nie jest aż tak
> dobry. Próbowałem też wygooglać, ale nie udało mi się.

http://binboy.sphere.pl/index.php?sh..._Tutorial.html

To jest tutorial, który pochodzi najprawdopodobniej z manuala do MySQL'a
-- prosty angielski, ze słownikiem na pewno dasz radę.

Wygooglać się da, chłopaki z Google naprawdę wszystko wiedzą :)

Pozdrawiam,

--
Godless
godless@vp.pl




Grzesiek G. - 15-11-2005 20:12

  Lukasz Palka napisał(a):
> Witam,
>
> próbuję nauczyć się mysql. Googluje i staram się. Czytałem już troszeczkę
> dokumentację na www.mysql.com . Niestety mój angielski nie jest aż tak
> dobry. Próbowałem też wygooglać, ale nie udało mi się.
>
> A moje pytanie - po co właściwie są klucze? Co daje zaznaczenie, ze dana
> kolumna jest kluczem podstawowym? Co daje ustawienie kluczy obcych?
>
Ustawianie kluczy (obcych i nieobcych) daje to, że integralności danych
będzie pilnowała sama baza.

--
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!





Lukasz Palka - 16-11-2005 11:17

  Godless wrote:

> Moje wyjaśnienie jest, podejrzewam, bardzo łopatologiczne i na pewno
> koledzy grupowicze będą tu mieli sporo do dodania, ale sądzę, że da
> Ci ono jakiś pogląd na temat, po co w ogóle są klucze.

No dobra, jakieś tam pojęcie o kluczach mam, ale np. ...

....załóżmy, że wklepuję zamówienie sam (cokolwiek wklepuję gdzieś), mam
jakąś tabelkę z zamówieniami i nie pamiętam jaki dana osoba miała klucz
podstawowy, to co w takim momencie? Muszę odnaleźć tą konkretną osobę i
zapamiętać klucz? (może przykład z zamówieniami nie jest trafiony, bo
prawdopodobnie zaloguje się ona w systemie i sama złoży zamówienie na
"zalogowanym kluczu")

....dajmy taki przykład. Mam tabelkę książki. Mam w niej kolumnę - obcy klucz
- wydawca_id. Wklepując nową książkę do tabeli nie pamiętam jaki klucz
miało wydawnictwo i co wtedy?

Dzięki za pomoc.
--
Pala
gg: 778724




Lukasz Palka - 16-11-2005 11:17

  Godless wrote:

> To jest tutorial, który pochodzi najprawdopodobniej z manuala do MySQL'a
> -- prosty angielski, ze słownikiem na pewno dasz radę.

No to jest ten. Już go przerabiałem. Z angielskim jest problem gdy otworzę
index i znajdę sobie jakiś syntax, bo nawet mając przetłumaczone na polski
robią są schody.
--
Pala
gg: 778724




Sławomir Szyszło - 16-11-2005 11:17

  Dnia Tue, 15 Nov 2005 22:46:53 +0100, Lukasz Palka <p.a.l.a@poczta.fm>
wklepał(-a):

>No dobra, jakieś tam pojęcie o kluczach mam, ale np. ...
>
>...załóżmy, że wklepuję zamówienie sam (cokolwiek wklepuję gdzieś), mam
>jakąś tabelkę z zamówieniami i nie pamiętam jaki dana osoba miała klucz
>podstawowy, to co w takim momencie? Muszę odnaleźć tą konkretną osobę i
>zapamiętać klucz? (może przykład z zamówieniami nie jest trafiony, bo
>prawdopodobnie zaloguje się ona w systemie i sama złoży zamówienie na
>"zalogowanym kluczu")

Klucze sztuczne to nie to samo co naturalne. Sztuczne, czyli "ID" służą przede
wszystkim do powiązania poszczególnych tabel.

>...dajmy taki przykład. Mam tabelkę książki. Mam w niej kolumnę - obcy klucz
>- wydawca_id. Wklepując nową książkę do tabeli nie pamiętam jaki klucz
>miało wydawnictwo i co wtedy?

Wydawnictwa szukasz po NIP lub jakimś symbolu kontrahenta lub po nazwie. Klucz
"wydawca_id" zapewnia ci powiązanie książki z tabelą "wydawcy". Nie myl
interfejsu aplikacji ze schematem bazy danych. Po to są listy wartości, pola do
wyszukiwania itp., żeby użytkownik nie musiał pamiętać wartości kluczy. Zaś
aplikacja wewnętrznie wyszukuje "wydawca_id" wg zadanych kryteriów (NIP, nazwa,
miasto) i wstawia je jako klucz obcy do tabeli "ksiazki".

Zajrzyj tu:
http://www.dbf.pl/faq/tresc.html?rozdzial=1#linki1
--
Sławomir Szyszło mailto:slaszysz@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?grou...mp.bazy-danych




Morff - 16-11-2005 11:17

  Dnia 15-11-2005 o 22:46:53 Lukasz Palka <p.a.l.a@poczta.fm> napisał:

> Godless wrote:
>
>> Moje wyjaśnienie jest, podejrzewam, bardzo łopatologiczne i na pewno
>> koledzy grupowicze będą tu mieli sporo do dodania, ale sądzę, że da
>> Ci ono jakiś pogląd na temat, po co w ogóle są klucze.
>
> No dobra, jakieś tam pojęcie o kluczach mam, ale np. ...
>
> ...załóżmy, że wklepuję zamówienie sam (cokolwiek wklepuję gdzieś), mam
> jakąś tabelkę z zamówieniami i nie pamiętam jaki dana osoba miała klucz
> podstawowy, to co w takim momencie? Muszę odnaleźć tą konkretną osobę i
> zapamiętać klucz? (może przykład z zamówieniami nie jest trafiony, bo
> prawdopodobnie zaloguje się ona w systemie i sama złoży zamówienie na
> "zalogowanym kluczu")
>
> ...dajmy taki przykład. Mam tabelkę książki. Mam w niej kolumnę - obcy
> klucz
> - wydawca_id. Wklepując nową książkę do tabeli nie pamiętam jaki klucz
> miało wydawnictwo i co wtedy?
>
> Dzięki za pomoc.

1. nie wklepiesz klucza wydawnictwa , które nie istnieje
2. jezeli zapragniesz zmienić nazwe wydawnictwa , to w tabeli ksiązek
bedzie odwołanie po id - nazwe bedziesz mógł zmieniać dowoli - i tak
bedzie to dotyczyć tego samego wydawnictwa.
3. jezeli wydawnictwa bedą (powinny) mieć PK po id - to zapytanie łączące
np pokazujące ksiązki i nazwy wydawnictw będzie działało szybko bo
połączysz ksiązki.wydawnictwa_id=wydawnictwa.wydawnictwa_id

--
Pozdrawiam
Morff
----------------------
AQQ 141151




Jester - 16-11-2005 11:17

  Lukasz Palka napisał(a):

>
>...dajmy taki przykład. Mam tabelkę książki. Mam w niej kolumnę - obcy klucz
>- wydawca_id. Wklepując nową książkę do tabeli nie pamiętam jaki klucz
>miało wydawnictwo i co wtedy?
>
>
Musiałbyś pamiętać tę wartość gdybyś chciał wprowadzać rekordy (w Twoim
wypadku książki) bezpośrednio fomułując zapytania insert... Najczęściej
jednak dane wprowadza się poprzez jakiś interfejs (czy to aplikacja
webowa czy standalone) i tam, w podanym przez Ciebie przykładzie,
wydawcę wybierałoby się najpewniej z jakiejś rozwijanej listy. Lista ta
zawierałaby pola, po kórych daną pozycję łatwo zidentyfikować
użytkownikowi (np. nazwa wydawnictwa), zaś już do inserta przekazywany
byłby identyfikator wybranej pozycji (wydawnictwa) - to realizuje
aplikacja, którą łączysz się z bazą, Ty nie musisz znać tej wartości.
Dla użytkownika wprowadzjącego (czy przeglądającego) dane najczęściej
wartości kluczy są bez znaczenia, służą do powiązywania rekordów na
poziomie bazy danych.

--
Pozdrawiam
Jester




Lukasz Palka - 16-11-2005 11:17

  Jester wrote:

> Musiałbyś pamiętać tę wartość gdybyś chciał wprowadzać rekordy (w Twoim
> wypadku książki) bezpośrednio fomułując zapytania insert... Najczęściej
> ...

O! Właśnie o coś takie wyjaśnienie mi chodziło, bo póki co wprowadzam sobie
rekordy insertem.

Dzięki _wszystkim_ za pomoc!
--
Pala
gg: 778724
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?= =?iso-8859-2?q?klucze_obce_(bana=B3=3F)?= db2 -klucze obce optymalizacja zapytan i inne [mysql] klucze obce a dodawanie rekordów mysql, klucze obce i auto_incremet [mysql] klucze obce [mysql] klucze złożone Postgres i klucze (reindeksacja) zacznij od 11 linii mysql - podstawy
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nocnerozmowy.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com