ďťż
 
Osobne tabele czy kolumny z nullami? ďťż
 
Osobne tabele czy kolumny z nullami?
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

Osobne tabele czy kolumny z nullami?



Piotr 'piter' Hlawski - 24-01-2007 00:01
Osobne tabele czy kolumny z nullami?
  Temat dość ogólny, nie związany z bazą.
Mam tabelę i w niej atrybut A przyjmujący trzy wartości, które rzutują na
pewne inne dane - tzn. jeśli atrybut A przyjmie wartość "x" to atrybut B
może przyjmować wartości typu dni tygodnia (pon, wt, śr itd), jeśli A
przyjmie wartość "y" to B będzie przyjmował wartości integer w zakresie
1-31, a jeśli A przyjmie wartość "z" to B ma być null. I teraz, czy lepiej
zrobić to płasko i A i B trzymać w jednej tabeli, przy czym B rozbić na
dwie kolumny (odpowiednio typów: varchar, integer) i wypełniać odpowiednią
z nich w zależności od wartości jaka się pojawi w A (nie wypełniać w ogóle
gdy A będzie "z") czy może zrobić osobne tablice na te dane?

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Chuck Norris złapał wszystkie 386 pokemonów w czasie poniżej 2.7 sekundy.
Mówi, że za nic nie sprzeda żadnego z nich.





Grzesiek G. - 24-01-2007 00:01

  Piotr 'piter' Hlawski napisał(a):
> Temat dość ogólny, nie związany z bazą.
> Mam tabelę i w niej atrybut A przyjmujący trzy wartości, które rzutują na
> pewne inne dane - tzn. jeśli atrybut A przyjmie wartość "x" to atrybut B
> może przyjmować wartości typu dni tygodnia (pon, wt, śr itd), jeśli A
> przyjmie wartość "y" to B będzie przyjmował wartości integer w zakresie
> 1-31, a jeśli A przyjmie wartość "z" to B ma być null. I teraz, czy lepiej
> zrobić to płasko i A i B trzymać w jednej tabeli, przy czym B rozbić na
> dwie kolumny (odpowiednio typów: varchar, integer) i wypełniać odpowiednią
> z nich w zależności od wartości jaka się pojawi w A (nie wypełniać w ogóle
> gdy A będzie "z") czy może zrobić osobne tablice na te dane?
>

Jak zapewne wiesz (bo się pytasz :-), każde z rozwiązań ma zalety lub
wady. Zrobienie osobnych tablic będzie bardziej uniwersalne i otwarte na
rozbudowę typu jeśli A przyjmie q to b powinno być listą liczb. Ale
nastawiając się za bardzo na rozbudowę, która nigdy nie nastąpi
powiększa się niepotrzebnie koszty.

Na pewno nie mnożyłbym kolumny B dla każdego możliwego typu. Raczej
poszedłbym w kierunku, że B jest zawsze znakowa, a A określa typ.
Walidację B można przeprowadzić na kliencie lub trigerem, a ewentualne
udostępnianie B jako daty liczby itp. przez kolumnę wyliczaną.

Pozdrawiam

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




Piotr 'piter' Hlawski - 24-01-2007 00:01

  Grzesiek G. wrote:

> Piotr 'piter' Hlawski napisał(a):
>> Temat dość ogólny, nie związany z bazą.
>> Mam tabelę i w niej atrybut A przyjmujący trzy wartości, które rzutują na
>> pewne inne dane - tzn. jeśli atrybut A przyjmie wartość "x" to atrybut B
>> może przyjmować wartości typu dni tygodnia (pon, wt, śr itd), jeśli A
>> przyjmie wartość "y" to B będzie przyjmował wartości integer w zakresie
>> 1-31, a jeśli A przyjmie wartość "z" to B ma być null. I teraz, czy
>> lepiej zrobić to płasko i A i B trzymać w jednej tabeli, przy czym B
>> rozbić na dwie kolumny (odpowiednio typów: varchar, integer) i wypełniać
>> odpowiednią z nich w zależności od wartości jaka się pojawi w A (nie
>> wypełniać w ogóle gdy A będzie "z") czy może zrobić osobne tablice na te
>> dane?
>>
>
> Jak zapewne wiesz (bo się pytasz :-), każde z rozwiązań ma zalety lub
> wady. Zrobienie osobnych tablic będzie bardziej uniwersalne i otwarte na
> rozbudowę typu jeśli A przyjmie q to b powinno być listą liczb. Ale
> nastawiając się za bardzo na rozbudowę, która nigdy nie nastąpi
> powiększa się niepotrzebnie koszty.
>
> Na pewno nie mnożyłbym kolumny B dla każdego możliwego typu. Raczej
> poszedłbym w kierunku, że B jest zawsze znakowa, a A określa typ.
> Walidację B można przeprowadzić na kliencie lub trigerem, a ewentualne
> udostępnianie B jako daty liczby itp. przez kolumnę wyliczaną.
>

Dzięki, tak właśnie zrobię. Nie będzie silnej rozbudowy, także to co
proponujesz jednak wystarczy.

--
..:: Piter // phlawski$gmail,com // gg: 4534287 ::.
Chuck Norris nie ma przyrodzenia jak koń. konie mają przyrodzenie jak Chuck
Norris
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?= [mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?= ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?= [ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?= =?ISO-8859-2?Q?=5BORACLE=2C_ORDER_BY=5D_Czy_indeksowane_?==?I SO-8859-2?Q?kolumny_przy=B6piesz=B1_sortowanie=3F?= pytanie o zapytanie z having count = count z innej kolumny [MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną =?iso-8859-2?q?Pytanie_SQL__spe=B3niaj=B1ce_wiecej_jak_jeden_ warunek_na_jednej_kolumnie=2E?= =?iso-8859-2?Q?=5BMSSQL2005=5D_Zawarto=B6c_kolumny_varbinary= 28max=29_?= SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • autwywalczyl.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com