2

任何人都可以建议以下数据库设计:

用户可以创建目录 在目录中,用户可以创建一个范围 - 即一系列产品 在一个范围内,用户可以添加多个产品 在一个范围内,用户可以添加多个范围 -> range->range->range all with其中的产品。

我目前在我的数据库中 -

catalogue_range with - id, name, description 和 catalogue_product with - id, range_id, name, description

谁能看到我想要制作的东西?

我的目标是能够在一个目录范围内创建多个目录范围,并将多个产品添加到每个目录范围中。

这是我当前的 SQL:

`catalogue_range` (
      `id` char(40) NOT NULL,
      `profile_id` char(40) NOT NULL,
      `type` enum('pdf','db') DEFAULT NULL,
      `status` enum('new','draft','live') NOT NULL,
      `name` varchar(64) NOT NULL,
      `description` varchar(1000) NOT NULL,
      `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      KEY `profile_id` (`profile_id`)
    )

`catalogue_product` (
  `id` char(40) NOT NULL,
  `catalogue_id` char(40) NOT NULL,
  `order` smallint(5) unsigned NOT NULL,
  `name` varchar(50) NOT NULL,
  `description` varchar(250) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `catalogue_id` (`catalogue_id`)
) 

提前致谢。

4

2 回答 2

1
  1. 目录(目录 ID,您的私有属性)
  2. 产品(产品 id,#catalogue id,您的私人属性)
  3. range( range id , #range id parent, 你的私有属性)
  4. 产品范围(#product id#range id

您将需要存储过程/应用算法来编译:

  • 一个范围的产品列表(计算递归 sqls mysql 不像 oracle 那样提供分析函数)
  • 目录/范围的范围列表

希望能帮助到你。S。

于 2013-01-04T01:25:02.263 回答
1

假设一个产品一次只能存在于一个目录中,那么您的设计几乎没有问题。您缺少catalogue_range. catalogue_range在表定义中添加如下内容:

`parent_range_id` char(40) NULL,
FOREIGN KEY (`parent_range_id`) REFERENCES catalogue_range(`id`)

任何给定用户的顶级范围都将具有 NULL parent_range_id,其他用户将引用包含范围。请注意,层次结构在 SQL 中不一定很容易使用。您可能还想研究使分层数据对 SQL 更友好的技术,例如嵌套集

于 2013-01-04T13:16:09.527 回答