Questions tagged «database-design»

有关在数据库中构造数据的问题。如何布置表格,是否使用关系数据库,等等。

8
是否有非CRUD方法的示例?
我是一名程序员,但也曾担任过档案管理员。作为档案管理员,保存数据非常重要。 在数据操作方面,我经常与同事争论。我不太喜欢CRUD中的U和D。宁愿更新一条记录,我也喜欢添加一条新记录并引用旧记录。这样,您就可以建立变更历史。我也不喜欢删除记录,而是将它们标记为无效。 有这个用语吗?基本上只创建和读取数据?有这种方法的例子吗?

8
重复性日历任务应如何存储在数据库中?
这是一个用于微管理的小型个人项目。基本上,我将任务存储在如下所示的SQLite3数据库中: id INTEGER PRIMARY KEY AUTOINCREMENT label TEXT deadline INTEGER 因此,每个任务都有一个截止日期(截止日期),该截止日期存储为Unix时间戳。到目前为止,到目前为止,我可以进行诸如“明天:访问祖母”之类的条目,并以“ visit grandma”为标签创建新行,明天将转换为Unix截止日期。 现在,我想输入新的任务类型:例程-按时间模式重复的任务,例如“每天:清洁厨房”。如何存储或建模此类任务? 目前,我认为,对于需要每天执行的任务,要在表中生成具有相同标签的新行,并且截止日期字段将增加一天。在这种情况下,我需要在将来确定一个限制。例如,如果我每天创建一个例程,那么它将为剩余年份的每一天创建一个新行。 有没有更简单的方法可以做到这一点?我是否缺少一些明显的数据库设计原则?


6
数据库程序员做什么?
每当我读到有关Oracle程序员的文章时,我都会感到困惑。我不知道他们到底在做什么。 据我了解,应用程序程序员需要开发核心功能。他们使用的库可能有助于GUI开发或数据库连接,但是使该应用程序必须对该应用程序进行编程的功能,以及使每个应用程序都不同的功能(有些可能是其他版本的调整版本)。 在这种关系中,数据库编程不是从根本上创建表吗?这些表是否不响应通常由前端应用程序发出的SQL语句进行处理?那么创建表有什么大不了的?

10
您如何进行数据库设计?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我主要是一名Web开发人员,并且我要启动几个个人项目。 让我烦恼的一件事是数据库设计。我已经完成了学校的db规范化和类似工作,但是已经有两年了,除了学校,我从未有过关系数据库设计的经验。 那么,您如何从Web应用程序的角度来处理数据库呢?您如何开始?寻找什么?什么是警告标志?

2
带有额外列的单个表与具有重复模式的多个表
我正在一个项目上,在某个时候,我需要决定是否要在数据库中的单个表中包含不是每个记录都使用的多列,或者是多个表具有重复的模式。 我正在创建一个体育信息应用程序,它可以处理多种体育运动。例如,我们可以处理NBA,NHL,MLB,NFL。每种运动都有非常相似的概念-球队,日程表,伤害,球员信息。 当然,我们的数据源并不能为我们提供同一模式中的每条数据。每个运动都有一个不同的架构,我们从供应商那里接收数据。 因为没有足够的时间(客户需求)对数据源进行前期分析以确定共同点,所以我对冲了自己的赌注并进行了“安全下注”,为每种运动制作了单独的表格,而不是一组单独的表格体育使用。 结果是在多个表中复制了架构,因此也复制了数据库的接口(例如存储的proc)。我有一些类似NBA_Game,NFL_Game,NBA_Team,NFL_Team等的东西。每个表可能有一些其他人没有的属性,并且有几个是共享的。在4项或5项运动中,连续进行5-10桌。我仍然不确定这是否完全是一件坏事-另一种选择是,拥有一组表,表上具有并非所有运动项目都会使用的属性,它本身也可能很笨拙。 有谁做过这种设计的陷阱,可以在这里分享他们的经验吗?也许可以帮助我现在知道的事情,而不是刻苦学习的东西?您是否以另一种方式完成了工作,即拥有一个大表/一组表,并且使用了并非每条记录都会使用的列?您遇到了什么陷阱? 过去是否使用过一些替代方法,例如表继承,效果更好? 谢谢

