数据库设计 – 设计关系数据库 – 使用分层数据模型还是避免使用
我正在设计一个数据库,我对在关系数据库中使用Hierarchical数据模型有一些疑问.
如果我想处理类别,子类别和父类别,可能不在关系数据库中使用分层数据模型?换句话说,可以使用关系做事方式处理类别,子类别和父类别? 顺便说一下,我正在使用PostgreSQL. 对不起,我的英语不好. 最好的祝福, 解决方法您有两种存储层次结构的选项:>邻接清单 如果你有PostgreSQL版本8.4或更高版本,你可以使用recusive queries使事情变得非常简单.这是迄今为止最简单的解决方案,易于查询,易于插入新记录,易于更新当前记录,易于删除记录,并且您具有参照完整性.所有其他解决方案都有难以解决的问题. 附加清单: CREATE TABLE categories ( id SERIAL PRIMARY KEY,parent_id BIGINT,category TEXT NOT NULL,FOREIGN KEY (parent_id) REFERENCES categories(id) ); INSERT INTO categories(parent_id,category) VALUES(NULL,'vehicles'); INSERT INTO categories(parent_id,category) VALUES(1,'cars'); INSERT INTO categories(parent_id,'motorcycles'); INSERT INTO categories(parent_id,category) VALUES(2,'SUV'); INSERT INTO categories(parent_id,'sport'); INSERT INTO categories(parent_id,category) VALUES(3,'cruising'); INSERT INTO categories(parent_id,'sport'); WITH RECURSIVE tree (id,parent_id,category,category_tree,depth) AS ( SELECT id,category AS category_tree,0 AS depth FROM categories WHERE parent_id IS NULL UNION ALL SELECT c.id,c.parent_id,c.category,tree.category_tree || '/' || c.category AS category_tree,depth+1 AS depth FROM tree JOIN categories c ON (tree.id = c.parent_id) ) SELECT * FROM tree ORDER BY category_tree; 结果:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 带xmlns的OPENXML:dt
- 详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
- sql-server – a = 0和b = 0的性能和… z = 0 vs b c d = 0
- 配置SQLServer发送电子邮件的介绍
- sqlserver 中在存储过程中的嵌套事物
- 如何使用Elixir Ecto中的“between”创建SQL
- linq – 如何使用SqlAzureExecutionStrategy和“Nolock”
- SQL Server Managment Studio 2008 R2导出结构数据
- sql – 为什么表上的CONNECT BY LEVEL会返回额外的行?
- SQL中的表扫描和索引扫描