Database design 需要产品及其规格数据库设计方面的帮助吗

Database design 需要产品及其规格数据库设计方面的帮助吗,database-design,Database Design,不同的产品有不同的规格设置。这些产品也被分类。如何设计这种需求?任何想法都将受到高度赞赏。例如— Sony Xperia ZL General Features Form - Touch SIM - Single SIM, GSM Software OS Version - Android OS, v4.1.2 (Jelly Bean) Operating Freq - GSM - 850, 900,

不同的产品有不同的规格设置。这些产品也被分类。如何设计这种需求?任何想法都将受到高度赞赏。例如—

Sony Xperia ZL

    General Features
        Form - Touch
        SIM  - Single SIM, GSM 
    Software
        OS Version   - Android OS, v4.1.2 (Jelly Bean)
        Operating Freq   - GSM - 850, 900, 1800, 1900; UMTS - 2100 
    Display
        Type -  TFT Capacitive
        Size -  5-inch 



LG HD LED Television

    GENERAL
        Model   47LN5710
        Screen Type     -
        Display Size    47 Inch 

    VIDEO FEATURES
        Aspect Ratio    -
        Dynamic Ratio   -
        View Angle  178 Degree 

这取决于你用它做什么。有一个简单的解决方案,可以创建一个表,例如“Spec Attributes”,它只有两个三列:产品Id、Spec名称、Spec值。这将是一个简单的修复-但不提供支持或数据完整性

更好的解决方案是在属性周围设置一些保护措施。与上面类似,这将涉及到一个表,该表将您的“列”(即SIM、OS版本)存储为行。我建议使用预定义的属性,甚至“类型”来限制您正在使用的属性,以便于查询

比如说,

  DeviceTypes
  DeviceTypeId |     Name
  01           |     Camera
  02           |     Television
  03           |     Mobile Phone

  Category
  CategoryId   |     Name
  01           |     General
  02           |     Video Features

  DeviceAttributeTypes
  DeviceAttribTypeId| DeviceTypeId | CategoryId    |AttributeName  |    DataType
  01                | 01           | 01            | SIM           | Varchar
  02                | 01           | 01            | Size          | NUMBER
  03                | 02           | 02            | Display Size  | NUMBER
  04                | 02           | 01            | Model         | Varchar

  DeviceAttribut
  DeviceId  |  DeviceAttirbTypeId |  Value  
  13        |  01                 |  Single Sim, GSM
  13        |  02                 |  5
  14        |  04                 |  47LN5710
在本例中,您将使用所需的属性和类型对设备类型和类别表进行“硬编码”。这使您可以选择按属性的类型或类别过滤属性

i、 e.要获得所有设备及其属性的列表,您可以使用下面的查询。然后,您可以在ID或类别或设备类型的名称上添加“WHERE”

  SELECT d.DeviceName
  ,      dat.AttributeName
  ,      dar.Value
  FROM   Device d
         LEFT JOIN DeviceAttribute da
           ON d.DeviceId = da.DeviceId
         LEFT JOIN DeviceAttributeType dat
           ON da.DeviceAttribTypeId = dat.DeviceAttribtypeId

要在需要返回属性为列的resultset的地方进行查询,我始终使用;带注释。(示例)

这取决于您使用它的目的。有一个简单的解决方案,可以创建一个表,例如“Spec Attributes”,它只有两个三列:产品Id、Spec名称、Spec值。这将是一个简单的修复-但不提供支持或数据完整性

更好的解决方案是在属性周围设置一些保护措施。与上面类似,这将涉及到一个表,该表将您的“列”(即SIM、OS版本)存储为行。我建议使用预定义的属性,甚至“类型”来限制您正在使用的属性,以便于查询

比如说,

  DeviceTypes
  DeviceTypeId |     Name
  01           |     Camera
  02           |     Television
  03           |     Mobile Phone

  Category
  CategoryId   |     Name
  01           |     General
  02           |     Video Features

  DeviceAttributeTypes
  DeviceAttribTypeId| DeviceTypeId | CategoryId    |AttributeName  |    DataType
  01                | 01           | 01            | SIM           | Varchar
  02                | 01           | 01            | Size          | NUMBER
  03                | 02           | 02            | Display Size  | NUMBER
  04                | 02           | 01            | Model         | Varchar

  DeviceAttribut
  DeviceId  |  DeviceAttirbTypeId |  Value  
  13        |  01                 |  Single Sim, GSM
  13        |  02                 |  5
  14        |  04                 |  47LN5710
在本例中,您将使用所需的属性和类型对设备类型和类别表进行“硬编码”。这使您可以选择按属性的类型或类别过滤属性

