Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> tworzenie tabeli - pomożcie prosze, problem z tworzenie tabeli polączonych
grzechoo
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 5.01.2005

Ostrzeżenie: (0%)
-----


witam wszystkich, dopierozaczynam przygode z mysql
chce utworzyc tabele hasla polaczona z inna tabela klienci, ale wyskakuje mi blad
ERROR 1005:Can't create table.......<errno:m 150>
czy ktos wie co mam zle?? pomozcie prosze

create table hasla (login varchar(15) NOT NULL primary key,
haslo text NOT NULL,
CONSTRAINT warunek1 FOREIGN KEY (login) REFERENCES klienci(login) ) TYPE=InnoDB;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


kurcze.. musze jeszcze raz napisac odpowiedz gdyz cos sie podzialo z serwerem i nie udalo mi sie wyslac opowiedzi....

raz jeszcze...

przede wszystkim widze, ze usunales (przynajmniej z tabeli hasla) typ definiowanej tabeli -> jezeli uzywasz mysql w wersji 4.0.xx lub starszej oznacza to ze definiujesz tabele typu MyISAM ktora to nie obsluguje mozliwosci zakladania kluczy obcych (chociaz sama tabela zostanie zdefiniowana prawidlowo)

w zwiazku z tym w projekcie bazy danych bez sensu jest definiowanie kluczy obcych, w chwili obecnej masz 2 wyjscia:
- albo zapominasz o definiowaniu kluczy obcych i usuwasz z projektu definicje kluczy ----> korzystasz wowczas z typu MyISAM
- albo przykladasz sie porzadnie do projektu bazy danych, korzystasz z InnoDB i tworzysz relacje pomiedzy tabelami...

jezeli jednak chcesz zrobic to drugie to musisz spelnic kilka warunkow:
- tabele zdefiniowane musza byc po kolei (jezeli beda w takiej kolejnosci jak teraz beda pokazywac Ci sie takie same komunikaty jak wczesniej)
- na klucze obce musisz pozakladac indeksy gdyz w przeciwnym wypadku mysql bedzie wyrzucal bledy

teraz kilka slow o projekcie bazy danych:
1) IMHO jest do poprawy przebudowy - spawdziles czy to co wrzuciles do swojej wiadomosci wykonuje sie prawidlo? nie sadze gdyz w tabeli dostawca masz blad:, po definicji pola kraj typu text (swoja droga troche bez sensu) nie moze byc znaku przecinka
2) wg mnie wybor typow niektorych pol jest bez sensu: np. dla pola kraj po co Ci pole typu text? takich przykladow moge wymienic wiecej np:
nazwa varchar(20) NOT NULL,
adres varchar(20) NOT NULL,
miasto varchar(20) NOT NULL,

od reki moge wymienic Ci klka firm gdzie nazwa ich jest wieksza od 20 znakow, podobnie jest z adresem czy tez w koncu z nazwami miast... spokojnie mozna znalezc przyklady gdzie w starciu z rzeczywistoscia Twoj projekt bazy danyc polegnie

bardzo podobna sytuacja jest przy kontrahenrach

mam takie wrazenie ze oszczedzasz tam gdzie nie powinienes a tam gdzie moglbys tego nie robisz (wspomniane juz wczesniej haslo czy w koncu tez wspomniana definicja pola kraj)

3) do tej pory zastanawiam sie po co Ci definicja tabeli hasla - czy po to by kontrahenci mogli sie logowac gdzies tam? czy w takim bardz razie nie przenies tego do tabeli kontrahenci?

4) nazwy tabel: zamowienie, dostawca, kategoria powinny kolejno byc: zamowienia, dostawcy, kategorie - moze jest to juz jakis niuans ale w kazdej ksiazce o projektowaniu baz danych znajdziesz kilka uwag do odpowiedniego nadawania nazw tabel czy kolumn

w chwili obecnej to z grubsza to co rzucilo mi sie do oczu... zastanowie sie czy na pewno chcesz wykorzystac mozliwosc definiowania relacji pomiedzy tymi tabelami w mysql'u -> jezeli tak to zrob to porzadnie, no i w koncu zastanow sie nad projektem bazy danych...

w razie watpliwosci i pytan pisz

pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 07:30