1
数据模型在所谓的“ NoSQL”数据库中对可伸缩性和性能有多大影响?
如果不带CAP定理(一致性,可用性,分区:选择两个),就永远无法谈论所谓的“ NoSQL”数据库。如果您不得不说,在MongoDB(分区,一致性)和CouchDB(可用性,分区)之间,首先需要考虑的是“我需要正确的数据还是需要一直访问?”。 这些新的数据库中取得进行分区。但是,如果我不这样做怎么办?如果我只是想拥有一个键/值,列,文档,任何数据库而不是一个关系数据库,并且只创建一个服务器实例而不进行分片,那该怎么办呢?在那种情况下,我既没有可用性又没有一致性吗?MongoDB不需要复制任何内容,因此可以使用。而且CouchDB将只有一个数据源,因此它将非常一致。 因此,那意味着在那种情况下,MongoDB和CouchDB在用例方面几乎没有区别?好吧,当然除了性能,API和其他功能外,但这更像是在PostgreSQL和MySQL之间进行选择,而不是拥有两个根本不同的要求。 我在这里吗?是否可以通过不创建多个实例将AP或CP数据库更改为AC数据库?还是我缺少什么? 我们反过来问这个问题。如果我使用一个关系数据库,比如说MySQL,并将其置于主/从配置中,该怎么办?我不使用ACID事务如果我要求立即将所有写入同步到从属服务器,那岂不是使其成为CP数据库吗?而且,如果我将其同步了一些预定义的时间间隔,并且客户端是否从从属设备读取过时的数据也没关系。那不是将它变成AP数据库吗?这是否意味着如果我放弃ACID合规性,仍然可以对部分数据库使用关系模型? 本质上:在CAP定理中,您准备放弃的可扩展性要比基础数据模型还重要吗?具有列,文档,键值等内容是否可以增强关系模型的可伸缩性?我们可以设计一个完全为分区容忍度设计的关系数据库吗?(也许它已经存在)。我们可以使NoSQL数据库ACID兼容吗? 抱歉,它有很多问题,但是最近我阅读了很多有关NoSQL数据库的信息,在我看来,使用它们的最大好处是,它们更适合数据的“形状”,而不仅仅是分区CAP并放弃了ACID合规性。毕竟,并不是每个人都有太多数据需要分区。在我甚至考虑对数据进行分区之前,不使用关系模型是否会对性能/可伸缩性有所帮助?

4
这些特定的表是否需要代理键?
背景 我有这张桌子 +-------------------------+ +------------------------+ |Airport | |Country | |-------------------------| |------------------------| |airport_code string (PK) | |country_code string (PK)| |address string | |name string | |name string | +------------------------+ +-------------------------+ +-------------------------+ |Currency | |-------------------------| |currency_code string (PK)| |name string | +-------------------------+ airport_code是IATA(国际航空运输协会)的 机场代码,乘飞机旅行时,您可以在行李标签中看到它们。 country_code是ISO 3166-1 A3标准国家/地区代码,您可以在奥运会上查看它们。 currency_code是IS0 417标准的3个字符的货币代码,您可以在国际货币兑换显示板上看到它们。 问题 这些自然PK是否足够好? 是否使用世界公认的标准,而整个行业都接受了PK的标准? 这张桌子是否需要代孕品?

6
在数据库表中具有“记录状态”列是一种不好的做法吗?
我首先要澄清一下,“状态”列并不是要反映表中记录(行)所代表的真实项目的状态。相反,它旨在显示记录本身的状态。 它可以像活动/不活动一样简单,也可以像批准/删除/锁定/未决/拒绝等复杂。状态可以存储在布尔/短整数列或单字符列中,并带有true/ 1=活动或A=已批准。 基本思想是在应用程序中具有回收站/类似垃圾桶的恢复支持(并在数据库中进行模拟)。如果有一个前端GUI或其他界面可以让用户“删除”记录,则它实际上不会删除表中的记录,而只是将记录状态更改为“不活动”或“已删除”。当接口获取记录时,它总是获取仅与状态为“活动”或“已批准”的条件匹配的记录。 如果用户犯了一个错误并且需要恢复“删除的”记录(从用户的角度来看),DBA可以轻松地将记录重新打回“活动”或“已批准”状态,这比搜索备份并希望找到原始记录要好。那里。或者界面本身可以让用户在单独的视图中查看已删除的记录,并根据需要还原它们,甚至永久删除它们(删除实际记录)。 我的问题: 这是好习惯还是坏习惯? 它会影响数据的规范化吗? 潜在的陷阱是什么? 有没有其他方法可以达到相同的目标?(看注释) 您如何让数据库仅对特定状态强制对数据执行唯一约束(但对其他状态允许任意数量的重复项)? 为什么数据库不提供原生的类似“回收站”的功能或表跟踪/恢复功能,所以我们可以让接口不用担心而删除实际记录? 注意:我读过有关维护单独的历史记录表的信息,但是在存储和必须生成触发器并使触发器与跟踪表的架构保持最新方面而言,这似乎更糟。

