在本文中,我们将在访谈中讨论一些与数据库设计有关的常见问题。在这里,我们将讨论面对数据库设计面试时要牢记的几点。
数据库设计本身就是信息技术行业中完整的领域之一。每个IT组织在开发应用程序或项目时都将精力集中在数据库设计部分。在这个领域,您可以专门作为数据库设计人员工作,这在IT行业中是苛刻的要求。
对于数据库设计者角色,您必须具有数据库设计基本原理部分的丰富知识。您必须具有如何根据客户的指定要求为应用程序设计良好的数据库模型的丰富知识。
面试官要求设计数据库供个人使用。进行此类问题的最佳方法是逐步进行,并遵循从上而下的方法,这种方法从较宽的角度转向较窄的角度。可能还会注意到这种方法与面向对象设计方法之间的相似之处。
1.处理歧义:
数据库问题通常有意或无意地存在歧义。在进行设计之前,必须准确了解您需要进行的设计。
所要解决的主要问题是设计一个代表公寓出租代理商的系统。现在,设计人员将需要知道该代理商是在多个地点还是仅一个地点。因此,候选人还应该与您的面试官讨论外观设计的一般性。
例如,一个人在同一座建筑物中租用两套公寓将是极为罕见的。但这是否意味着设计不应处理该问题(也许,也许不能)。某些非常罕见的情况可能最好通过解决方法来处理(例如,在数据库中复制此人的联系信息)。
2.定义核心对象:
接下来,设计人员应查看构建基础所需的系统核心对象。这些核心对象通常每个都转换为一个表。在这种情况下,我们的核心对象可能是“物业”,“建筑物”,“公寓”,“租户”和“管理者”。
3.分析关系:
提出的一个主要问题是,概述核心对象应该使我们对表应该是什么有一个很好的认识。这些表如何相互关联,需要回答它们是多对多还是一对多。
如果建筑物与公寓有一对多关系(一个建筑物有许多公寓),则可以表示如下。
Apartment ID int
ApartmentAddress varchar(100)
BuildingID int
BuildingID int
BuildingName varchar(100)
BuildingAddress varchar(500)
笔记 :
“公寓”表链接回带有BuildingID列的Buildings。
如果公司希望允许一个人租用不止一个公寓,则设计者可能希望实现如下的多对多关系。
TenantApartment's ""
TenantID I int
ApartmentID I int
ApartmentID int
ApartmentAddress varchar(500)
BuildingID int
TenantID int
TenantName varchar(100)
TenantAddress varchar(500)
TenantApartments表存储了Tenant和Apartments之间的关系。
4.调查行动:
最后,设计已准备就绪,可以将详细信息填充到数据库中。演练将要采取的常见操作,并了解如何存储和检索相关数据。设计最终结构需要处理租赁条款,搬迁,租金支付等。这些操作中的每一个都需要新的表格和列。