mysql - 将多个数据表存储在单个数据库表中

标签 mysql sql database orm relational-database

我正在设计MySql数据库来存储多种产品,例如电脑,手机,笔驱动器......等。每种产品都有不同的功能,例如

**Computers has**
Processor
Ram
HDD
Monitor Size
....etc

**Mobile phone has**
Display Size
Network type
OS
Internal Memory
....etc

**Pendrive has** 
Capacity
USB Version
....etc

我必须存储无限数量的产品,而不是为每个产品创建单独的表如何创建数据库结构以将这些信息存储在一个或固定数量的表(数据表+映射表)上。(我认为Wordpress存储这种格式的数据,它使用很少的表并在这些表中存储与帖子/类别相关的任何数字字段)。任何解决此问题的帮助/想法将不胜感激。

最佳答案

考虑一下这个 创建三个表product、feature、product_feature,也许还有product_photos

产品数据库将为

pid, p_name, p_description, p_price, ...
insert query 
INSERT INTO (p_name, p_description, p_price, ....) VALUES(?,?,?,...)

特征表将

fid, f_name, f_description, ...
insert query 
INSERT INTO (F_name, F_description, ....) VALUES(?,?,?,...)

现在product_feature表将是

id, pid, fid 
query for one product
// say a product Id is 1
INSERT INTO (pid, fid) VALUES(1, 10) 
INSERT INTO (pid, fid) VALUES(1, 15
INSERT INTO (pid, fid) VALUES(1, 30) 

其中 pid 和 fid 是具有关系的外键,phpmyadmin 可以为您做到这一点 然后您可以添加具有多种功能的产品

那么也许是照片表

foto_id, photo_name, photo_path ....

对所有表使用 InnoDB

如果您需要进一步帮助,请告诉我

关于mysql - 将多个数据表存储在单个数据库表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835289/

相关文章:

php - 在 PHP 中输​​出 Mysql 数组

mysql - Nedd 帮助理解为什么只有带有子查询的 JOIN 返回正确的值

php - 选择第一个 NOT NULL 列,然后获取该列的名称

php - Laravel 现有数据库

java - 数据库独立 Java 编程 - 建议?

SQL 查询 : select max of 2 columns of same row

mysql - 在 SQL 中创建表时出错

php - MYSQL 中的 UPDATE SET 合并

php - 为什么 "INSERT INTO SELECT"比插入慢?

sql - pl/sql 上的序列