Database 数据库模式命名约定和常见错误?

Database 数据库模式命名约定和常见错误?,database,database-design,relational-database,database-schema,Database,Database Design,Relational Database,Database Schema,(): 我被要求设计一个关系数据库来保存数据,以回答临床操作查询,例如: ● 列出给定日期每位医生的患者预约 ● 当患者打电话预约时,给出给定日期的可用时间段 ● 检索患者的地址以通过邮件服务发送通知 我有一个关系的数据库模式,如下所示,但我想知道我是否犯过任何错误 ABC(文件名、文件性别、注册号、资格、专利名称、专利性别、DOB、地址、电话号码、任命日期、任命时间、类型) 是否通常不鼓励使用诸如日期和连字符之类的词语?我的设计还有其他缺点吗 谢谢所以,这不是一个模式或设计。不适用于关系数据库

():

我被要求设计一个关系数据库来保存数据,以回答临床操作查询,例如:

● 列出给定日期每位医生的患者预约

● 当患者打电话预约时,给出给定日期的可用时间段

● 检索患者的地址以通过邮件服务发送通知

我有一个关系的数据库模式,如下所示,但我想知道我是否犯过任何错误

ABC(文件名、文件性别、注册号、资格、专利名称、专利性别、DOB、地址、电话号码、任命日期、任命时间、类型)

是否通常不鼓励使用诸如日期和连字符之类的词语?我的设计还有其他缺点吗


谢谢

所以,这不是一个模式或设计。不适用于关系数据库,它基于问题的标记,是您所寻找的。这是数据库ID/值样式的存储定义。如果您正在寻找实际的关系存储,那么应该通过规范化过程来构建这些关系

例如,让我们从doc name开始(我个人并不热衷于使用连字符,但它不是一个showtupper,所以至少在这一点上,请确保您使用的任何RDBMS都在名称中支持它们,然后就可以开始了)。如果我们仅仅从数据输入的角度考虑这个问题,我们不希望每次使用医生时都必须输入医生的名字。相反,我们想从列表中提取。因此,很明显,我们可以将其与其他信息分开。我们的正常化进程已经开始。我们还可以很容易地注意到一个事实,即患者可能有多个预约。在目前的结构下,我们必须在预约前重新输入患者的每一点信息。还有一个地方我们可以把它拆开

这个简单的例子还有很多可以拆分和规范化的地方

我建议你仔细阅读一下数据规范化。这方面我最喜欢的老师是路易斯·戴维森。读一读,然后试着重新审视你所面临的情况


我想这不仅仅是家庭作业。如果是,目前,我会给你一个“F”。如果不是,您应该找到一个人来帮助您进行此数据库设计。你不可能在任何合理的时间内快速阅读路易斯关于这一主题的书,甚至扭转一个粗糙的工作设计。

我必须支持格兰特所说的,这根本不是一个关系设计。 停下来问问自己,例如,如果史蒂文·阿罗不得不请一个下午的假并更新他的日程安排,会发生什么。你需要非常小心地更新数据库,以免重新分配他的所有患者

在这方面总共花了5分钟,我至少看到: 一张医生表,一张病人表,可能还有一张开放预约时间表(顺便说一句,这比你想象的要难一些,所以你必须考虑如何处理这一点,并在表格上阅读一些安排)

这是一开始。我可能会把病人的电话号码放到自己的桌子上。为什么?那么,您希望电话号码有多少栏?1.如果他们有工作和家庭号码怎么办?还是工作、牢房和家?还有更多


你要找的概念是正规形式。你不必过火,但通常3NF是正确的。

Grant将在下面详细介绍,但你所发布的内容与你没有任何关系。为了有一个“关系”,你必须至少有两个表。@Brian表是一个关系,是业务关系/关联的一种表示形式,如“关系模型”和“E-R模型”。FK经常被错误地称为“关系”&有时被不理解关系模型的表示/方法/工具更错误地称为“关系”。但是他们不是。是时候读一本关于信息建模、关系模型和数据库设计的书了。请阅读并点击谷歌的“stackexchange家庭作业”。说出你应该做什么,参考/引用你的课本,然后展示你的作品,或者你只是要求我们重写并应用它。请。仅为方便补充文本和/或为文本中无法给出的内容使用图像。使用编辑函数内联,而不是链接,如果你有代表-使你的文章自我包含。不要给出没有图例/键的图表。@philipxy这是一个公平的观点。谢谢。这样会更好吗?DOC(姓名、性别、注册号、资格)PAT(姓名、性别、DOB、地址、电话号)指定(日期、时间、类型)给定的DDL是一种关系设计,它可以保存给定插图可以给出的关系/表值。(忽略列名差异。)当然,这不是一个“好”的设计。但这是另一个问题。