首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能手机产品数据库设计及其特点

智能手机产品数据库设计及其特点
EN

Database Administration用户
提问于 2017-07-02 08:12:36
回答 1查看 489关注 0票数 1

我想为智能手机及其功能创建带有功能类别的数据库。

代码语言:javascript
复制
    Feature Category
------------------------
|id     name
------------------------
|1      Processor
|2      Memory
|3      Display
|_______________________


Features
------------------------------------------------
|id     name                feature_category_id
------------------------------------------------
|1      Process Speed           1
|2      Process Technology      1
|3      RAM                     2
|4      Screen Size             3
|_______________________________________________

Product 
----------------------------------------
|id     name                Description
----------------------------------------
|1      Moto G4
|2      Iphone 6s plus
|3      Lenovo K4
|______________________________________

现在我想存储特定产品的功能,例如iPhone6s+产品有ram = 2GB,屏幕大小=5英寸等等.但我想要数据库设计的最佳解决方案。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-07-02 09:46:51

根据您最初的设计,您需要在已有的基础上添加多到多的关系:

代码语言:javascript
复制
CREATE TABLE features_x_products
(
    product_id integer NOT NULL REFERENCES product (id),
    feature_id integer NOT NULL REFERENCES feature (id),
    PRIMARY KEY (product_id, feature_id),

    value varchar(200) NOT NULL,
    unit varchar(50)
) ;

这将创建一个EAV模型(实体-属性值)。它有很多警告。最令人讨厌的是,您必须将所有值存储为text (或varchar),除非您有各种value列(即:value_number decimal ; value_text varchar(200) ; value_timestamp timestamp ; .),但是您还需要一些关于属性的额外元信息来查找要检索的列。

参考资料和替代办法:

边注:最佳设计的概念实际上并不存在。对具体问题有很好的解决办法。有些解决方案适用于许多不同的问题,而另一些则只适用于极少数的问题。根据查询数据库的方式,使用一种编程语言或另一种编程语言访问数据库,可能会使使用JSON特别吸引人,或者非常糟糕。EAV也是如此。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/177785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档