4
如何在关系数据库中表示枚举类型?
我正在开发一个关系数据库,该数据库跟踪我正在为公司工作的设备上发生的交易。设备上可能发生不同类型的事务,因此我们的一个主记录表中有一个“ trans_type”字段。我的小组决定将该字段的类型设置为整数,并将其视为枚举类型。我的直觉告诉我,将这个字段设置为字符串是一个更好的主意,以便我们的数据库数据更具可读性和可用性。我的同事们似乎担心这会造成更多的麻烦,而不是值得的。字符串比较的成本太高,而且错别字的可能性太大。 因此,您认为,当处理关系数据库中的字段本质上是枚举值时,将该字段设为整数或字符串是否是更好的设计决策?还是我忽略了其他选择? 注意:我们使用的数据库不支持显式枚举类型。我们正在开发的将与此数据库连接的软件是用C ++编写的。

4
在对数据库建模时,何时应使用弱实体?
这基本上是一个关于弱实体是什么的问题?我们什么时候应该使用它们?应该如何建模? 普通实体和弱实体之间的主要区别是什么?在进行域驱动设计时,弱实体是否对应于值对象? 为了使问题始终保持话题,这里是一个来自维基百科的示例,人们可以用来回答以下问题: 在此示例中OrderItem,我们将其建模为弱实体,但我不明白为什么不能将其建模为普通实体。 另一个问题是,如果我想跟踪订单历史记录(即订单状态的变化),那将是正常实体还是弱实体?

12
使用XML作为数据存储[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我在考虑XML格式和以下引号: “ XML不是数据库。它从来都不是一个数据库。它永远不会成为数据库。关系数据库是经过验证的技术,具有20多年的实施经验。它们是坚固,稳定,有用的产品。他们不会消失。XML是在不同数据库之间或数据库与其他程序之间移动数据的非常有用的技术。但是,它本身不是数据库。“不要像以前一样使用它。”- Elliotte Rusty Harold着,有效的XML:50种改进XML的特定方法(第230页,第4部分,第41项,第二段) 这似乎确实强调了XML不应该用于数据存储,而应该仅用于程序之间的互操作性。 我个人不同意,app.config用于存储程序设置的.NET 文件是XML文件中数据存储的一个示例。但是,对于数据库而不是配置等,不应使用XML。 为了 阐明我的观点,我将使用两个示例:A)有关客户的数据全部都在一个级别上,即,有许多字段都与一位没有子 级的客户有关B)有关应用程序配置的数据,其中嵌套字段和属性很有意义 所以我的问题是,这仍然是有效的语句吗?现在可以接受使用XML存储数据了吗? 编辑:我已经给该报价的作者发送了一封电子邮件,要求他提供输入/其他上下文。

4
自定义字段和数据类型的设计模式/策略
是否有用于设计应用程序的通用策略或设计模式,这些应用程序具有向数据对象添加自定义字段或创建对象的自定义定义的能力。例如,我正在考虑使用诸如SalesForce之类的产品,您可以在其中拥有自己的信息类型,诸如Expression Engine之类的框架以及其处理渠道和渠道字段组的方式(示例),或者像wordpress一样的CMS如何具有以下功能:将字段添加到自定义帖子类型。


5
项目开始时的敏捷方法和数据库
敏捷的新手,我不确定如何开始。这个想法是在sprint中创建项目的一小部分。但是,我正在处理的项目需要一个数据库,并且该数据库必须具有几乎可以正常运行的功能才能对该项目执行任何操作。 那么,敏捷项目如何处理这个问题,首先要创建数据库吗? 您将如何操作,例如,如果使用Scrum,您将如何处理用户故事并测试数据库。 您是否愿意在还需要代码的故事中做数据库的一部分。 假设您有一个故事“作为用户,您必须能够注册...”,您是否会在数据库中创建user表作为该故事的一部分? 敏捷如何帮助您设计数据库?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.