i、 e.要获得所有设备及其属性的列表,您可以使用下面的查询。然后,您可以在ID或类别或设备类型的名称上添加“WHERE”

  SELECT d.DeviceName
  ,      dat.AttributeName
  ,      dar.Value
  FROM   Device d
         LEFT JOIN DeviceAttribute da
           ON d.DeviceId = da.DeviceId
         LEFT JOIN DeviceAttributeType dat
           ON da.DeviceAttribTypeId = dat.DeviceAttribtypeId

要在需要返回属性为列的resultset的地方进行查询,我始终使用;带注释。(示例)

这取决于您使用它的目的。有一个简单的解决方案,可以创建一个表,例如“Spec Attributes”,它只有两个三列:产品Id、Spec名称、Spec值。这将是一个简单的修复-但不提供支持或数据完整性

更好的解决方案是在属性周围设置一些保护措施。与上面类似,这将涉及到一个表,该表将您的“列”(即SIM、OS版本)存储为行。我建议使用预定义的属性,甚至“类型”来限制您正在使用的属性,以便于查询

比如说,

  DeviceTypes
  DeviceTypeId |     Name
  01           |     Camera
  02           |     Television
  03           |     Mobile Phone

  Category
  CategoryId   |     Name
  01           |     General
  02           |     Video Features

  DeviceAttributeTypes
  DeviceAttribTypeId| DeviceTypeId | CategoryId    |AttributeName  |    DataType
  01                | 01           | 01            | SIM           | Varchar
  02                | 01           | 01            | Size          | NUMBER
  03                | 02           | 02            | Display Size  | NUMBER
  04                | 02           | 01            | Model         | Varchar

  DeviceAttribut
  DeviceId  |  DeviceAttirbTypeId |  Value  
  13        |  01                 |  Single Sim, GSM
  13        |  02                 |  5
  14        |  04                 |  47LN5710
在本例中,您将使用所需的属性和类型对设备类型和类别表进行“硬编码”。这使您可以选择按属性的类型或类别过滤属性

i、 e.要获得所有设备及其属性的列表,您可以使用下面的查询。然后,您可以在ID或类别或设备类型的名称上添加“WHERE”

  SELECT d.DeviceName
  ,      dat.AttributeName
  ,      dar.Value
  FROM   Device d
         LEFT JOIN DeviceAttribute da
           ON d.DeviceId = da.DeviceId
         LEFT JOIN DeviceAttributeType dat
           ON da.DeviceAttribTypeId = dat.DeviceAttribtypeId

要在需要返回属性为列的resultset的地方进行查询,我始终使用;带注释。(示例)

这取决于您使用它的目的。有一个简单的解决方案,可以创建一个表,例如“Spec Attributes”,它只有两个三列:产品Id、Spec名称、Spec值。这将是一个简单的修复-但不提供支持或数据完整性

更好的解决方案是在属性周围设置一些保护措施。与上面类似,这将涉及到一个表,该表将您的“列”(即SIM、OS版本)存储为行。我建议使用预定义的属性,甚至“类型”来限制您正在使用的属性,以便于查询

比如说,

  DeviceTypes
  DeviceTypeId |     Name
  01           |     Camera
  02           |     Television
  03           |     Mobile Phone

  Category
  CategoryId   |     Name
  01           |     General
  02           |     Video Features

  DeviceAttributeTypes
  DeviceAttribTypeId| DeviceTypeId | CategoryId    |AttributeName  |    DataType
  01                | 01           | 01            | SIM           | Varchar
  02                | 01           | 01            | Size          | NUMBER
  03                | 02           | 02            | Display Size  | NUMBER
  04                | 02           | 01            | Model         | Varchar

  DeviceAttribut
  DeviceId  |  DeviceAttirbTypeId |  Value  
  13        |  01                 |  Single Sim, GSM
  13        |  02                 |  5
  14        |  04                 |  47LN5710
在本例中,您将使用所需的属性和类型对设备类型和类别表进行“硬编码”。这使您可以选择按属性的类型或类别过滤属性

i、 e.要获得所有设备及其属性的列表,您可以使用下面的查询。然后,您可以在ID或类别或设备类型的名称上添加“WHERE”

  SELECT d.DeviceName
  ,      dat.AttributeName
  ,      dar.Value
  FROM   Device d
         LEFT JOIN DeviceAttribute da
           ON d.DeviceId = da.DeviceId
         LEFT JOIN DeviceAttributeType dat
           ON da.DeviceAttribTypeId = dat.DeviceAttribtypeId
要在需要返回属性为列的resultset的地方进行查询,我始终使用;带注释。(示例)

看我的,可能有用。看我的,可能有用。看我的,可能有用。看我的,可能有用。看我的,可能有用。