雅绝对分离地址更好因为人们可以有多个地址,所以它会增加数据冗余。
您可以根据我以两种方式为这个问题设计数据库。
A.使用一个表
表名--- ADDRESS
列名称
- 序列号(唯一ID或主键)
- 客户端/员工ID
- 地址。
B.使用两个表
表的名字--- CLIENT_ADDRESS
列名
- 序列号(唯一的ID或主键)
- 客户端ID(外键的客户表)
- 地址。
表名--- EMPLOYEE_ADDRESS
列名称
- 序列号(唯一ID或主键)
- 客户端ID(外键雇员表)
- 地址。
当然,你可以使用尽可能多的列数,而不是地址就像你所提到的单位,建筑物,街道等
也有是从我的经验,一个建议
请在您的每个表格中添加这五列。
- CREATED_BY(谁创造了此行意味着应用程序的用户)
- CREATED_ON(在创建什么时间和日期表行)
- MODIFIED_ON(谁修改了该行指的一个用户应用程序)
- MODIFIED_BY(在什么时间和日期表行修改)
- DELETE_FLAG(0 - 删除,1 - 主动)
ŧ他从大多数开发人员的角度来看这个原因是,你的客户可以随时请求任何时间段的记录。所以,如果你在现实中删除,那么对你来说这将是一个严重的情况。因此,每当应用程序用户从gui删除记录时,您必须将该标志设置为0,而不是实际删除它。默认值是1,这意味着该行仍处于活动状态。这是从我的经验建议:
在检索的时候,你可以在那里像这样
select * from EMPOLOYEE_TABLE where DELETE_FLAG = 1;
注意条件进行选择。我根本没有强制你采纳这一点。所以请根据您的要求添加它。
另外,没有任何重要目的的表不需要这个。
看看这个:http://stackoverflow.com/questions/6576442/should-user-and-address-be-in-separate-tables – passion 2013-04-20 08:18:23