people表
id peoplename
orders表
id productname people(请问这里存people的id还是直接复制字段)
直接放id的话,如果people被删除的话,怎么办?
直接复制字段的话,如果修改people表中的数据,同时也要修改orders表的数据对吗?
这两种理解对吗?
大家平时实际操作的时候怎么处理的
谢谢
第一选择放id, 加外键约束. 关于你说的"直接放id的话,如果people被删除的话,怎么办", mysql在外键约束上有三个选项:
1. CASCADE: people表删除, 相应的order表的 记录也被删掉;
2. SET NULL: people表删除, 相应的order表的 记录 的列被置空;
3. RESTRICT(NO ACTION): 如果order表有相应的记录, 则对people表的删除 不被允许.
见: http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
这大概可以解决你的问题了.
对存people直接复制字段, 除非这里的 people, order表操作 确实成为了性能瓶颈, 并且实测 直接复制字段 确实可以提高性能. 这样增加了冗余数据, 缺点: 1. 需要的存储空间增大; 2. 需要自己维护 order表和 people表的冗余字段.