可以多次使用来自不同用户视图的属性吗?

时间:2013-10-21 20:38:02

标签: database-design relational-database normalization

基本上,我的小组和我必须为3NF以下的用户视图创建标准化,现在所有的用户视图都是针对Seneca College Daycare,总共有5个用户视图,每个用户视图都有很多东西,但是主要是用户视图1-4是关于孩子,父母和工人,userview 5是付款表单。

例如:用户视图1

        CHILDREN
NAME    OHIP#      DATE OF BIRTH       ALLERGY(S)   TYLENOL PERMITTED
Kevin   5334447772  Nov 2, 1999    Penicillin, Egg      Yes
Mary    4333445355  Sept 4, 1997    Egg                 Yes

我们的3NF归结为(我的伴侣所做的)

  

表格[F_ID,校园,签名,日期P]

     

注册[R_ID,L_Name,F_Name,Relation,Apt,PosC,Hphone,Wphone,   E_Call,OHIP]

     

地址[PosC,地址,城市]

     

FormReg [F_ID,R_ID,日期]

     

RegOAA [R_ID,OAA_ID,关系]

     

OAA [OAA_ID,F_Name,L_Name,HPhone,WPhone]

     

儿童[OHIP,L_Name,F_Name,Birth,Allergys,Tylenol]

userview 2

http://i.imgur.com/4yEkqvZ.jpg?1(太多细节要粘贴在这里,所以我上传了prnt scrn)

现在我所说的3nf是

3NF
ChildDetail [Campus, Child#, ChildName, ChildBday, Allergy]
Manager [Manager#, Manager]
Supervisor [Supervisor#, Supervisor]
Worker [ChildWrkrs#, ChildWrkrs]
Family [Fam#, FamPhone#]
然而,我的合作伙伴说我们仍然应该使用他从Userview 1中提出的OHIP主键

他想出了这个

  

StaffAssign [Campus,Manager_ID,L_Name,F_Name]

     

房间[RoomNum,RDescrip]

     

Room_Staff [校园,RoomNum,Staff_ID,OHIP]

     

员工[Staff_ID,L_Name,F_Name,Occupation]

     

儿童[OHIP,L_Name,F_Name,Allergie,Birth,F_ID,E_Call]

现在,根据我的理解,如果我的理解是正确的,我们就不能使用用户视图中不存在的属性,对吧?所以从用户视图1中取出OHIP并将其添加到用户视图2应该不起作用,对吗?

我们一直在谈论它,不幸的是我们无法联系到我们的教授,所以我希望有人能够在这里提供帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

所以我发现只要符合某些条件,就有可能。

如果您拥有来自不同用户视图的属性,只要主键相同,它们就可以合并。这成为一种累积设计。

这种情况的一个例子如下:

1ST USER VIEW – OLD CUMULATIVE DESIGN

Part[Part#, description, unit_price, qty_on_hand]
Order_part[Order#, part#, sold_quantity, sold_price]
FK  order#  order
FK  part#  part

ORDER[order#, ordDate, cust#]
FK  cust#  customer
CUSTOMER[Cust#,  cName]

NEW CUMULATIVE DESIGN

PART[Part#, description, class, price, qty_on_hand]
CLASS[Class, class_desc]
ORDER_PART[ Part#, order#, quantity,  quotedPrice]
ORDER[ ord#,  ordDate, cust#]  
CUSTOMER[cust#, cName, street, city, zip, prov, country, balance, creditLimit, rep#]
REP [Rep#, rName, com_perct]

正如您在示例中所看到的,PART字段具有相同的数据,但是,在新设计中,您将看到“class”作为附加条件。这没关系,因为在另一个用户视图中,Parts表有一个额外的属性定义为'class',主键没有改变,所以所有这一切,我们将旧设计与找到的新信息合并,并创建一种新的累积设计。

因此,只要条件得到满足,就可以完成“转移/使用”或者更确切地将先前用户视图中的属性合并到另一个用户视图中(只要它们是相关的,并且主键是相同的)。 / p>

修改 另外,只是为了做笔记,即使用户视图中不存在属性,也可以创建自己的属性。

例如,您填写表格,有很多标准可供使用,但表格可以提交到许多地方,只要您在那里注册,每个地点都可以使用,你可以创建一个允许您跟踪每个表单的属性,“registration_id”作为示例。