ďťż
 
MySQL 4.1 Foreign key z wartością null ďťż
 
MySQL 4.1 Foreign key z wartością null
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

MySQL 4.1 Foreign key z wartością null



Jarosław Ziółkowski - 12-11-2006 00:36
MySQL 4.1 Foreign key z wartością null
  Witam, mam taką zagwozdkę

posiadam trzy tabele

Kategorie która ma swoje ID i nazwe id jest zdefiniowane jako primary
key i jest automatycznie inkrementowane

Następna tabela to podkategorie ma ona swoje id które jest
autormatycznie inkrementowane, jest również kluczem głównym tableli.
Jest tez oczywiście nazwa no i Identyfikator kategorii który jest
kluczem obcym. Musi być zgony z kolumną id tablei kategorie.

Do tej pory wszystko idzie świetnie bo jeśli kategoria nie ma
podkategorii to nie muszę niczego dodawać do drugiej tabeli.

Jest jednak jeszcze jedna tabela Artykuły:

No i poza polami takimi jak data, tresc czy tytuł ma
Identyfikator artykułu jako klucz główny, Identyfikator kategorii klucz
obcy w kategorii orazidentyfikator Podkategorii klucz obcy w tabeli
Podkategorie

No i to właśnie mój problem. Identyfikator Kategorii nigdy nie będzie
pusty bo artykuł musi należeć do kategorii, ale jeśli kategoria nie ma
podkategoii chciałbym aby to pole miało wartość null. Niestety kiedy
jest kluczem obcym nie może mieć takiej wartości bo MySQL zaraz zgłasza
błąd przy próbie dodania innej wartości niż jakaś istniejąca w
Podkategoriach(wiem że prawidłowo robi), ale nie mam pomysłu jak to
obejść poza tym żeby nie powiązać tych tabel, ale to mi się nie podoba.

pozdrawiam.





Radosław Witkowicki - 12-11-2006 00:36

  Jarosław Ziółkowski napisał(a):
> Witam, mam taką zagwozdkę
>
> posiadam trzy tabele
>
> Kategorie która ma swoje ID i nazwe id jest zdefiniowane jako primary
> key i jest automatycznie inkrementowane
>
> Następna tabela to podkategorie ma ona swoje id które jest
> autormatycznie inkrementowane, jest również kluczem głównym tableli.
> Jest tez oczywiście nazwa no i Identyfikator kategorii który jest
> kluczem obcym. Musi być zgony z kolumną id tablei kategorie.
>
> Do tej pory wszystko idzie świetnie bo jeśli kategoria nie ma
> podkategorii to nie muszę niczego dodawać do drugiej tabeli.
>
> Jest jednak jeszcze jedna tabela Artykuły:
>
> No i poza polami takimi jak data, tresc czy tytuł ma
> Identyfikator artykułu jako klucz główny, Identyfikator kategorii klucz
> obcy w kategorii orazidentyfikator Podkategorii klucz obcy w tabeli
> Podkategorie
>
> No i to właśnie mój problem. Identyfikator Kategorii nigdy nie będzie
> pusty bo artykuł musi należeć do kategorii, ale jeśli kategoria nie ma
> podkategoii chciałbym aby to pole miało wartość null. Niestety kiedy
> jest kluczem obcym nie może mieć takiej wartości bo MySQL zaraz zgłasza
> błąd przy próbie dodania innej wartości niż jakaś istniejąca w
> Podkategoriach(wiem że prawidłowo robi), ale nie mam pomysłu jak to
> obejść poza tym żeby nie powiązać tych tabel, ale to mi się nie podoba.
>
> pozdrawiam.

Po pierwsze lepiej nigdy nie opisuj tabel, tylko wklej strukturę, tutaj
nikomu nie chcę się czytać wywodów.
Po drugie Forigen Key ma być null !?!?!?!?!?!?!?!?!?!? Człowieku, no
comment.




Jarosław Ziółkowski - 12-11-2006 00:37

 
> Po pierwsze lepiej nigdy nie opisuj tabel, tylko wklej strukturę, tutaj
> nikomu nie chcę się czytać wywodów.
> Po drugie Forigen Key ma być null !?!?!?!?!?!?!?!?!?!? Człowieku, no
> comment.

No właśnie z tego powodu że nie może nie wiem jak to rozwiązać.
A struktura tabel to:

Kategorie:
IdentyfikatorKategorii int not null auto_increment primary key
NazwaKategorii varchar(32) not null unique

Podkategorie:

