CakePHP tabela łącznikowa

Odpowiedz Nowy wątek
2014-07-21 13:12
0

Witam!

Czy mógłby mi ktoś wytłumaczyć jaka jest różnica pomiędzy taką relacją tabel

CREATE TABLE products (
  id int(11) NOT NULL auto_increment, 
  category_id int(11) NOT NULL,  
  producer_id int(11) NOT NULL,  
  name varchar(25) DEFAULT '' NOT NULL,
  description text DEFAULT '' NOT NULL,
  PRIMARY KEY (id),
  KEY name (name)
);

CREATE TABLE categories (
  id int(11)NOT NULL auto_increment,
  name varchar(45) DEFAULT '' NOT NULL,
  description varchar(255) DEFAULT '' NOT NULL,
  PRIMARY KEY (id),
  KEY name (name)
);

CREATE TABLE producers(
  id int(11)NOT NULL auto_increment,
  name varchar(55) DEFAULT '' NOT NULL,
  PRIMARY KEY (id)
);

a taką (łącznikowa)

CREATE TABLE categories (
  id int(11)NOT NULL auto_increment,
  name varchar(45) DEFAULT '' NOT NULL,
  description varchar(255) DEFAULT '' NOT NULL,
  PRIMARY KEY (id),
  KEY name (name)
);

CREATE TABLE producers(
  id int(11)NOT NULL auto_increment,
  name varchar(55) DEFAULT '' NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE category_producers(
 id int(11)NOT NULL auto_increment,   
 category_id int(11) NOT NULL,
 producer_id int(11) NOT NULL,
 PRIMARY KEY (id) 
);

CREATE TABLE products (
  id int(11) NOT NULL auto_increment,
  category_producer_id int(11) NOT NULL,  
  name varchar(25) DEFAULT '' NOT NULL,
  description text DEFAULT '' NOT NULL,
  timestamp timestamp(6) NOT NULL,
  PRIMARY KEY (id),
  KEY name (name)

);

I jak się mają takie relacje do operacji CRUD? Z tego co zaobserwowałem dla pierwszej relacji tabel, operacja CRUD dla tabeli products jest bez problemowe, gdyż mogę pobrać wartości z tabel: categories i producers natomiast dla drugiej relacji zaczyna się problem, gdyż mam dostęp tylko do tabeli category_producers Jak zatem pobrać wartości z tabeli categories i producers? Którą relację używać?
Pozdrawiam i dziękuję za wszelkie sugestię

Pozostało 580 znaków

2014-08-06 10:13
0

Prawdopodobnie producenci maja wiele kategorii a kategorie mogą mieć wielu producentów.
Jest to relacja wiele do wielu, i w takim wypadku powinno się tworzyć dodatkowa tabele łącznikową producers_categories.

Można je pobrać np. w ten sposób:

SELECT c.name,c.description FROM categories c JOIN category_producers cp ON cp.category_id = c.id; 

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0