草庐IT

php - Products 表的结构,用于存储来自各个领域的产品详细信息

coder 2023-10-12 原文

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

10 个月前关闭。




Improve this question




我正在构建一个应用程序,它需要支持各种类别的产品领域(如时尚、电子、汽车、杂货等领域的产品),很明显,对于每个领域的产品(甚至它们的子类别),产品属性会因类别而异。

示例:

产品在 时尚字段,例如牛仔裤、衬衫等,它们具有尺寸、颜色、类型、 Material 类型等属性,而 中的产品电子 , 可以是手机、笔记本电脑等,可以有处理器、内存、存储、大小、颜色等产品属性。

我的问题是关于如何以最通用和最有效的方式存储此类信息?

我想到的解决方案:

我想过创建用于维护此信息的表。

  • products表:

  • 此表将包含 中的所有产品及其类别嵌套集表单 使得 每个家长 将充当 类别 每片叶子将充当 产品 .

    除此之外,该表将包含有关产品的元信息(如名称、采购价格、销售价格、sku 等,这些信息对于任何类型的产品都是通用的)。可能 表结构该表如下:
    id(PK), 
    client_fk(FK to clients), 
    parent_id(for nested-sets), 
    lft(for nested-sets), 
    rgt(for nested-sets), 
    depth(for nested-sets), 
    name(meta), 
    sku(meta), 
    purchasing_price(meta), 
    selling_price(meta), 
    created_at, 
    updated_at
    
  • 其他两个表有点像 EAV 模型结构。

  • products_props表:

    此表将使用 存储任何产品(来自任何类别)的所有可能属性,如尺寸、颜色、处理器、内存、存储等。他们的元详细信息 如描述、输入类型详细信息等 表结构对于这个表可以
    id(PK), name, label, description, input_type, input_details, created_at, updated_at
  • products_props_data :

  • 此表将包含产品具有的所有属性的值。 表结构对于这个表可以是:
    id(PK), product_prop_fk(FK to products_props), product_fk(FK to products), value, created_at, updated_at
    阅读 关于此信息将远不止 插入、更新或删除 .

    问题:
  • 我是否遵循正确的方法?
  • 它有效率吗?
  • 还有其他办法吗?
  • 建议/建议以实现我想要的目标。
  • 知名电商是怎么做的?像亚马逊、Flipkart、eBay?
  • 最佳答案

  • 看起来没问题
  • 暂时不要担心这个
  • 大概
  • 如果使用 EAV,我喜欢为不同类型的属性类型构建不同的表 - 因此,我将有一个整数属性表、一个小数属性表和一个字符串表
  • 关于php - Products 表的结构,用于存储来自各个领域的产品详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50364086/

    有关php - Products 表的结构,用于存储来自各个领域的产品详细信息的更多相关文章

    1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

      大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

    2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

      我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

    3. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    4. ruby - inverse_of 是否适用于 has_many? - 2

      当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

    5. ruby - Rack:如何将 URL 存储为变量? - 2

      我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

    6. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

      在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

    7. 神州数码无线产品(AC+AP)配置 - 2

      注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

    8. 阿里云RDS——产品系列概述 - 2

      基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

    9. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

      我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

    10. ruby - "undefined method"用于 rails 模型 - 2

      我正在使用带有Rails的Devise,我想添加一个方法“getAllComments”,所以我这样写:classUser在我的Controller中:defdashboard@user=current_user@comments=@user.getAllComments();end当我访问我的url时,我得到了undefinedmethod`getAllComments'for#我做错了什么?谢谢 最佳答案 因为getAllComments是一个类方法,而您正试图将其作为实例方法访问。您要么需要访问它:User.getAllCom

    随机推荐