Pytanie teoretyczne
`ronin - 25-10-2007 00:01
Pytanie teoretyczne
Witam,
Przyszło mi zaprojektować bazę danych a że nie mam w tej materii większego doświadczenia pojawiają się dość często dziwne pytania w mojej głowie. Jedno z nich dotyczy sytuacji, w której mam tabelę i pewną liczbę kolumn, z których część jest ze sobą dość ściśle powiązana tematycznie (jak np. informacje o konkretnym samochodzie). Zastanawiam się czy jest sens rozbić te "grupy tematyczne" na osobnej tabeli i wykonywać powiązanie jeden do jednego.
Czyli zamiast:
id | data_zakupu | cena_zakupu | marka_samochodu | rocznik_samochodu | nr_rejestracji_samochodu |...
zrobić osobną tabelę dla "samochod" a w poprzedniej tabeli dać pole "id_samochodu"
Z uwagi na charakter relacji (jeden do jednego) obie tabele powinny mieć identyczną liczbę wierszy, zatem czy to ma sens takie rozbijanie (szczególnie od strony wydajnościowej)?
Możliwe, że moje pytanie jest mało rzeczowe i bez sensu, ale to z powodu braku wiedzy i doświadczenia z zakresu baz danych ;-). Proszę zatem o wyrozumiałość.
Za wszelką poradę z góry dziękuję! -- Marcin
=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 25-10-2007 00:02
`ronin napisał(a):
> id | data_zakupu | cena_zakupu | marka_samochodu | rocznik_samochodu | > nr_rejestracji_samochodu |... > > zrobić osobną tabelę dla "samochod" a w poprzedniej tabeli dać pole > "id_samochodu" >
Napewno numer_rejestracji musi być w odzielnej tabeli, ja mam ten sam samochód, a rejestracja jest inna, bo mi ukradli tablice. Czyli już w tym przypadku jest związek 1 do wielu , podobnie może być z kolorem, numerem silnika itp. A historia co się zmieniało może być czasami potrzebna. Jako markę samochodu najlepiej dać klucz obcy powiązany z tabelą zawierającą marki samochodów, żeby nie okazało się, że ta sama marka występuje pod kilkoma nazwami :) Czasem tak bywa z miastami 'Warszawa', 'Wawa', 'Warszwa', 'Wa-wa' tylko kilka przykładów. Dla człowieka może to oznaczać to samo, dla bazy to są różne teksty.
--
Cezary Grądys <czarek.gradys@cartalia.com>
Andrzej Dąbrowski - 25-10-2007 00:02
Użytkownik "`ronin" <ronin@wp.pl> napisał w wiadomości news:ffndul$e6d$1@opal.futuro.pl... > > Przyszło mi zaprojektować bazę danych a że nie mam w tej materii większego > doświadczenia pojawiają się dość często dziwne pytania w mojej głowie. > Jedno z nich dotyczy sytuacji, w której mam tabelę i pewną liczbę kolumn, > z których część jest ze sobą dość ściśle powiązana tematycznie (jak np. > informacje o konkretnym samochodzie). Zastanawiam się czy jest sens rozbić > te "grupy tematyczne" na osobnej tabeli i wykonywać powiązanie jeden do > jednego. > Pewien profesor na wykladach mawiał, że robienie powiązań jeden do jednego jest z założenia złe i jeśli ktoś ma takąpotrzebę to niech to premyśli 3 razy zanim zrobi. Jednak jeśli przemyślał sprawę, proadziłsie dwóch innych kolegów i nadal widzi potrzebę użycia powiązania jeden do jednego to niech je zrobi, bo właśnei awansował do grona zaawansowanych. Bez całej bazy trudno orzec, czy warto robić jeden do jednego, czy nie warto. W Twojej sytuacji za takim rozwiazaniem przemawiałoby gdyby twoja tabela "samochód" była wykorzystywana w kilku meijscach, a tylko w jednym byłoby powiazanie jeden do jednego. Przykladem może być numer rejestracyjny samochodu, poniewaz z zasady jest jeden dla każdego samochodu, choć z drugiej strony samochód nei musi mieć numeru rejestracyjnego. Jesli za samochód przyjmniemy konkretny fizyczny egzemplarz, to dane o rejestracji mogą nas jeden do jednego odzylac do samochodu. Z inne strony jeśli o tym samochodzie bedzie my przechowywali informacje o włascicielach (mzoe byc naraz kilku), a oprocz tego o parkowaniu i ubezpieczeniach to ma sporo sensu wydzielenie danych pojazdu do osobnej tabeli. Jednak jesli to tylko jedna tabela to nie ma sensu dzielic. Jeśli danych jest relatywnie mało to wydajnościowo nie bedzie problemu, jesli duzo to takie rozwiazanie bedzie wolniejsze. Trzeba wiedziec calosc by doradzic Sir Daban - Andrzej Dąbrowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[OT?] Monitory dla =?ISO-8859-2?Q?grafik=F3w_-_pytanie_o_?==?ISO-8859-2?Q?przej=B6ci=F3wki?=
=?ISO-8859-2?Q?kr=F3tkie_pytanie_-_gdzie_forum_grafik=F3?==?ISO-8859-2?Q?w_=28Corel_Painter=29_=3F?=
Pytanie -Papier Nalepka - =?ISO-8859-2?Q?p=B3ytka_w_kszta=B3?==?ISO-8859-2?Q?cie_wizyt=F3wki?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Pytanie o =?ISO-8859-2?Q?kas=EA=2E=2E=2E?=
pytanie o zapytanie z having count = count z innej kolumny
=?iso-8859-2?q?Kr=F3tkie_pytanie_-_PostgreSQL_8=2E2=2E2_i_CREATE_ASSERTION?=
=?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?=
CA nr 1/2007 - pytanie do tych co =?ISO-8859-2?Q?maj=B1?= ten numer
Re: MS SQL 2000 - Wadliwy optymalizator? (dlugie pytanie...)
zanotowane.pldoc.pisz.plpdf.pisz.plkfia-tek.keep.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 |
|