Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
peklo
mam pytanie odnośnie tworzenia tabel
Chcę stworzyć stronę o motoryzacji.
1. I teraz czy lepiej jest dodawać ogłoszenie np do jednej tabeli ogloszenia (uzytkownika,opis, marke,model,kategorie prawa jazdy,itd) czy może lepiej
to rozbić na tab1(uzytkownik,opis) tab2(marka,model), tab3(kategoria), itd

2. Czy model i marke samochodu dać w jednej tabeli czy w 2 osobnych i jak je później połączyć

3. I trzecie pytanie czy wogóle kategorie,marki,wyposażenie itd dawać w tabelach czy może w zrobić w pliku
  1. <option value='audi'>audi</option>
  2. <option value='opel'>opel</option>


Proszę o pomoc bo chciałbnym żeby zapytania na stronie działały mi w miarę szybko
Kshyhoo
1. drugie rozwiązanie daje większe możliwości ale komplikuje zapytania.
2. j.w.
3. j.w.
peklo
czyli rozumiem, że przy dodawaniu ogłoszenia można dać wszystkie zmienne do jednej tabeli ogłoszenia, a wybór kategorie,wyposażenie dać w tabelach , a tą marke i model rozbić na dwie tabele?
nospor
Dane slownikowe, czyli marka, model, mają byc oddzielnymi tabelami z polami np: ID, NAZWA
Jesli ogloszenie moze posiadac jedną marke, to ma to byc pole w tabeli ogloszenia, gdzie wstawisz ID danej marki z tabeli z markami.
Jesli ogloszenie moze posiadac wiele danych rzeczy, np. kategorii, to tworzysz tabelę wiążacą ogloszenie z kategorią, ktora to tabela zawiera dwa pola ID_OGLOSZENIA i ID_KATEGORII.

Nie patrz na kod php ktory podal kshyhoo w poprzednim poscie bo jest niesamowicie nieoptymalny.
peklo
Czyli mogę zrobić w np w ten sposób. Do ogłoszenia w jednej tabeli dodaje osobe,opis itd i ze słownika równiez dodaje kategorię np id_kat -np1, id_marka-np5 . I wtedy na podstawie id mogę sobie powyciagać dane z wyszukiwarki
Przykład

tabela ogloszenia - tutaj dodaje
(
id
osoba
data_dod
id_kat
id_marka
id_wyposazenie
)

i teraz tabela kategoria - stad pobieram do tabeli ogłoszenia
(
katA varchar(1),
katB varchar(1),
itd
)

czy dobrze zrozumiałem?
nospor
Nie.

kategoria to tez dana slownikowa, wiec to ma byc normalna tabela slownikowa jak marka..

Kategoria
ID
NAZWA

Ogloszenie
ID
OPIS
DATA
ID_MARKA

Ogloszenie_kateogria - tutaj jest laczenie kategorii z ogloszeniem
ID_OGLOSZENIE
ID_KATEGORIA
peklo
no spor t jak miałaby wyglądać struktura tabeli z kategoriami z której to wybierałbym kategorie pprawa jazdy
A1
B
B1
C
C1
D
D1
B+E
C+E
C1+E
D+E
D1+E
T

sory że tak Cię męcze ale chce żeby to miało ręce i nogi. Na podstawie tej tabeli zrobię inne kategorie np wyposażenie
nospor
Normalnie, tak jak ci napisalem

tabela KATEGORA z polami:
ID - pole AUTOINCREMENT, Klucz glowny
NAZWA

I juz. To jest zwykla tabela slownikowa.
peklo
ok czyli robię coś takiego

  1. CREATE TABLE `kategorie` (
  2. id_kat int(2),
  3. kategoria varchar(4),
  4. KEY `id` (`id`)
  5. ) ENGINE=InnoDB;
  6.  
  7. INSERT INTO `kategorie` (`id_kat`, `kategoria`) VALUES
  8. (1, 'A1'),
  9. (2, 'B'),
  10. (3, 'B1'),
  11. (4, 'C'),
  12. (5, 'C1'),
  13. (6, 'D'),
  14. (7, 'D1'),
  15. (8, 'B+E'),
  16. (9, 'C+E'),
  17. (10, 'C1+E'),
  18. (11, 'D+E'),
  19. (12, 'D1+E'),
  20. (13, 'T');


analogicznie z wyposażeniem itd
Tylko nie za bardzo jeszcze rozumiem powiązania tabeli ogłoszenia z tymi pozostałymi tabelami (kategorie,wyposazenie,model,marka). Musze stworzyć poza tabelą ogłoszenia jeszzce inna tabelę która zwiąże mi tą tabelę z innymi?
nospor
zanim ruszysz dalej, zapoznaj sie dokladnie z podstawami

1) AUTOINCREMENT
2) klucz glowny - Primary Key
3) Typy danych i ich zakres. W tym wypadku nie int(2) a TINYINT unsigned
4) Skoro ma to byc AUTOINCREMENT to nie nadawaj sam ID tylko wstawiaj NULL zamiast ID i niech to baza sama nadaje ID rekordom


Napisalem, oddzielna tabela wiazaca ma byc tylko dla pol gdzie moze byc wiele rzeczy dla jendego ogloszenia. Ogloszenie moze miec wiele kategorii, wiec ma byc tabela wiazaca.
ALe marka dla ogloszenia chyba bedzie tylko jedna? Wiec w tabeli OGLOSZENIE ma byc pole ID_MARKA
peklo
autoincrement i primarykey wiem co to jest tylko tu nie dopisałem nie wiem czemu. Ok to już wiem jak bedzie wiele wyborów np wyposażenia to mam zrobić dodatkową tabele. dzieki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.