Relacje... za i przeciw
ZieleE - 27-04-2006 00:16
Witam
Stanalem przed problem stworzenia relacji lub nie.. z mojego malego doswiadczenia wiem ze raczej przysparzaly mi one wiecej problemow niz korzysci (szczegolnie przy modyfikacji struktury bazy) i chcialem sie zapytac bardziej doswiadczony uzytkownikow o Wasze zdanie dotychczas pracowalem z Firebirdem, ale teraz chodzi mi o MySqla. tworzyc relacje czy nie?
niby ma byc relacyjna baza.. ale.... - z tego co wiem relacje podobno spowalniaja przy wiekszej ilosci insertow, deletow itd... - gdzies czytalem ze tez spowalniaja selecta.. ale cos mi sie nie chce wierzyc + moga pilnowac "dziur" jesli programista dokonca o to nie zadba
sa jeszcze jakies plusy lub minusy?
pozdr zielee
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
news - 27-04-2006 00:16
ZieleE wrote: > Witam > > Stanalem przed problem stworzenia relacji lub nie.. z mojego malego > doswiadczenia wiem ze raczej przysparzaly mi one wiecej problemow niz korzysci > (szczegolnie przy modyfikacji struktury bazy) > i chcialem sie zapytac bardziej doswiadczony uzytkownikow o Wasze zdanie > dotychczas pracowalem z Firebirdem, ale teraz chodzi mi o MySqla. tworzyc > relacje czy nie? > > niby ma byc relacyjna baza.. ale.... > - z tego co wiem relacje podobno spowalniaja przy wiekszej ilosci insertow, > deletow itd... > - gdzies czytalem ze tez spowalniaja selecta.. ale cos mi sie nie chce wierzyc > + moga pilnowac "dziur" jesli programista dokonca o to nie zadba > > sa jeszcze jakies plusy lub minusy?
Przez relacje rozumiesz FK ?
W Oracle sa one zawsze niezbedne :D w MySQL tez bym ich uzyl.
dap
-- polanski.biz xoops.pl
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 27-04-2006 00:16
news wrote: >> tworzyc relacje czy nie? > Przez relacje rozumiesz FK ? Mam wrażenie, że chodzi o to czy normalizować bazę czy nie - czy tworzyć osobne tabele, czy wpychać dane jak leci do jednej tabeli. Jeśli tak, to główną zaletą normalizacji (czyli tworzenia relacji tam, gdzie należy) jest spójność danych oraz fakt, że nie wyleci się z roboty / nie zostanie wyśmianym przez kolegów. Trzeba mieć bardzo dobry powód, żeby w jakimś miejscu zdenormalizować schemat (robi się to ze względów wydajnościowych, ale dopiero po udowodnieniu, że złączenia są w tym konkretnym przypadku zbyt kosztowne, a nie z założenia - współczesne bazy rzadko mają problemy nawet przy dużej ilości danych).
Najlepiej podaj jakiś konkretny przykład - z relacją i bez, to powiemy jakie będziesz miał problemy. :->
-- Michał Kuratczyk
ZieleE - 29-04-2006 00:14
> news wrote: > >> tworzyc relacje czy nie? > > Przez relacje rozumiesz FK ? > Mam wrażenie, że chodzi o to czy normalizować bazę czy nie - czy tworzyć > osobne tabele, czy wpychać dane jak leci do jednej tabeli.
nie, nie.. to jest oczywiste ze osobne tabele :)
> Najlepiej podaj jakiś konkretny przykład - z relacją i bez, to powiemy jakie > będziesz miał problemy. :->
chodzi mi o fizycznie zalozenie FK taki banalny przyklad tabela OSOBA z polem id_adres i tabela ADRES z polem id
co mi da ze zaloze klucz obcy osoba.id_adres - adres.id
pozdr zielee
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 29-04-2006 00:14
ZieleE wrote: > chodzi mi o fizycznie zalozenie FK > taki banalny przyklad > tabela OSOBA z polem id_adres > i tabela ADRES z polem id > > co mi da ze zaloze klucz obcy osoba.id_adres - adres.id 1. Spójność danych - jak będzie FK, to nie uda się przypisać osobie adresu, którego nie ma.
2. Od razu widać znaczenie pola. Sama nazwa nie zawsze mówi do jakiej tabeli/kolumny się odwołujesz. Jak ktoś inny na to spojrzy, to z FK wyczyta o co chodzi, a bez FK będzie musiał szukać/zgadywać.
3. Na kluczach obcych generalnie należy zakładać indeksy - jeśli są zdefiniowane, to można w łatwy sposób wyszukać tych niezaindeksowanych. Jeśli nie są, to w prosty sposób ich nie znajdziesz (bo ich de facto nie ma - są tylko w Twojej głowie).
4. Jak zrobisz "reverse-engineering" (załadujesz istniejący schemat do jakiegoś narzędzie do modelowania), to on Ci te wszystkie relacje wczyta. Jeśli ich nie ma w bazie, to wczyta tylko niepowiązane ze sobą tabele. A takie operacje się wykonuje, np. żeby zrobić dokumentację.
A jakie widzisz wady?
-- Michał Kuratczyk
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL] Jaki typ pola aby =?ISO-8859-2?Q?trzyma=E6_liczby_od?==?ISO-8859-2?Q?dzielone_przecinkiem_=3F?=
=?iso-8859-2?q?Relacje_uwzgl=EAdniaj=B1ce_czas_(jak=3F)?=
=?iso-8859-2?q?Zachowanie_integralno=B6ci_relacji_=22wiele_do _wiele=22?=
=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?=
Lista =?ISO-8859-2?Q?uporz=B1dkowana?= w relacji
2 tabele w relacji 1 do wielu - tylko jeden wiersz
Czy stosuje sie relacje bez wymuszania wiezow integralnosci?
[TEORIA BD] Wyznaczanie kluczy relacji .
[MySql] pytanie o relacje, JOIN
[MS sql2005] relacje - problem
zanotowane.pldoc.pisz.plpdf.pisz.plmelooonka.opx.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 |
|