IdentyfikatorPodkategorii int not null auto_increment primary key
IdentyfikatorKategorii int null foreign key references
Kategorie(IdentyfikatorKategorii)
NazwaPodkategorii varchar(32) not null unique(IdentyfikatorKategorii,
NazwaKategorii)

Artykuły:

IdentyfikatorArtykułu int not null auto_increment primary key
IdentyfikatorKategorii int null foreign key references
Kategorie(IdentyfikatorKategorii)

PROBLEM!!! IdentyfikatorPodkategorii int null foreign key references
podkategorie(IdentyfikatorPodkategorii)

dalej jest juz tresc, data dodania i nie ma z tym problemu.

No i nie wiem jak rozwiązać problem z tym że foreign nie może być null.
Jak powiązać te tabele żeby Identyfikator podkatoegorii a artykułach
mógł być pusty. Tzn opcja kiedy kategoria już na nic się nie dzieli.




Wojtek pBT - 12-11-2006 00:37

  Dnia 21-09-2006 o 20:17:15 Jarosław Ziółkowski <ziolkowski_jaroslaw@o2.pl>
napisał(a):

>
>> Po pierwsze lepiej nigdy nie opisuj tabel, tylko wklej strukturę, tutaj
>> nikomu nie chcę się czytać wywodów.
>> Po drugie Forigen Key ma być null !?!?!?!?!?!?!?!?!?!? Człowieku, no
>> comment.

> Artykuły:
>
....
>
> PROBLEM!!! IdentyfikatorPodkategorii int null foreign key references
> podkategorie(IdentyfikatorPodkategorii)

Nie wiem, może się nie znam, ale dla mnie ta definicja nie wygląda na
poprawną...
Może to będzie lapsze...
IdentyfikatorPodkategorii int foreign key references
podkategorie(IdentyfikatorPodkategorii)

>
> dalej jest juz tresc, data dodania i nie ma z tym problemu.
>
> No i nie wiem jak rozwiązać problem z tym że foreign nie może być null.

A czemu nie może być NULL?? FOREIGN może być albo wartością istniejącą w
tabeli do kórej się odnosi, albo NULLem

http://forum.mysql.com/doc/refman/4....nstraints.html

pBT

--
Używam klienta poczty Opera Mail: http://www.opera.com/mail/





Jarosław Ziółkowski - 12-11-2006 00:37

  Wojtek pBT napisał(a):
> Dnia 21-09-2006 o 20:17:15 Jarosław Ziółkowski
> <ziolkowski_jaroslaw@o2.pl> napisał(a):
>
>>
>>> Po pierwsze lepiej nigdy nie opisuj tabel, tylko wklej strukturę,
>>> tutaj nikomu nie chcę się czytać wywodów.
>>> Po drugie Forigen Key ma być null !?!?!?!?!?!?!?!?!?!? Człowieku, no
>>> comment.
>
>
>> Artykuły:
>>
> ...
>
>>
>> PROBLEM!!! IdentyfikatorPodkategorii int null foreign key references
>> podkategorie(IdentyfikatorPodkategorii)
>
>
>
> Nie wiem, może się nie znam, ale dla mnie ta definicja nie wygląda na
> poprawną...
> Może to będzie lapsze...
> IdentyfikatorPodkategorii int foreign key references
> podkategorie(IdentyfikatorPodkategorii)
>
>
>
>>
>> dalej jest juz tresc, data dodania i nie ma z tym problemu.
>>
>> No i nie wiem jak rozwiązać problem z tym że foreign nie może być null.
>
>
> A czemu nie może być NULL?? FOREIGN może być albo wartością istniejącą
> w tabeli do kórej się odnosi, albo NULLem
>
> http://forum.mysql.com/doc/refman/4....nstraints.html
>
>
> pBT
>
>
Ta definicja miała pokazać do czego odnosi się ten klucz a nie była
odwzorowanie kodu który ją tworzył.

No problem polega na tym że jeśli jest null to mysql wywala błąd z
wielkim hukiem.




Paweł Matejski - 12-11-2006 00:37

  Jarosław Ziółkowski wrote:
>
> No problem polega na tym że jeśli jest null to mysql wywala błąd z
> wielkim hukiem.

To może zatyczki do uszu pomogą, albo materac pod mysql'a?

P.S. Tu nie pl.rec.poezja - komunikat błędu podaj!
P.S.2. IMHO masz złą strukturę. Zaimplementuj to jako drzewo kategorii. (w FAQ
jest jak).
--
P.M.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • latwa-kasiora.pev.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