这样的需求怎么样建表呀!!!在线等待!!!

xiaodian2003 2003-08-21 08:47:45

这像面向对象里的继承。“灯”这个类有“价格”、“功耗”两个属性(这个是用户自定义的)。而“节能灯”是从“灯”继承下来的,有“灯”的属性,而且有自己的属性“技术”(这也是用户自定义的)。
这只是简单的情况。还有“灯”下又有小类。“节能灯”下也有小类,每个小类用户都可以定义字段。

现在是字段用户可以随意加。比如你有了一个“节能灯“小类,客户还要实现他要有一些字段如:价格、功耗、技术……
而客户又加了一个“日光灯”小类。这个小类却只有一个“价格”、“功耗”没有“技术“。
这好像“价格”、“功耗“是“灯”这个大类的属性,是用户自己设置的。而“技术“是“节能灯”小类特有的字段。“日光灯”里没有。

大类小类都可以不定。如果所有的产品都有的属性可以直接放到产品表里。
...全文
48 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
waterw 2003-08-22
  • 打赏
  • 举报
回复
加动态属性字段在同一张表内。再加一张表维护不同类别的属性。
实现所谓子类与父类不同之处,大可以在程序控制是否允许填写就OK了,而没有必要把数据库折腾得这么复杂,
newly_ignorant 2003-08-21
  • 打赏
  • 举报
回复
更复杂的是:
应该有产品表,用来保存各种产品的属性吧

1)产品表动态生成,表名同产品编号;
2)生成表的时候取所有属性,因此属性表中应该包含字段信息,如长度、数据类型、缺省值、取值范围等;
3)更新某产品编号的属性,(删除、添加等)需要用触发器更新子类、孙类的产品表,可能会存在不能更新的情况(,简称触发以下同);
4)删除产品编号需要触发
5)更新属性表需要触发
。。。

很复杂,小心啦
CrazyFor 2003-08-21
  • 打赏
  • 举报
回复
建立树状关系表及节点属性表,

每个产品都会在这个树上有一节点,这样就很容易得到这个节点的所有父节点的所有属性,
eastpond 2003-08-21
  • 打赏
  • 举报
回复
学习
newly_ignorant 2003-08-21
  • 打赏
  • 举报
回复
楼上的产品编码表可以考虑用产品编码树

产品属性表中只保存本产品特有属性,另外在产品属性表中增加一字段表示该属性是否可以继承

如果要知道某个产品属性,则需要:
1)查询特有属性;
2)查询父产品
3)查询父产品可以继承属性
4)2、3进行递归查出所有祖先的可以继承属性

总之很烦琐,可以考虑用存储过程实现。

如果真的有必要,还是采用面向对象数据库吧。
愉快的登山者 2003-08-21
  • 打赏
  • 举报
回复
建立产品编码表
产品编码,产品名称
产品属性编码表
属性编码,属性名称
产品属性表
产品编码,属性编码,属性

愉快的登山者


◢◣◢◣◢◣
showerXP 2003-08-21
  • 打赏
  • 举报
回复
up
还有没有新方案?
lfengxu 2003-08-21
  • 打赏
  • 举报
回复
这样可以解决问题:所谓大类和小类的字段可以任意添加。也可以由人为来控制。就是你在表中多预留一些字段。10个少了。那就100个,1000个。。。。。。。。甚至可以更多。。
具体设计思想:
产品编号(主键) 产品名称 父接点 属性1 属性2 属性3 属性4 。。。。。更多
1 灯 0 价格 功耗 产地 数量
2 节能灯 1 价格 功耗 产地 技术 类型
3 台灯 1 。。。。
4 。。 0 。。。。 。。。。 。。。
5 。。。。 4 。。。。 。。。。 。。。 。。。 。。。
6 。。。 4 。。。 。。。 。。。 。。 。。
7 。。。 4 。。 。。。 。。。。 。。。 。。。
8 。。。 0 。。。 。。。 。。。。。 。。。 。。。
9 。。。。 8 。。。。。。。 。。。
10 。。。。。 8 。。 。。。 。。。。 。。。。 。。。

ID(主键) 产品编号 字段名 属性值
1 1 属性1 价格
2 1 属性2 功耗
3 1 属性3 产地
4 1 属性4 数量
5 1 属性5 。。
6 1 属性6 。。
7 1 属性7 。。
8 1 属性8 。。
9 1 属性9 。。
10 1 属性10 。。
…。。。。
。。。。。
。。。。。。
。。。。。。
下面还有很多
..
..

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