proste relacje między tabelkami

0

Cześć Wam!

Mam za zadanie zrobić w PHP takie tam: logowanie użytkownika, wyszukiwanie części (po nazwie, typie, marce), nadawanie rabatów użytkownikom. Działać ma to na 4 tabelach: użytkownicy, części, rabaty, typy części. Nie bardzo wiem jak stworzyć do tego odpowiednią bazę danych, chodzi mi o relacje między tabelkami. Problem mam największy z typem części, z tego co rozumiem ma to działać jako jakby taki typ wyliczeniowy w sensie, że część może być tylko któregoś z typów znajdującego się w tabeli "typy części".

Robiłem to wizualnie w darmowym DbSchema, który wygenerował mi coś takiego:

CREATE TABLE `projekt-czesci`.parts ( 
	id                   INT  NOT NULL  AUTO_INCREMENT,
	manufacturer         VARCHAR(30)  NOT NULL  ,
	model                VARCHAR(30)  NOT NULL  ,
	fk_type              VARCHAR(30)  NOT NULL  ,
	CONSTRAINT pk_parts PRIMARY KEY ( id )
 );

CREATE INDEX idx_parts ON `projekt-czesci`.parts ( fk_type );

ALTER TABLE `projekt-czesci`.parts ADD CONSTRAINT fk_parts_parts_type FOREIGN KEY ( fk_type ) REFERENCES `projekt-czesci`.parts_type( `type` ) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE TABLE `projekt-czesci`.parts_type ( 
	`type`               VARCHAR(30)  NOT NULL  ,
	CONSTRAINT pk_parts_type PRIMARY KEY ( `type` )
 ) ;

Przedstawiłem tworzenie tylko tabeli części i typy_części, z resztą raczej sobie poradzę. Czy coś takiego ma jakikolwiek sens? Czy tutaj nie chodzi o klucz obcy? Wiem, że trochę rzeczy tutaj nie potrzebnych jest w kodzie (po prostu tak wygenerowało). Z góry dzięki za podpowiedzi.

0

Tabela części musi mieć klucz obcy do tabeli typ_części.
Tabela rabat powinna mieć klucz obcy z tabeli czesci.
np. id_czesci. (Której części rabat dotyczy).

Jeśli konto użytkownika służy tylko do logowania, nie wstawiasz tam klucza obcego ale jeśli użytkownik może np. kupic jakąś część, wtedy należało by zrobić w tabeli usera pole dla klucza obcego id_czesci, które ma wskazać jaką częśc zamówił użytkownik.

0

okej:) dzięki;) Czyli po prostu relacja jeden do wielu w przypadku tabeli typ_części i części, chyba już mi działa. Jeszcze raz dzięki

0

Dokładnie, klucze obce stosuje się najczęściej w relacjach jeden do wielu. Istnieje także przypadek gdzie występuje relacja wiele do wielu, tutaj trzeba stworzyć sztuczną tabelę, gdzie jej kolumnami będą klucze obce z tabel, z których występuje relacja.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.