数据库逻辑设计:区分下面例子中的实体与联系

表如下:
学生student:(学号SNo(主码),姓名SName,性别SSex,年龄SAge,班级Grade,
学院College,专业Major,Phone,密码Password) ;
医生doctor :(编号DNo(主码),姓名DName,性别DSex,年龄DAge,所在药房Room,
密码Password );
药品medicine:(编号MNo(主码),名称MName,型号MStyle,价格MPrice,注意事项MTip,医保比例selfPercent)
药房Pharmacy :( 编号PHNo(主码),位置PHName)
医疗记录Record:(编号RNo,处方编号PNo,时间RDate,SelfPrice,FreePrice,学号SNo,诊断医师编号DNo)
主键:RNo,PNo
外键:SNo references Student(SNo)
DNo references Doctor(DNo)
处方Prescription: (编号PNo,时间PDate,学号SNo,诊断医师编号DNo)
主键:PNo
外键:SNo references Student(SNo)
DNo references Doctor(DNo)
库存量StoreAmount:(药物编号MNo,药房编号PHNo,现库存量)
主键:MNo,PHNo
外键:MNo references Medicine(MNo)
PHNo references Pharmacy(PHNo)
过敏药物Allergy: (药物编号MNo,学号SNo,处方编号PNo)
主键:MNo,SNo
外键:MNo references Medicine(MNo)
SNo references Student(SNo)
PNo references Prescription (PNo)
-------------------------------------------------------------------------------------------------------------------
请好心人帮我看看上面表中,哪些可以当作实体?哪些可以当作联系

你把主码和外键都给出了,不就是把表都定义好了吗?那它们的关系肯定已经是清楚的了。你的问题不是设计,而是反推设计过程。

(1)学生、医生、药品,这肯定都是实体;
(2)药房,有“位置”属性,还和医生、药品有复杂的联系,所以也应该是实体;
而【药房-医生】这个1:n的联系,已经归并为后者的属性了;

(3)医疗记录:应该是【医生-学生】间的一种联系——诊疗;这是一个m:n的联系,还具有“时间”、“费用”、“处方”等属性,所以就转化成现在的表了;

(4)处方:应该医疗记录的一个属性。如果它有复杂的内部结构,就可以作为一个单独实体。但从你设计的表来看,它的几个属性都已经在医疗记录中包含了。所以你得想想,有必要把它分离出来吗?

(5)库存量:是从【药房-药品】这个m:n联系转化来的;
(6)过敏药物:是【药品-学生-处方】间的m:n:1联系;(不过从这个关系看,似乎不应该叫做“过敏药物”,而应该叫做“过敏记录”,你觉得呢?)

最后说一点:处方和医疗记录、过敏药物间的关系不是很清楚,你最好再优化一下。
温馨提示:答案为网友推荐,仅供参考
相似回答