任何人都可以建议以下数据库设计:
用户可以制作目录 在目录中,用户可以制作范围 - 即一系列产品 在一个范围内,用户可以添加多个产品 在一个范围内,用户可以添加多个范围 - > range-> range->范围都包含产品。
我目前在我的数据库中 -
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`)
)
提前致谢。
答案 0 :(得分:1)
您需要编译存储过程/应用算法:
希望它有所帮助。 S上。
答案 1 :(得分: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的技术,例如nested sets。