=?iso-8859-2?B?VGFiZWxhILOxY3qxY2EgaSBJRC4=?=
Peri - 15-01-2006 19:17
=?iso-8859-2?B?VGFiZWxhILOxY3qxY2EgaSBJRC4=?= Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel laczonych to jakakolwiek teoria mowi, ze powinnismy do takiej tabeli dodac jeszcze trzecia kolumne, ktora bylaby identyfikatorem danego wiersza w niej? (np autoincrement). Bo z kumplem o tym ostro dyskutowalismy i sie zastanawiam kto ma rację.
-- Peri
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 16-01-2006 23:25
Peri wrote: > > Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel laczonych > to jakakolwiek teoria mowi, ze powinnismy do takiej tabeli dodac > jeszcze trzecia kolumne, ktora bylaby identyfikatorem danego wiersza w > niej? (np autoincrement). Bo z kumplem o tym ostro dyskutowalismy i sie > zastanawiam kto ma rację.
Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do każdej tabeli kolumny id o automatycznie nadawanej wartości jest dobrym zwyczajem!
-- P.M.
Peri - 16-01-2006 23:25
On Fri, 13 Jan 2006 15:07:25 +0100, Paweł Matejski <madej@spam.madej.pl.eu.org> wrote:
> Peri wrote: >> Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel laczonych >> to jakakolwiek teoria mowi, ze powinnismy do takiej tabeli dodac >> jeszcze trzecia kolumne, ktora bylaby identyfikatorem danego wiersza w >> niej? (np autoincrement). Bo z kumplem o tym ostro dyskutowalismy i >> sie zastanawiam kto ma rację. > > Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do każdej > tabeli kolumny id o automatycznie nadawanej wartości jest dobrym > zwyczajem! >
Ale dlaczego?
-- Peri
Azja - 16-01-2006 23:25
Peri wrote on 2006-01-13 15:10:
>> Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do >> każdej tabeli kolumny id o automatycznie nadawanej wartości jest >> dobrym zwyczajem! > Ale dlaczego?
Na wszelki wypadek. I porzundek musi być :) Nigdy nie wiesz, czy to się nie przyda. No i identyfikacja rekordu jest wówczas jednoznaczna, unikasz sytuacji z pojechaniem "ups, chyba za dużo skasowałem, tu były jeszcze inne rekordy spełniające warunek na dwóch obcych kluczach".
-- Azja
50% procent badanych nie zdaje sobie sprawy, że stanowi połowę społeczeństwa
Artur Muszynski - 16-01-2006 23:25
"Azja" <spamerom.mowimy.stanowcze.nie.michal.kulach@wp.pl > wrote in message news:dq8g7u$28sc$1@news2.ipartners.pl... > Peri wrote on 2006-01-13 15:10: > >>> Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do każdej >>> tabeli kolumny id o automatycznie nadawanej wartości jest dobrym >>> zwyczajem! >> Ale dlaczego? > > Na wszelki wypadek. I porzundek musi być :) Nigdy nie wiesz, czy to się > nie przyda. No i identyfikacja rekordu jest wówczas jednoznaczna, unikasz > sytuacji z pojechaniem "ups, chyba za dużo skasowałem, tu były jeszcze > inne rekordy spełniające warunek na dwóch obcych kluczach".
Dla mnie dodawnie kolumny, która nie ma żadnej interpretacji i do niczego nie służy nie wprowadza porządku, tylko bałagan, w dodatku marnujesz pamięć, tworzysz zbędny indeks klustrowany dla id, który spowalnia. Dla mnie to jest idiotyczny nawyk rodem z Accessa, który pchał wszędzie te swoje autonumbery, przez co dla niektórych klucz podstawowy wielokolumnowy to czarna magia.
artur
> > -- > Azja > > 50% procent badanych nie zdaje sobie sprawy, > że stanowi połowę społeczeństwa
Grzesiek G. - 17-01-2006 10:52
Artur Muszynski napisał(a): > "Azja" <spamerom.mowimy.stanowcze.nie.michal.kulach@wp.pl > wrote in message > news:dq8g7u$28sc$1@news2.ipartners.pl... > >> Peri wrote on 2006-01-13 15:10: >> >> >>>>Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do każdej >>>>tabeli kolumny id o automatycznie nadawanej wartości jest dobrym >>>>zwyczajem! >>> >>>Ale dlaczego? >> >> Na wszelki wypadek. I porzundek musi być :) Nigdy nie wiesz, czy to się >>nie przyda. No i identyfikacja rekordu jest wówczas jednoznaczna, unikasz >>sytuacji z pojechaniem "ups, chyba za dużo skasowałem, tu były jeszcze >>inne rekordy spełniające warunek na dwóch obcych kluczach". > > > Dla mnie dodawnie kolumny, która nie ma żadnej interpretacji i do niczego > nie służy nie wprowadza porządku, tylko bałagan, w dodatku marnujesz pamięć, > tworzysz zbędny indeks klustrowany dla id, który spowalnia. Dla mnie to jest > idiotyczny nawyk rodem z Accessa, który pchał wszędzie te swoje autonumbery, > przez co dla niektórych klucz podstawowy wielokolumnowy to czarna magia.
Jeżeli do tej tabeli (z kluczem dwukolumnowym) będą referencje, to może to mieć jeszcze jakiś sens typu oszczędność miejsca w tabelach podrzędnych, zwiększenie szybkości przeszukiwania indeksu przy łączeniu z tabelą podrzędną. Ale twierdzenie, że zawsze należy tworzyć jednokolumnowy klucz typu int autoincrement jest również dla mnie bzdurą. Szczególnie wtedy, gdy tabela służyć tylko i wyłącznie do realizacji relacji wiele do wielu.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
Lucyna Witkowska - 17-01-2006 10:52
Peri <email@server.net> napisał: > Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel laczonych to > jakakolwiek teoria mowi, ze powinnismy do takiej tabeli dodac jeszcze > trzecia kolumne, ktora bylaby identyfikatorem danego wiersza w niej? (np > autoincrement). Bo z kumplem o tym ostro dyskutowalismy i sie zastanawiam > kto ma rację.
Moze pogodzi was Designer ;-) Kluczem glownym takiej tabeli jest u niego klucz zlozony z kluczy obcych.
Pozdrowienia, LW
Artur S. - 19-01-2006 09:32
Peri napisał(a): > On Fri, 13 Jan 2006 15:07:25 +0100, Paweł Matejski > <madej@spam.madej.pl.eu.org> wrote: > >> Peri wrote: >> >>> Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel >>> laczonych to jakakolwiek teoria mowi, ze powinnismy do takiej >>> tabeli dodac jeszcze trzecia kolumne, ktora bylaby identyfikatorem >>> danego wiersza w niej? (np autoincrement). Bo z kumplem o tym ostro >>> dyskutowalismy i sie zastanawiam kto ma rację. >> >> >> Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do >> każdej tabeli kolumny id o automatycznie nadawanej wartości jest >> dobrym zwyczajem! >> > > Ale dlaczego? > Przyjąłem, że tak robię, bo każda tabela (albo prawie każda), ma u mnie w programie odpowiadającą jej klasę w której są metody add/update/delete itp. Ale te metody są dziedziczone i łatwiej jest jak w każdej tabeli jest pole o tej samej nazwie, będące kluczem. Ale to nie udowadnia, że trzeba tak robić zawsze.
Pozdrawiam Artur S.
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 19-01-2006 09:33
Artur S. wrote: > Peri napisał(a): > >> On Fri, 13 Jan 2006 15:07:25 +0100, Paweł Matejski >> <madej@spam.madej.pl.eu.org> wrote: >> >>> Peri wrote: >>> >>>> Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel >>>> laczonych to jakakolwiek teoria mowi, ze powinnismy do takiej >>>> tabeli dodac jeszcze trzecia kolumne, ktora bylaby identyfikatorem >>>> danego wiersza w niej? (np autoincrement). Bo z kumplem o tym >>>> ostro dyskutowalismy i sie zastanawiam kto ma rację. >>> >>> >>> >>> Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do >>> każdej tabeli kolumny id o automatycznie nadawanej wartości jest >>> dobrym zwyczajem! >>> >> >> Ale dlaczego? >> > Przyjąłem, że tak robię, bo każda tabela (albo prawie każda), ma u mnie > w programie odpowiadającą jej klasę w której są metody add/update/delete > itp. Ale te metody są dziedziczone i łatwiej jest jak w każdej tabeli > jest pole o tej samej nazwie, będące kluczem. > Ale to nie udowadnia, że trzeba tak robić zawsze.
Ale mówicie o bazie, której rozwój się skończył. Oddajecie projekt klientowi i zapominacie. I ok. wtedy są tabele, gdzie id nie jest potrzebne. Ale to jest ideał, który żadko się zdarza. Nigdy nie wiadomo, kiedy projekt będzie kontynuowany, a kiedy nie (przynajmniej w moich są takie statystyki). To tak jak w telewizorze - telewizor jest do tego, żeby oglądać w nim filmy, programy. W związku z tym coś takiego jak uchwyt do noszenie jest zupełnie niepotrzebne. A jednak, trzeba ten telewizor przynieść. A potem nie wiadomo kiedy zachce nam się przemeblować, albo przeprowadzić i wtedy podziwiamy genialność projektanta, który te ucwyty uwzględnił w projekcie telewizora. I ja tak traktuje id w każdej tabeli. A drugi argument, to jest oszczędność czasu - po prostu zaczynając każdą nową tabele zaczynam ją od stworzenia kolumny 'id serial' i nie trace czasu na zastanawianie się, czy ta kolumna jest mi potrzebna czy nie. Do tego jakby się okazała niepotrzebna, to łatwo jest ją skasować.
-- P.M.
Grzesiek G. - 19-01-2006 09:33
Paweł Matejski napisał(a): > Artur S. wrote: > >> Peri napisał(a): >> >>> On Fri, 13 Jan 2006 15:07:25 +0100, Paweł Matejski >>> <madej@spam.madej.pl.eu.org> wrote: >>> >>>> Peri wrote: >>>> >>>>> Czy jezeli tabela laczaca ma dwie kolumny z kluczami z tabel >>>>> laczonych to jakakolwiek teoria mowi, ze powinnismy do takiej >>>>> tabeli dodac jeszcze trzecia kolumne, ktora bylaby >>>>> identyfikatorem danego wiersza w niej? (np autoincrement). Bo z >>>>> kumplem o tym ostro dyskutowalismy i sie zastanawiam kto ma rację. >>>> >>>> >>>> >>>> >>>> Teoria chyba żadna, ale z mojej praktyki wynika, że dodawanie do >>>> każdej tabeli kolumny id o automatycznie nadawanej wartości jest >>>> dobrym zwyczajem! >>>> >>> >>> Ale dlaczego? >>> >> Przyjąłem, że tak robię, bo każda tabela (albo prawie każda), ma u >> mnie w programie odpowiadającą jej klasę w której są metody >> add/update/delete itp. Ale te metody są dziedziczone i łatwiej jest >> jak w każdej tabeli jest pole o tej samej nazwie, będące kluczem. >> Ale to nie udowadnia, że trzeba tak robić zawsze. >
Przedstawiłeś tu pewien argument, który mówi, że trzeba dodać id z powodu niedoskonałości programu klienckiego.
Przyjrzyj się OR-mapperom na rynku (polecam Hibernate-NHibernate). Tam takie założenie (że każda tabela ma jednokolumnowy klucz) jest zbędne. A tabela łącząca (realizująca relację wiele do wielu) ma typowo 2 pola, bo więcej nie jest potrzebnych.
> > Ale mówicie o bazie, której rozwój się skończył. Oddajecie projekt > klientowi i zapominacie. I ok. wtedy są tabele, gdzie id nie jest > potrzebne. Ale to jest ideał, który żadko się zdarza. Nigdy nie wiadomo, > kiedy projekt będzie kontynuowany, a kiedy nie (przynajmniej w moich są > takie statystyki).
W którym miejscu tak mówimy? My pytamy się o argumenty.
> To tak jak w telewizorze - telewizor jest do tego, żeby oglądać w nim > filmy, programy. W związku z tym coś takiego jak uchwyt do noszenie jest > zupełnie niepotrzebne. A jednak, trzeba ten telewizor przynieść. A potem > nie wiadomo kiedy zachce nam się przemeblować, albo przeprowadzić i > wtedy podziwiamy genialność projektanta, który te ucwyty uwzględnił w > projekcie telewizora. > I ja tak traktuje id w każdej tabeli.
O to jest jakiś argument - dodajemy zawsze jednokolumnowy id bo może się przyda. Ja natomiast dla tabel łączących nie dodaję, bo wiem, że na pewno się nie przyda (nie rób z noszenia telewizora większego problemu, niż jest praktycznie :-)).
> A drugi argument, to jest oszczędność czasu - po prostu zaczynając każdą > nową tabele zaczynam ją od stworzenia kolumny 'id serial' i nie trace > czasu na zastanawianie się, czy ta kolumna jest mi potrzebna czy nie. Do > tego jakby się okazała niepotrzebna, to łatwo jest ją skasować. >
A ja dla tabel łączących nie daję jednokolumnowego id i też nie tracę czasu na myślenie czy id serial jest mi potrzebne.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
=?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.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 |
|