我正在为一家小公司制作一个sql数据库..几乎其他表与问题无关,所以列出了这两个问题......
有一张桌子:
NextofKin:
fname
lname
street
no
houseno
city
和
Patient:
ID[pk]
fname
lname
houseno
city
我需要一张适合街道,房屋和城市的独立桌子吗?
还知道我可以用作NextOfKin的主键吗?
答案 0 :(得分:1)
您的问题开始进入database normalization。
应该做什么从不在表之间复制数据,除非该数据与表相关,并且该数据应该被编入索引。会想到这样的事情(根据业务逻辑,可以采用不同的方式构建它)
当然,大多数表已经存在,所以这可能是不可能的。但是直接回答你的问题,既然数据库已经没有正常化,那么就没有好的地方可以放置更多的地址记录(不要在Patient
下想要它们吗?)所以你&#39 ;重复粘贴数据。即便如此,Patient
和NextOfKin
之间也必须存在某些关系,因此Patient
或NextOfKin
或[{1}}都会引用NextOfKin
或{{1}} hods引用患者。无论哪种方式,您可以考虑在它们之间使用外键来强制执行并明确说明这种关系。
答案 1 :(得分:1)
是的,请使用pk作为近亲。
在患者和近亲之间使用连接表。多个患者可以将同一个人列为近亲,虽然您的应用程序今天可能不需要有人将多个人指定为近亲,但他们将来可能会改变主意,您的应用程序将支持它。
我自己,我总是使用一个单独的地址表。由于通常不止一个人住在一所房子里,一个人可以有一个以上的房子,你会再次使用一个连接桌。