我是CakePHP的初学者,我需要你对桌子的帮助。这种关系表有什么区别:
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)
);
和中间人
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)
);
根本区别是什么?哪个用?中间表的CRUD操作如何?
答案 0 :(得分:0)
基本差异
category_producers表的目的是存储类别和生产者之间的多对多关系。
在第一个设计中,产品可以包含生产者和类别的任意组合。 在第二种设计中,category_producers表存储了生产者和类别的所有有效组合。
举个例子:
<强>分类强>
Electronics
Vehicles
<强>生产者强>
Sony
Toyota
Mitsubishi
通过第一个设计,您可以制作由Sony生产的车辆类别的产品。 使用第二种设计,您将使用有效组合填充category_producers表。
例如
Electronics Sony
Vehicles Toyota
Vehicles Mitsubishi
Electronics Mitsubishi
不允许使用Sony生产的车辆类别的产品。
使用哪种
这是您根据 业务要求做出的决定。
CRUD操作
您需要了解cakephp handles relations的具体方式,特别是hasAndBelongsToMany。