我分配了一个任务,从给定的故事创建ERD,然后制作表并使用给定的信息构建数据库。
故事是:
有一家房地产公司:
我设法提出的ERD看起来像这样:
我设法建立的表是:
我很确定我从ERD开始犯了一些错误的表。
在创建数据库之前,非常感谢您提供一些有关设置正确表的帮助。
答案 0 :(得分:0)
我仔细检查了您的设计,确实需要进行一些改进才能正确适合您的用例。
以下假设已正确实现(但可以改进字段名称):
待售房屋位于特定的邻居
=> Neighborhood.NeighborhoodID
和House.NeighborhoodID
每个社区都是城市的一部分(众所周知,在城市中,社区很多)
=> City.CityID
与House.CityID
每所房子都来自房屋类型,例如:别墅,公寓,顶层公寓等。
=> HouseType.HouseTypeID
和{之间的1-N关系{1}}
以下假设未在您的模式中正确实现:
每个房屋都有一个所有者,该所有者是公司的客户
=>这是1-N关系。您需要在House.HouseTypeID
中创建一个名为House
的新字段,该字段引用CustomerID
。另外,您需要创建一个新表Customer.CustomerID
,用于存储公司信息(不要将其存储在Company
表中!)。必须在表Customer
中创建一个名为CompanyID
的字段,该字段引用Customer
表的主键。 Company
表中不应有HouseID
列。
向新的所有者(公司的客户)出售(房屋),而在出售中,客户只能购买一所房屋
=> Customer
表每次销售将包含一条记录。它引用了Sale
和CustomerID
(请参见进一步)。 SalesManID
表中不应有SalesID
列。
由销售员(公司工作人员)进行的销售
=> Customer
表中应有一个SalesMan
字段,该字段引用了CompanyID
表
每个推销员都专门研究不同的房屋类型,有时有几个推销员专门研究相同的房屋类型 => Company
表中应包含一个{{1}引用SalesMan
表的}字段。表HouseTypeID
应该被删除
另一句话是您应该简化字段名称。无需在字段名前加上表名,因为字段已经属于表了……仅在处理外键时才有意义,在这种情况下,最好将目标表名放在引用中字段名称。
表HouseType
的示例:
SalesManToHouseType
表House
的示例:
ID -- not HouseID !
HouseTypeID -- foreign key to field ID in table HouseType
NeighborhoodID -- foreign key to field ID in table Neighborhood
CustomerID -- foreign key to field ID in table Customer
Address
NumRooms
...