![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 2.10.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam następujący problem - dopiero uczę się MySQL'a i nie wiem jak zaprojektować relacyjną bazę danych (z prostą radzę sobie). przykładowo : Chcę w bazie umieścić użytkowników z następującymi danymi w tabeli : Tablica User: - Login char 30 - Hasło char 30 - E-Mail char 50 - UserID int AutoIncrement - Samochody Tablica Samochody : (tutaj myślałem o relacjach marka -> model jeden do wielu) -- Model char 30 = Marka char 30 I tu zaczyna się mój problem... O ile każdy użytkownik ma jeden email, jedno hasło i jeden login to samochodów może mieć 1 lub więcej (np 2 lub 3 - albo i 0). Każdy samochód ma swoją markę i model ale ma też swoje parametry które nie wiem jak i gdzie usadowić - parametry takie jak np silnik i jego pojemność oraz czy jest to wersja Coupe, sedan czy inna samochodu - czy ma szyberdach itd Nie mam pojęcia jak to stworzyć - możecie mi w tym pomóc ? Byłbym wdzięczny za pomoc. Obsługa bazy będzie w PHP. -------------------- Znudził Ci się wygląd twojej v39'ki ? Zmień to! :)
| Google | CodeGear | Swiss Delphi Center (ENG) | digitalmars.com | 4programmers.net | dsdt.info | BinBoy | delphi.cartall.com.pl | CPW.net.pl | cyfbar.republika.pl| |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
tabela marki
- idMarki i inne tabela modele - idModelu i inne tabela Użytkownicy - idUsera - Login char 30 - Hasło char 30 - E-Mail char 50 tabela UzytkownicySamochody - idUsera - idMarki - idModelu primary key( idUsera, idMarki, idModelu ) taki rodzaj relacji, nazywa się wiele do wielu (z ang. many-to-many) możesz o nim poczytać na internecie. Ten post edytował cojack 31.08.2010, 16:36:58 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 2.10.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
tabela marki - idMarki i inne tabela modele - idModelu i inne tabela Użytkownicy - idUsera - Login char 30 - Hasło char 30 - E-Mail char 50 tabela UzytkownicySamochody - idUsera - idMarki - idModelu primary key( idUsera, idMarki, idModelu ) taki rodzaj relacji, nazywa się wiele do wielu (z ang. many-to-many) możesz o nim poczytać na internecie. Wymyśliłem coś takiego : Zapytanie 1 : Tabela User
Zapytanie 2 : Tabela Marka
Zapytanie 3 : Tabela Model
Zapytanie 4 : Tabela UserCar
A gdzie mam dodać takie dane jak np czy samochód spala benzynę ? W tabeli Model ? Bo jeżeli tak to mogę zrobić coś takiego że będzie dodatkowa tabela np : Tabela Paliwo : - ID_paliwo - Typ a tabelę model rozszerzyć o ID_paliwo i dodać relację ? Chcę mieć listę rozwijaną przy wpisywaniu danych do tabeli. Wtedy Tabela Model wyglądała by tak : Zapytanie 3 : Tabela Model
Tak dobrze ? -------------------- Znudził Ci się wygląd twojej v39'ki ? Zmień to! :)
| Google | CodeGear | Swiss Delphi Center (ENG) | digitalmars.com | 4programmers.net | dsdt.info | BinBoy | delphi.cartall.com.pl | CPW.net.pl | cyfbar.republika.pl| |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Nie ma nie wiadomo ile paliw, możesz to zrobić na typie wyliczeniowym ENUM. I zamiast ID_paliwo w Model, zrobić typPaliwa. Ale tak też jest dobrze. Nie zapominaj też że modele można podzielić na jeszcze parę grup, np na typy silników, lata produkcji, typy nadwozia itd... Więc albo będziesz dodawał różnego rodzaju modele tej samej marki w tabeli Model, albo to jeszcze bardziej rozbijesz. Tutaj rób jak uważasz, w zależności jak to będziesz wykorzystywał.
@edit acha w tabeli Model brakuje kolumny idMarki. Ten post edytował cojack 31.08.2010, 17:53:16 -------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 2.10.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie 3 : Tabela Model
Dobrze ? // Nieaktualne : Mam problem z zapytaniem - coś błąd mi wywala a chciałem dodać aby pola musiały być wypełnione...
A takie jeszcze pytanie aby nowego tematu nie tworzyć... W profesjonalnych zastosowaniach jak rozumiem rozdziela się użytkowników (jako bazę) od tego co w serwisie (np samochody) tak? Bo tak się zastanawiam... jak by się okazało że dużo użytkowników wchodzi na serwis to ja jest jedna baza z użytkownikami i samochodami to może szybko się okazać że będzie do bazy z dużo zapytań tak ? Tak się zastanawiam ile baz można na serwerach darmowych tworzyć dla jednego danego konta... bo jak więcej niż jedno to chyba lepiej rozdzielić bazę tak ? Ten post edytował Setesh 31.08.2010, 18:22:47 -------------------- Znudził Ci się wygląd twojej v39'ki ? Zmień to! :)
| Google | CodeGear | Swiss Delphi Center (ENG) | digitalmars.com | 4programmers.net | dsdt.info | BinBoy | delphi.cartall.com.pl | CPW.net.pl | cyfbar.republika.pl| |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Nie rozdzielaj baz na użytkowników. Nie masz takiej potrzeby. I masz błąd. idMarka ta kolumna powinna być kluczem obcym wskazującym na klucz główny w tabeli marki. A tworzenie tabel trzaskaj w mysqlphpadmin czy z konsoli, nie baw się w php z tym.
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 0 Dołączył: 2.10.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Myślałem o tym aby robić to w phpmyadmin ale jak skończę robić sobie serwis (o ile można tak to nazwać) to chce automatycznie stworzyć tabele za pomocą jednego skryptu zamiast bawić się z tym ręcznie. ogólnie baza będzie bardzo rozbudowana - dużo tabel i relacji między nimi bo tematykę rozbiję na jak najmniejsze potrzebne mi elementy - problem z tym że nie umiałem robić relacji między tabelami (teraz mniej więcej - chyba mniej
![]() A jak zaznaczyć że idMarka ma być kluczem obcym ? bez default ? -------------------- Znudził Ci się wygląd twojej v39'ki ? Zmień to! :)
| Google | CodeGear | Swiss Delphi Center (ENG) | digitalmars.com | 4programmers.net | dsdt.info | BinBoy | delphi.cartall.com.pl | CPW.net.pl | cyfbar.republika.pl| |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Zobacz na przykładach: http://dev.mysql.com/doc/refman/5.1/en/inn...onstraints.html
-------------------- cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 19:55 |