现在发现,在设计数据库的时候,最好尽量让类似业务的表中的字段名保持一致,例如
入库单和销售单都设计成:单号,日期,金额
这样在很多后期处理时,例如做统计之类,只需要一个公用函数就可以处理了,可以少些很多代码!
菜鸟愚见,大家见笑了。

解决方案 »

  1.   

    表字段的设计,也可以从抽象基表开始。。我的表,表名都是tbXXXXX
    有几个必有的字段:fid:自动递增,内部关联id;fname:主要信息;fdeleted:删除标志(fwhen:创建时间;flast:最后修改时间;fwho:创建者)
      

  2.   

    相同,类似的业务字段应该是设计成一样的名字,最好搞一个清单,将常用的字段的名称和描述都列出来发给每一个人。每张表最好都设计 id int 自动递增标识,guid varchar(40),唯一标识,不包括{},orderindex int 排序如果是保存的树在添加一个 pid int 关于表和表之间的关系,如主从表,从表中用 oid int 来表示和主表的关系
    用 id 自动递增标识来做为表和表之间的关系字段,在查询上速度能比较快,但也会造成一些问题,主要是在数据进行移动时,如果主表从另一张表导入,会造成id 号和从表的不同,造成主从关系丢失。从表可以用 oguid (OwnerGUID) 来标识主表,这样虽然在速度上会有一点点影响,但在数据移动中会有很省事很多。主表名称 SYS_A
      id ,guid,orderindex,Code,Caption,Readme从表名称 SYS_B
      id,guid,orderindex,SYS_A_guid,其它字段如果是多对多的关系,则需要用一张中间表。
    如表 SYS_A和 SYS_B是多对多的关系,则中间表为 SYS_S_SYS_Bid,guid,orderindex,SYS_A_guid,SYS_B_guid在使用的时候可以写一些通用的方法来进行查询,
    如返回从表中的数据
    function SelectedDetail(MasterTableName,MasterGuid,DetailTableName:String)当然有guid 做为表之间的关系在一些情况下还是会有问题,一是各个关系都是GUID,你是不查询主表的话,
    从表中根本没法明白对应的是那条记录,如果使用业务中的一个不重复字段就会好很多,如设备表中保存的是一个工厂所有的设备,另一张表中保存的是每个设备的附属设备,因为每个设备都是不重复的设备编号,可以
    用它来做为从表的标识字段。一般用GUID就可以了,在删除,修改操作时用 id 
      

  3.   


    请问
    1,什么事抽象基表?能否说的具体一些,——目前的数据库不支持,只是自己建表设字段时注意必须复制那些字段
    2,你说的这几个字段,事每个表中都有的?——对,括号里的字段不一定有,看业务需要
    ——自动递增字段在系统数据合并转移时,会有冲突。ZyxIp说的guid能避免这个问题
      

  4.   

    '每张表最好都设计 id int 自动递增标识,guid varchar(40),唯一标识,不包括{},orderindex int 排序 '
    请问ZyxIp,这个guid是表自带的字段,还是手工创建的?
      

  5.   


    是自己手工创建的。delphi 中创建的 guid {CAF31A71-A021-4388-87DA-7317E60F796E} 总长是38,包括{},
    但在其它语言中 是不包括 {} 的。所以最好是用SQLServer数据库的 newid()  方法创建。用guid虽然速度慢一点,但应该决大数的业务都不会影响到的,在查询的时候最好不要用 * ,
    select id ,code,caption,业务字段  就可以了,做关联的时候如果要用到 guid ,也是传递id过去,在sql中查询出guid来。
      

  6.   

    guid,以前也就是听说过这么个东西,没想到还真有用,受教了!
    看来没白发这个帖子啊,哈哈。
      

  7.   

    學習了,在D中經常會用到GUID字段的
      

  8.   


    以前看到有人很详细的测评,说guid字段不慢,甚至比int还快,有点半信半疑
    但是也一直没怎么用guid,都是用自动递增的id不过自动递增的id在多系统数据合并时,的确是个大问题。
      

  9.   

    关于guid做为字符串保存时查询速度的问题也没有做过测试,只是觉得字符串对比应该没有整数来得的快。
    谁给咱搞个几十万条记录测试一下吧?原来也总是用id 做关联,但有上项目服务器端生成数据,下发给各人客户端,填报后在上报上来,用id真是费
    事的很,每个导入SQL都写很长,头都大了。
    自从用了GUID后,SQL短了,头也不痛了,睡眠也好,吃嘛嘛香。
      

  10.   

    guid是一个专门的类型,不是字符串
    如果字符串,那效率可能不会搞过int的多系统数据归并时,guid只是解决了关联的保持问题,id的使用区域还是会重叠啊