公司sql server ID格式
user0001 (一个前缀+自增序号)
理由是
但是感觉这样有很大缺陷
其他方案:snowflake,sql server 2012有自增序列,guid
snowflake这个是应用到比较大型的业务上的,所以目前业务上还不需要这种算法,目前也不好升级到sql server2012,
想问一下大家的ID是使用什么方案的?
id真的需要携带其他信息吗?
公司没DBA,也没办法说服设计数据库的使用自增ID。想知道大家对ID设计的看法
我觉得有点舍本逐末。如果仅仅是为了方便查看,这么做不值得,太鸡肋,数据多了也浪费性能。GUID也不推荐,会造成存储碎片话。如果没有什么特殊需求,自增主键是最好的。Id不要带业务信息,它的作用就是唯一标志而已。
设计数据库的人一时脑抽了吧,就算是要看出id是哪个表的也可以根据列名来看,比如user表的id可以叫userid,为什么要从数据看出是那个表的,令人费解。
难道要把不同表的id放到一起?然后根据id前缀进行不同的操作?太狗血了
会长大大能不能帮我看下我的那个socket的问题。。。
@小光: 好久没搞过了,年轻人的时候做作业搞过,好久了
@会长: 嗯,我再看看
@小光:
看了你的问题了
一般服务端不会主动关闭socket连接
数据发送也不是一次全部发送过去的
比如说你分两次发送“123456”,“abcdef”,然后网络不好的时候,服务端可能分三次接收“123” “456ab” "cdef",所以你服务端一次outputstream不会获取完客户端两次发送过来的内容,可能只接收到了“123”。然后这时候你就把socket关闭了,客户端还正在发送“abcdef”,这时候当然会报错。
还没这么狗血的程度,我自己是真恶心这种ID,只能想办法减少这类的ID了
@海之殇: 我把close注释掉也一样,在没close的时候客户端第二次获取soket的流就获取不到了
Exception in thread "main" java.net.SocketException: Socket is closed
at java.net.Socket.getInputStream(Socket.java:903)
@小光:
关闭返回的 OutputStream 将关闭关联套接字
我是搞.net的,对socket原理还算懂点,所以知道不是socket问题,就猜是api问题,然后就查到这个。
你要玩socket建议你看一下TCP/IP详解
@海之殇: 查到了,麻烦了
@海之殇: 来问题评论一下,我结不了贴。。。。,有豆子你也好问问题
@小光: 评论了,确实挺缺豆,哈哈
没必要把,在什么表中id就是那个表的唯一标识,也就知道它是什么id
我们之前项目id是根据当前时间根据一定的计算算出来的,所以不会重复
id代表存储地址,为了统一简单没必要和业务id 模糊一起;当没业务id仍然需要存储id;因此直接所有上id。
这跟面向对象内部代码不一样,这层给你封装了 —— 叫引用。
但对外接口代码通行方式仍然这样,所以你能在各种场所看到handle。
所以无路怎么样,为找到该数据提供一个地址id。
小的我感觉没必要啊 非得根据id去看这个人么 不能去看别的字段?比如 username之类的 何必去看id。