还是讨论创建主键问题(100分)

  • 主题发起人 主题发起人 sjm
  • 开始时间 开始时间
S

sjm

Unregistered / Unconfirmed
GUEST, unregistred user!
前两天曾提出什么情况下要创建主键的问题,得到的答复基本是说:只要表中的某列数据不能重复就创建主键,否则可以不用。不过很多数据库教科书都强调表一般都要有主键,而不管列是否数据不能重复才需创建,书中的原话是说:为表建一个名为id的字段,并设置为自增型,将该字段设置为主键不失为一个好主意。
我想知道的是:
1. 一个表若确实不设主键的话正式运行后会不会带来不利的影响?
2. 对于主从表中的从表,一般字段里均会有大量的内容重复的内容,是不是要像书上说的那样,另加一个自增型的id字段并设置它为主键,这样做会有何益处?
谢谢各位指教!
 
不设主键带最明显的后果是无法删除,修改数据的。查询也有问题
 
这么说每个数据表还是应该创建主键了,对吗?
 
一般是的
 
其實我對主键的見解是...
他是一個關聯...
是和其他数据表的關聯...
因為對卡其他数据表...那個只不過是一個數字,但...只要查询出來..就會發現...
那個數字所帶來的不是一個數字那麼簡單..
 
一定要有主鍵,不然就不要使用關係型數據庫了
 
设不设主键要看数据库而定,主键在关系数据库中比较重要,没设主键容易造成数据的记录重复,对数据库添加,删除,修改会有影响!当你想修改,删除一条数据时,往往改动的不止一条数据!
 
这个不能说一定。只能说最好要加。

主从表,主表加主键最好加在外键上
 
实体完整性要求表有主键
引用完整性要求表的外键
用来表示联系的表,如是M:N关系化出的表,主键同时也应是外键
主键代表了作者对实体在区分性上的认识
 
可以不设主键,但一定要有索引,否则大数据量时影响速度.
 
既然有主张数据表一定要加主键的,我想问一下像从表这样的里面有很多重复内容的表主键如何创建?
 
举个例子:
以进销存为例:
销售单主表:
Sell_Bill 表:
主键: Sell_Billid 销售单号为主键
销售单从表:
Sell_DetailBill:
这样如果还是以销售单号为主键肯定不行,因为销售单号肯定有重复的,因为一个销售单有多个产品.
这时可以多个字段来做联合主键
可以把Sell_Billid 和Goods_id 销售单号和产品编号来做为联合主键就行了.
总之,如果一个表的数据不能重复,一定要用主键,否则可以不用主键,但要建索引,主键就是一个索引.
 
to 李翔鹏:
谢谢指教。想问一下对于主从表而言主键应创建在主表还是从表还是两者都创建?另外,与别的表无关联的表是否不需要创建主键?
 
两个都创建阿.
 
数据不能重复的表要创建主键,否则可以不创建,但数据量大的表最好要创建索引,否则速度太慢。
 
就以你上面的例子为例,你那个从表用什么字段建主键呢?
 
以把Sell_Billid 和Goods_id 销售单号和产品编号来做为联合主键就行了
 
我不是说的很清楚了吗
 
你那个字段不都是在主表里吗?
 
后退
顶部