| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2151 人关注过本帖
标题:请问如何建立一个动态的数据库表?
只看楼主 加入收藏
zhong2312
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-9-7
收藏
 问题点数:0 回复次数:0 
请问如何建立一个动态的数据库表?
我的思路: (只写出最基本的必要属性)
数据表对象表(ID,表名,属性数)
表的属性表(ID,属性名,数据类型,所属表ID)
存储属性值表。(ID,值,属性ID,行ID,所属表ID)
行ID表(ID,数据表的属性表ID)

添加一个数据表:
数据表的属性表(ID=1,表名=test,属性数量=3)
表的属性表
ID,属性名,数据类型, 所属表ID
1    A        int         1
2    B        String      1
3    C        DATE        1

添加一行数据
行ID表
ID,数据表的属性表ID
1           1      
2           1
3           1   
存储属性值表。
ID, 值,属性ID,所属行ID,所属表ID
1   t1,  1        1       1
2   t2,  2        1       1
3   t3,  3        1       1
4   t21  1        2       1
5   t22  2        2       1
6   t23  3        2       1
7   t21  1        3       1
8   t2   2        3       1
9   t1   3        3       1
  
查找test的全部数据.

select t.* form  值表 t,数据表对象表 a where  t.所属表id=a.id and a.name=test order by t.所属行ID desc;

查找 test表的属性A=t21的数据

select t.* form 值表 t where t.所属行ID in(
select t.所属行ID form 值表 t,数据表对象表 a, 表的属性表 c where t.所属表id=a.id t.属性ID=c.id a.name=test and c.name="A" and t.值="t2")
order by t.所属行id desc;


我现在的问题是,由于属性值是存在同一个表的同一个字段里面。所以如何控制它的数据类型?我能想出的就是存储属性值表里面的“值”这个属性设为varchar(max)
然后通过代码来控制它的类型。
请问有没有更好的办法。或者说有没有一个更好的解决方案?

[ 本帖最后由 zhong2312 于 2012-9-7 23:25 编辑 ]
搜索更多相关主题的帖子: 数据表 数据库表 如何 动态 
2012-09-07 23:16
快速回复:请问如何建立一个动态的数据库表?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018593 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved