有经验的高手请进:字段的设计,此字段唯一,且与别的字段无联系!请问此字段的该怎么设计?(100分)

  • 主题发起人 主题发起人 guan1573
  • 开始时间 开始时间
G

guan1573

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表示文件分类的表,其中有一个字段是分类代号,此字段只是为了
保证分类的唯一,请问此字段应该怎样设计?
 
整型。
但要有个配套的编码表。
 
设为主键
 
字符串
自己来控制它的唯一 如 yyyymmdd+流水号
 
建索引,如用Access,可指定不允许重复,如用MS SQL,可创建Unique索引
 
不行,我得这个字段非常重要,要以此字段作为名称生产一个文件夹或者文件,
而且将来可能有10万条记录,就是大约有10万个文件要依靠此字段来保存!
一定要保证此字段的唯一性,且一定要保证维护性好.
 
索引是一定要建立,我只是想知道此字段该怎样编?
liudz大约领会了我得意思
 
我认为是VARCHAR(12)的字段,当然有几种方法,看看具体有什么用了:
1.最好是可自已控制的,不然以后会很麻烦,方法是MAX + 1。
2.最好这可代表在系统表中的行数,而且这样定义对于以后要取数来说比较容易,
因为数据大了的话,查找和打开数据控件时就会很慢,所以这样定义就比较快点。
每次在数据库打开冒就取一定的数出来,比如1000条。这样会快很多。
3.象liudz说的也行,不过,如果还有一个对应DATE字段的话,我觉得就没必要了。
因为可以用DATE加此字段来查记录。此字段功能越少越好。越具体越好。
我这算是抛砖引玉吧,希望能有更好的方法。。。。。
 
我认为加上一个数字型字段就可以了,很多作论坛的数据库都是用一个数字字段来
索引的。
 
字段值肯定是用程序来控制的,也不可能用数据库里的递增字段来控制。
to ZergWang
你说的max+1什么意思?
2.最好这可代表在系统表中的行数,而且这样定义对于以后要取数来说比较容易,
什么意思?
to ZergWang,astart,
只用流水号来作为字段值,
比如从100开始,那么我的文件就是以100,101,102,103,104........等文件名来保存
,我总觉着有后患,我以前没有用过这种方式,这样可以吗?
我觉着用yyyymmdd+流水号,到也可以考虑!
谢谢大家的帮忙~


 
可以用自动增长的域来解决。
也可以把字段设成18位。yyyymmddhhsszzz+流水号。流水号用三位,这样可以保证每毫秒有一千条记录,足够用了。
 
hheh, as;dkfaskjd;aksdjf
 
to guan1573:

1.MAX + 1 就是当前最大行数加1.
2.你觉得有后患,说得没错。如果加了这又加了那的,以后文件名改了。就要改ID,
太多后果了,我说不清楚会有什么,但我曾经这样做过,确实遇到过很多麻烦。所以才会建议ID只用行号来表示。
3.会在很多时候,要取一些特定的记录出来,比如53000-54000行记录,这时你会怎么去取?
4.一般情况下可以用自动ID。
不说了,其实什么方法都可以,只看自己喜欢了。
程序里,最大的乐趣就是能发挥自己的个性。
我说的东西你可能不理解,如果你不喜欢,你就照你喜欢的去做吧。
做自己喜欢的程序.....
 
在数据库中创建一个SEQUENCE,比如SQ_TEST(MIN=1,MAX=9999999999),
把你的这个字段设置为数字型,
然后在每次添加记录的时候都SELECT SR.CURRVAL FROM DUAL 得到此SEQUENCE的数字,
我包你不会重复。
 
to ZergWang,
我喜欢的就是便于维护,产生的后患越少越好!谢谢你的帮忙!
to 大家
我再想问一下:我还有一个担心的事!
我做了两个表,一个表是生成代号的表1,一个是记录实际数据的表2,表1生成的代号
在表2中做主键,这样表2和表1只有这样一个字段相关连,是不是会有什么祸患呢?
我担心!
谢谢各位
 
1。要建立索引,无重复,保证唯一。
2。可形成逻辑主键(char),即有标志意义的字母+id号。
 
to guan1573:
我认为基本上没什么后患,这样做有一个好处,就是一些被修改或删除了的记录号还能被使用。
只是做起来麻烦一点点,而且又占空间这样子。
如果不是太重要的话,其实不用这么麻烦去做,曾经你的想法我也做过,
不过,觉得太多情况下是没有必要的,只在特殊情况下有用,比如为了表示发票号之类的
很重要的号码。(因为发票号做废的要能重用)。
因为你没说太清楚你究竟想做什么,所以只能你自己决定了。
这只是我个人的意见。
 
to qdgm988大虾
谢谢你的帮忙!:)
to ZergWang,
你说的不错,如果处理好了,不会有什么问题,
对我来说,当删除主表的记录时,生成代号的表的记录会产生多余的记录,
而这些多余的代号我不需要再用它(不象发票等),我只需要在我删除主表的
记录时,同时删除代号表的记录,以防止有那么多多余的记录。
不知道我的表达你是否清楚。
也不知道我得想法合不合理?
谢谢!

 
好久没来大富翁了,不知道兄弟的问题解决了没有?
兄弟说的应该没有什么问题。去做就是了。没关系的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部