求数据表设计的经验,高人有更好的方法吗?

在设计数据表的时候常遇到这样一个问题?简单举例如下:

表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时得到的信息不及时。

各位高人们是怎么做的,求刺教!!!

老板,给解答一下吧???

都过节去了,没人了55555555
555
555
555

>>>>但是当表2某记录被删后,用JOIN连接查询就得不到表1的用户信息了,只查表1又得不到完整信息。


为什么得不到表一的用户信息?不是join么

为什么要这样设计表啊?
你这样设计本身有缺陷。
你是把两个表之间的关系放到了其中一个标表中才出现你说的问题
我认为正确的做法应该是把2表的关系单独建立一张表
你就有3张表: 个人信息,人相机关系,相机信息
这样应该不会出现你说的问题

一直想学JSF,可是没合适的可视工具。GOOGLE一把看到你的wowdkp例子,还来不及研究。
先回答一下你的问题。
你可以采用SQL 92标准的 OUTER LEFT JOIN 或 RIGHT JOIN解决。
就是不知道你用的是何数据库。我用的是Oracle 9i 是支持的。

你的例子中用到了Myfaces的tomahawk,但steady c
(一位JSF高手)提示我Myfaces不直接支持可视开发。我的应用基本上是一些CRUD应用,再加上部分custom event.就如同Myfaces的DEMO例子差不多。请问你的JSF页面是手工写的,还是采用了可视化工具?