求数据表设计的经验,高人有更好的方法吗?
在设计数据表的时候常遇到这样一个问题?简单举例如下:
表1:用户表(字段如下)
ID(编号) name(姓名) camera(相机型号) ???
int String ??? ???
表2:相机型号表(字段如下)
ID(编号) camera(相机型号)
int String
假设ID都是主键,自动增加,不可编辑的。
在这个例子中,这两个表的内容都是可以自由操作的(CRUD)。
问题是:用户表怎么去设计比较合理,又方便操作???
1。表1的字段“camera”设为INT型,存放表2的ID,当查询表1要得到记录的详细信息时,用JOIN连接查询,就可以得到用户的相机型号。这样做的好处是,当表2某记录修改后,表1就不用动了;但是当表2某记录被删后,用JOIN连接查询就得不到表1的用户信息了,只查表1又得不到完整信息。
2。表1的字段“camera”设为STRING型,存放表2的“camera”,当查询时只查表1就行了;但是当表2某记录修改后,还要改表1,有些麻烦。
3。表1的字段“camera”设为INT型,存放表2的ID;然后在表1中增加一个字段“?”并设为STRING型,来存放表2的“camera”。当修改表2时,通过ID去修改表1,这样虽可省去些麻烦,但为了在查询时只查表1,还是要修改表1的“?”字段。
4。在方法3的基础上,修改了表2后不修改表1,改成定期全体UPDATE,这样造成的问题就是查询表1时得到的信息不及时。
各位高人们是怎么做的,求刺教!!!