新到公司,发现数据库表建立的时候没有主键与表与表之间没有外键?

来源:百度知道 编辑:UC知道 时间:2024/06/25 03:36:52
是这样的,新到公司,才入职第二天,发现公司系统运行的数据库竟然没有主键与外键,我问我们的主管,他说是因为为了后期的扩展,如果加上键,则会有很多限制。但是我觉得在最初的时候,最好还是有主键外键比较好吧,这毕竟都是良性的约束。而现在正式库和测试库的表结构和表与表之间的关系都是一样的——没有键,而且系统已经在上面开发了很长时间了,数据量也很大了,这个时候我觉得,就算谁想往里面添加约束,估计也不是那么简单的事情了,肯定会丢失很多实际重要的数据。我的想问的问题是,在数据库建立之初就形成的这种不需要主键和外键的作法,是否在很多项目中都是这样的?小弟目前见识比较短浅,只碰到三个项目,而没有主键外键约束的数据库表实例这是第一个。

很多优秀的项目都没有主外键关系的

举个例子,一个张用户表,一张订单表,建立主外键关系
现在要删除这个用户,但是用户曾经有过订单(订单不能删除),你该怎么删除

约束表间关系的除了“主外键”,还有程序的逻辑性,触发器也可以

后期要改就费劲了,数据量大了难免有不在约束之内的,即使程序里面约束了也难免会有出格的数据,而没有约束在程序里也容易出现各种错误(关系特别简单的可能不会),绝大多数应该都是加主外键的

我们公司的2个网站,其中一个SQL2005的项目也是没有采用主外键的,其实这样做事很方便将来的扩展和更新的。必要的存储过程和系统视图到时必须的

这个倒不一定,如果设计时关系依存紧密的话,并且程序或表的触发器等控制处理得好的话,也是可以的!
如果在开发之初一定加上外键限制的话,很有可能会导致开发时有意外错误发生(例如:某字段确实可以剔除时)
当然,库表设计本来就是不断完善的,如果考虑充分的话,加上当然会更好

..........................

BC,不要主键