数据库的表和字段的注释。表的结构

Posted on 2005-12-08 12:03 Raistlin 阅读(1184) 评论(0)  编辑 收藏 引用 所属分类: Database
这里的表结构指的表的基本信息:表名,表的注释(备注),字段名,字段类型,长度,是否允许空,缺省值,字段注释(备注)。
 
主要的是注释..你的表名叫lcxxb,字段名叫lcmc,智商300的用户也看不懂你这是拼音,意思是"流程信息表"和"流程名称"。大家的思路都不一样。

我要做到的就是让用户看到的是"流程信息表"和"流程名称"而实际操作的是lcxxb和lcmc。
你自己建个表XXX来保存lcxxb,lcmc和"流程信息表","流程名称"的对映吧。是相当麻烦的事情,
1,造成数据冗余,人家数据库基本上都能让你给表和字段写注释,你还自己搞一套..
2,每次修改表都要去修改一下这张表,删除的表和字段要删除,更新的表和字段要更新,新建的表和字段要新建,累..
3,每次创建数据库都要独立的再填写表XXX的内容。每次修改了数据库设计,创建数据库的程序也要跟着修改。
所以俺还是老老实实用数据库提供的注释或备注或数据字典功能吧。

但是这又涉及一个问题:各种数据库保存注释(备注)的方法不一样,虽然现在只用MS Sql server,但难保以后不会用Oracle。要不是大家都各搞一套,巴别塔也许早就建成了。
 
SQL server下的方法(摘自 SQL Server下生成数据库框架):
SQL Server下生成数据库框架。
经过反复学习和测试,最后发现自定义的视图才能简单地胜任所需要的工作,否则把事情会变得很复杂。
视图代码如下
CREATE VIEW dbo.Data_Frame
AS
SELECT dbo.syscolumns.name AS Name, dbo.systypes.name AS Type,
      dbo.syscolumns.length AS Width, dbo.syscolumns.isnullable AS IsNull,
      dbo.sysproperties.[value], dbo.sysobjects.name AS Table_Name
FROM dbo.sysobjects INNER JOIN
      dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id INNER JOIN
      dbo.sysproperties ON dbo.syscolumns.colid = dbo.sysproperties.smallid AND
      dbo.syscolumns.id = dbo.sysproperties.id INNER JOIN
      dbo.systypes ON dbo.syscolumns.xtype = dbo.systypes.xtype AND
      dbo.syscolumns.xusertype = dbo.systypes.xusertype

最后输出的是:
列名
系统类型
限制长度
是否允许为空
备注
所在表
可以进一步根据需要增加/删除自己希望的部分。
调用:
Select * From [自定义的视图名称] Where Table_Name='[希望检索的表名]'

或者 取得一个表中所有的字段列表及字段描述的方法:
字段名列表:
select Name from syscolumns where id=object_id('custmoerinfo')
字段描述:
select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', 'custmoerinfo','column', default)

ORACLE下的方法(摘自Oracle数据字典的介绍与应用实例):
ORACLE自己搞了一套数据字典创建表的SQL语句如下
--" 创建数据表
create table TABLE_TEST
(
  NAME varchar2(40) not null,
  SEX varchar2(1) default 'Y' not null,
  BIRTHDAY date not null,
  HEIGHT number(3,2),
  WEIGHT number(3,2),
  MEMO blob
);
-- 给列添加备注
  comment on column TABLE_TEST.NAME is '姓名';
  comment on column TABLE_TEST.SEX is '性别';
  comment on column TABLE_TEST.BIRTHDAY is '生日';
  comment on column TABLE_TEST.HEIGHT is '身高';
  comment on column TABLE_TEST.WEIGHT is '体重';
  comment on column TABLE_TEST.MEMO is '备注';
-- 创建约束关系 主键 外键 其他
  alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (NAME);
  
数据表创建完毕,执行下列SQL语句:
  select
  A.column_name 字段名,A.data_type 数据类型,A.data_length 长度,A.data_precision 整数位,
  A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备注
  from
  user_tab_columns A,user_col_comments B
  where
  A.Table_Name = B.Table_Name
  and A.Column_Name = B.Column_Name
  and A.Table_Name = 'TABLE_TEST'
  
我们可以得出以下结果:
字段名 数据类型 长度 整数位 小数位 允许空值 缺省值 备注
Name varchar2 40     N <long> 姓名
Sex varchar2 1     N <long> 性别
........


 

学习数据库的一些资料:

存储过程的好处:1编译2封装3重复使用4安全性5减少网络流量

JDBC读取字段需要按顺序的原因?:SQL数据库在构造虚拟表的时候就是以一种先进先出的原则,把所有的数据排列在一个内存段之中,通过顺序的读取,将数据逐一的读取,而如果跳过某个具体的字段获取下一个字段的信息,系统就会将原来的那个字段的信息丢失,以释放内存,这是出于系统构造的简单性和系统的内存最低化的要求,所以这样也保证了有限的内存资源得到最充分的发挥。?

在SQL Server中保存和输出图片http://www.pcdog.com/p/html/2004124/41220041381_1.htm

很好的一个电子书下载地址http://www.ibook8.com/book/shuju.htm

只有注册用户登录后才能发表评论。

posts - 49, comments - 14, trackbacks - 0, articles - 0

Copyright © Raistlin