Baza danych w MySql


(Cieniasdc) #1

Mam zamiar napisać bazę danych pod sklep z podzespołami komputerowymi(taki projekt). Problem polega na tym że chce aby każdy podzespół stanowił osobną tabelę. Mając np. tabele:

create table zamowienia

(

zamowienie_id int unsigned not null references zamowienia(zamowienie_id),

sprzet_id char(20) not null references sprzet(sprzet_id),

cena_produktu float(6, 2),

ilosc int unsigned,

primary key(zamowienie_id, sprzet_id)

)type=InnoDB;

create table plyty_glowne

(

plyty_glowne_id int unsigned

)

create table procesory

(

procesory_id int unsigned;

)

Nie wiem jak zrobić żeby połączyć tabele „zamowienia” z tabelami „płyty_glowne”, „procesory” etc. w taki sposób aby możliwe było składanie zamówienia na każdy podzespół osobno.


(Lisek) #2

Bazując na tym co wymyśliłeś mam dwie propozycje.

Zrobić jedną tabelę z podzespołami (wiem, że chcesz mieć osobne tabelę :slight_smile: ), dodać jedno pole służące rozróżnianiu jaki to podzespół. Wtedy możesz wyciągać albo jeden rodzaj podzespołów albo drugi, tak jakby to były dwie różne tabele.

Druga opcja, to dodać do tabeli z zamówieniami pole informujące jaki to podzespół i potem przy wyciąganiu zależnie od tej informacji wyciągasz z jednej czy z drugiej tabeli.

Jednak zdecydowanie polecałbym pierwszą opcję.


(adpawl) #3

Po co sobie tak życie komplikować?

Podobnie jak lisek, proponował bym jeszcze przemysleć strukture bazy...

szoda rozbijać sprzęt na ileś tam tabel skoro można ładnie w jedną wsadzić i rozróżniać po jakimś dodatkowym polu id.


(Cieniasdc) #4

Niby mógłbym zrobić w ten sposób:

create table sprzet

(

sprzet_id char(20) not null primary key,

nazwa_produktu char(50),

producent char(50),

kategoria_id int unsigned,

cena float(4, 2),

opis varchar(255)

)type=InnoDB;

ale chce aby były możliwość korzystania z konfiguratora w celu sprawdzania zgodności np. socketu płyty głównej i procesora.


(Lisek) #5

Tylko co jedna tabela zamiast kilku w tym przeszkadza? Ja nie widzę żadnej różnicy.


(Cieniasdc) #6

Procesor

1.producent

2.typ procesora

3.model procesora

4.typ gniazda

5.proces technologiczny

6.częstotliwość taktowania procesora

7.częstotliwość taktowania magistrali

8.mnożnik

...

Płyta główna

producent

gniazdo procesora

obsługiwane typy procesorów

maks. ilość obsługiwanych procesorów

chipset

obsługa technologii SLI

magistrala FSB

...

Tylko jak to umieścić w jednej tabele skoro poszczególne podzespoły maja inne cechy?