![]() |
![]() |
![]() ![]()
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; |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 07:30 |