首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于ERD创建ERD和SQL表

基于ERD创建ERD和SQL表
EN

Stack Overflow用户
提问于 2018-12-16 09:53:55
回答 1查看 2.3K关注 0票数 2

我有一项任务,根据给定的故事创建一个ERD,然后制作表格,并根据给定的信息构建一个数据库。

故事是:

有一家房地产公司:

  • 出售的房屋位于一个特定的社区。
  • 每一个社区都是一个城市的一部分(我们知道,在一个城市里有很多社区)
  • 每栋房子都来自一种房屋类型,如:别墅、公寓、阁楼等。
  • 每间房子都有一位业主,是公司的客户。
  • (房子的)出售给新主人(公司的客户),而在出售时,顾客只能买一套房子。
  • 销售是由销售员(公司工作人员)进行的。
  • 每个销售员都专门研究不同的房子类型,有时也有几个销售员专门从事同一类型的房子。

我想出的ERD看起来是这样的:

我成功构建的表是:

我很确定,从ERD开始,我把一些表弄错了。

在我创建我的数据库之前,非常感谢在设置正确的表方面提供一些帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-12-16 15:52:20

我仔细检查了您的设计,确实需要一些改进才能适当地适应您的用例。

以下假设得到了适当实施(不过,可以对字段名进行改进):

  • 出售的房屋位于特定的邻里。 => 1-N与Neighborhood.NeighborhoodIDHouse.NeighborhoodID的关系
  • 每一个社区都是一个城市的一部分(我们知道,在一个城市里有很多社区) => 1-N与City.CityIDHouse.CityID的关系
  • 每栋房子都来自一种房屋类型,如:别墅、公寓、阁楼等。 => 1-N与HouseType.HouseTypeIDHouse.HouseTypeID的关系

模式中没有正确实现以下假设:

  • 每间房子都有一位业主,是公司的客户。 =>This是一个1-N关系.您需要在House中创建一个名为CustomerID的新字段,该字段引用Customer.CustomerID。另外,您需要创建一个新表Company,它存储公司信息(不要将其存储在Customer表中!)。必须在引用CompanyID表的主键的表Customer中创建一个名为Company的字段。在HouseID表中不应该有一个Customer列。
  • (房子的)出售给新主人(公司的客户),而在出售时,顾客只能买一套房子。 => Sale表将包含每次销售的一个记录。它引用了CustomerIDSalesManID (请参阅进一步)。在SalesID表中不应该有一个Customer列。
  • 销售是由销售员(公司工作人员)进行的。 => SalesMan表应该有一个引用Company表的CompanyID字段
  • 每个销售员专门研究不同的房屋类型,有时有几个销售员专门从事相同的房屋类型=> SalesMan表应该有一个引用HouseType表的HouseTypeID字段。应该删除表SalesManToHouseType

另一个注意事项是,您应该简化字段的名称。不需要在字段名前加上表的名称,因为字段已经属于表.这只有在处理外键时才有意义,因为在引用字段名中放置目标表名是一种很好的做法。

House的示例:

代码语言:javascript
复制
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
...

HouseType的示例:

代码语言:javascript
复制
ID               -- not HouseTypeID !
Name             -- not HouseTypeName !
Description
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53801098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档